Command line args enhancement
This commit is contained in:
parent
96763cb87d
commit
e6a2b61643
@ -18,13 +18,17 @@ namespace AsPartitionProcessing.SampleClient
|
|||||||
//Set sample execution mode here:
|
//Set sample execution mode here:
|
||||||
private static SampleExecutionMode _executionMode = SampleExecutionMode.InitializeInline;
|
private static SampleExecutionMode _executionMode = SampleExecutionMode.InitializeInline;
|
||||||
|
|
||||||
static void Main(string[] args)
|
static int Main(string[] args)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
#region Set execution mode from command-line argument if specified.
|
#region Set defaults for merging & read command-line arguments if provided
|
||||||
|
|
||||||
if (args.Length == 1)
|
string mergeTable = "Internet Sales";
|
||||||
|
Granularity mergeTargetGranuarity = Granularity.Yearly;
|
||||||
|
string mergePartitionKey = "2012";
|
||||||
|
|
||||||
|
if (args.Length > 0)
|
||||||
{
|
{
|
||||||
switch (args[0])
|
switch (args[0])
|
||||||
{
|
{
|
||||||
@ -38,6 +42,13 @@ namespace AsPartitionProcessing.SampleClient
|
|||||||
|
|
||||||
case "MergePartitions":
|
case "MergePartitions":
|
||||||
_executionMode = SampleExecutionMode.MergePartitions;
|
_executionMode = SampleExecutionMode.MergePartitions;
|
||||||
|
if (!(args.Length == 4 && (args[2] == "Yearly" || args[2] == "Monthly")))
|
||||||
|
{
|
||||||
|
throw new ArgumentException($"MergePartitions additional arguments not provided or not recognized.");
|
||||||
|
}
|
||||||
|
mergeTable = args[1];
|
||||||
|
mergeTargetGranuarity = args[2] == "Yearly" ? Granularity.Yearly : Granularity.Monthly;
|
||||||
|
mergePartitionKey = args[3];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "DefragPartitionedTables":
|
case "DefragPartitionedTables":
|
||||||
@ -45,13 +56,14 @@ namespace AsPartitionProcessing.SampleClient
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new InvalidOperationException($"Command-line argument {args[0]} not recognized.");
|
throw new ArgumentException($"Command-line argument {args[0]} not recognized.");
|
||||||
//break;
|
//break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
if (_executionMode == SampleExecutionMode.InitializeInline)
|
if (_executionMode == SampleExecutionMode.InitializeInline)
|
||||||
{
|
{
|
||||||
//Perform Processing
|
//Perform Processing
|
||||||
@ -74,7 +86,7 @@ namespace AsPartitionProcessing.SampleClient
|
|||||||
|
|
||||||
case SampleExecutionMode.MergePartitions:
|
case SampleExecutionMode.MergePartitions:
|
||||||
//Perform Merging
|
//Perform Merging
|
||||||
PartitionProcessor.MergePartitions(modelConfig, LogMessage, "Internet Sales", Granularity.Yearly, "2012");
|
PartitionProcessor.MergePartitions(modelConfig, LogMessage, mergeTable, mergeTargetGranuarity, mergePartitionKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SampleExecutionMode.DefragPartitionedTables:
|
case SampleExecutionMode.DefragPartitionedTables:
|
||||||
@ -94,6 +106,16 @@ namespace AsPartitionProcessing.SampleClient
|
|||||||
Console.WriteLine();
|
Console.WriteLine();
|
||||||
Console.WriteLine(exc.Message, null);
|
Console.WriteLine(exc.Message, null);
|
||||||
Console.WriteLine();
|
Console.WriteLine();
|
||||||
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
|
|
||||||
|
if (exc is ArgumentException)
|
||||||
|
{
|
||||||
|
return 160; //ERROR_BAD_ARGUMENTS
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 1360; //ERROR_GENERIC_NOT_MAPPED
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Debugger.IsAttached)
|
if (Debugger.IsAttached)
|
||||||
@ -102,6 +124,8 @@ namespace AsPartitionProcessing.SampleClient
|
|||||||
Console.WriteLine("Press any key to exit.");
|
Console.WriteLine("Press any key to exit.");
|
||||||
Console.ReadKey();
|
Console.ReadKey();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0; //ERROR_SUCCESS
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ModelConfiguration InitializeInline()
|
private static ModelConfiguration InitializeInline()
|
||||||
@ -212,6 +236,7 @@ namespace AsPartitionProcessing.SampleClient
|
|||||||
Console.ForegroundColor = ConsoleColor.White;
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
Console.WriteLine("Press any key to exit.");
|
Console.WriteLine("Press any key to exit.");
|
||||||
Console.ReadKey();
|
Console.ReadKey();
|
||||||
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
Environment.Exit(0); //Avoid recursion if errored connecting to db
|
Environment.Exit(0); //Avoid recursion if errored connecting to db
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -212,6 +212,7 @@ namespace AsPartitionProcessing
|
|||||||
LogMessage($"Inner exception message: {exc.InnerException.Message}", false);
|
LogMessage($"Inner exception message: {exc.InnerException.Message}", false);
|
||||||
}
|
}
|
||||||
LogMessage("", false);
|
LogMessage("", false);
|
||||||
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@ -342,6 +343,8 @@ namespace AsPartitionProcessing
|
|||||||
{
|
{
|
||||||
LogMessage($"Inner exception message: {exc.InnerException.Message}", false);
|
LogMessage($"Inner exception message: {exc.InnerException.Message}", false);
|
||||||
}
|
}
|
||||||
|
LogMessage("", false);
|
||||||
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@ -415,6 +418,7 @@ namespace AsPartitionProcessing
|
|||||||
LogMessage($"Inner exception message: {exc.InnerException.Message}", false);
|
LogMessage($"Inner exception message: {exc.InnerException.Message}", false);
|
||||||
}
|
}
|
||||||
LogMessage("", false);
|
LogMessage("", false);
|
||||||
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@ -578,6 +582,10 @@ namespace AsPartitionProcessing
|
|||||||
string selectQueryTemplate;
|
string selectQueryTemplate;
|
||||||
switch (partitioningConfiguration.Granularity)
|
switch (partitioningConfiguration.Granularity)
|
||||||
{
|
{
|
||||||
|
//Format that might work on more data sources, but requires flag to indicate whether partitioning column is date or integer YYYYMMDD or not:
|
||||||
|
// SELECT YEAR(CURRENT_TIMESTAMP) * 10000 + MONTH(CURRENT_TIMESTAMP) * 100 + DAY(CURRENT_TIMESTAMP)
|
||||||
|
//ANSI standard to get month from date is EXTRACT(MONTH FROM @DateTimeVarUnclean), which doesn't work with SQL Server
|
||||||
|
|
||||||
case Granularity.Daily:
|
case Granularity.Daily:
|
||||||
selectQueryTemplate = "SELECT * FROM {0} WHERE CAST(CONVERT(varchar, {1}, 112) AS int) = {2} ORDER BY {1}";
|
selectQueryTemplate = "SELECT * FROM {0} WHERE CAST(CONVERT(varchar, {1}, 112) AS int) = {2} ORDER BY {1}";
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user