Command line execution and more readable logic for _executionMode
This commit is contained in:
parent
a8196b30ad
commit
65bc278f66
@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Microsoft.AnalysisServices.Tabular;
|
using Microsoft.AnalysisServices.Tabular;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace AsPartitionProcessing.SampleClient
|
namespace AsPartitionProcessing.SampleClient
|
||||||
{
|
{
|
||||||
@ -16,44 +16,75 @@ namespace AsPartitionProcessing.SampleClient
|
|||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
//Set sample execution mode here:
|
//Set sample execution mode here:
|
||||||
const SampleExecutionMode ExecutionMode = SampleExecutionMode.InitializeInline;
|
private static SampleExecutionMode _executionMode = SampleExecutionMode.InitializeInline;
|
||||||
|
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
List<ModelConfiguration> modelsConfig;
|
#region Set execution mode from command-line argument if specified.
|
||||||
if (ExecutionMode == SampleExecutionMode.InitializeInline)
|
|
||||||
|
if (args.Length == 1)
|
||||||
{
|
{
|
||||||
modelsConfig = InitializeInline();
|
switch (args[0])
|
||||||
|
{
|
||||||
|
case "InitializeInline":
|
||||||
|
_executionMode = SampleExecutionMode.InitializeInline;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "InitializeFromDatabase":
|
||||||
|
_executionMode = SampleExecutionMode.InitializeFromDatabase;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "MergePartitions":
|
||||||
|
_executionMode = SampleExecutionMode.MergePartitions;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "DefragPartitionedTables":
|
||||||
|
_executionMode = SampleExecutionMode.DefragPartitionedTables;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new InvalidOperationException($"Command-line argument {args[0]} not recognized.");
|
||||||
|
//break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
if (_executionMode == SampleExecutionMode.InitializeInline)
|
||||||
|
{
|
||||||
|
//Perform Processing
|
||||||
|
PartitionProcessor.PerformProcessing(InitializeInline(), LogMessage);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
modelsConfig = InitializeFromDatabase();
|
List<ModelConfiguration> modelsConfig = InitializeFromDatabase();
|
||||||
}
|
|
||||||
|
|
||||||
foreach (ModelConfiguration modelConfig in modelsConfig)
|
foreach (ModelConfiguration modelConfig in modelsConfig)
|
||||||
{
|
|
||||||
if (!modelConfig.IntegratedAuth) //For Azure AS
|
|
||||||
{
|
{
|
||||||
Console.WriteLine();
|
SetCredentials(modelConfig); //For Azure AS
|
||||||
Console.Write("User name for AS server: ");
|
|
||||||
modelConfig.UserName = Console.ReadLine();
|
|
||||||
Console.Write("Password for AS server: ");
|
|
||||||
modelConfig.Password = ReadPassword();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ExecutionMode == SampleExecutionMode.MergePartitions)
|
switch (_executionMode)
|
||||||
{
|
{
|
||||||
PartitionProcessor.MergePartitions(modelConfig, LogMessage, "Internet Sales", Granularity.Yearly, "2012");
|
case SampleExecutionMode.InitializeFromDatabase:
|
||||||
}
|
//Perform Processing
|
||||||
else if (ExecutionMode == SampleExecutionMode.DefragPartitionedTables)
|
PartitionProcessor.PerformProcessing(modelConfig, LogMessage);
|
||||||
{
|
break;
|
||||||
PartitionProcessor.DefragPartitionedTables(modelConfig, LogMessage);
|
|
||||||
}
|
case SampleExecutionMode.MergePartitions:
|
||||||
else
|
//Perform Merging
|
||||||
{
|
PartitionProcessor.MergePartitions(modelConfig, LogMessage, "Internet Sales", Granularity.Yearly, "2012");
|
||||||
PartitionProcessor.PerformProcessing(modelConfig, LogMessage);
|
break;
|
||||||
|
|
||||||
|
case SampleExecutionMode.DefragPartitionedTables:
|
||||||
|
//Perform Defrag
|
||||||
|
PartitionProcessor.DefragPartitionedTables(modelConfig, LogMessage);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -65,12 +96,15 @@ namespace AsPartitionProcessing.SampleClient
|
|||||||
Console.WriteLine();
|
Console.WriteLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
if (Debugger.IsAttached)
|
||||||
Console.WriteLine("Press any key to exit.");
|
{
|
||||||
Console.ReadKey();
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
|
Console.WriteLine("Press any key to exit.");
|
||||||
|
Console.ReadKey();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<ModelConfiguration> InitializeInline()
|
private static ModelConfiguration InitializeInline()
|
||||||
{
|
{
|
||||||
ModelConfiguration partitionedModel = new ModelConfiguration(
|
ModelConfiguration partitionedModel = new ModelConfiguration(
|
||||||
modelConfigurationID: 1,
|
modelConfigurationID: 1,
|
||||||
@ -135,7 +169,7 @@ namespace AsPartitionProcessing.SampleClient
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
return new List<ModelConfiguration> { partitionedModel };
|
return partitionedModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<ModelConfiguration> InitializeFromDatabase()
|
private static List<ModelConfiguration> InitializeFromDatabase()
|
||||||
@ -163,7 +197,7 @@ namespace AsPartitionProcessing.SampleClient
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!(ExecutionMode == SampleExecutionMode.InitializeInline))
|
if (!(_executionMode == SampleExecutionMode.InitializeInline))
|
||||||
{
|
{
|
||||||
ConfigDatabaseHelper.LogMessage(message, partitionedModel);
|
ConfigDatabaseHelper.LogMessage(message, partitionedModel);
|
||||||
}
|
}
|
||||||
@ -182,7 +216,19 @@ namespace AsPartitionProcessing.SampleClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ReadPassword()
|
private static void SetCredentials(ModelConfiguration modelConfig)
|
||||||
|
{
|
||||||
|
if (!modelConfig.IntegratedAuth) //For Azure AS
|
||||||
|
{
|
||||||
|
Console.WriteLine();
|
||||||
|
Console.Write("User name for AS server: ");
|
||||||
|
modelConfig.UserName = Console.ReadLine();
|
||||||
|
Console.Write("Password for AS server: ");
|
||||||
|
modelConfig.Password = ReadPassword();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string ReadPassword()
|
||||||
{
|
{
|
||||||
string password = "";
|
string password = "";
|
||||||
ConsoleKeyInfo info = Console.ReadKey(true);
|
ConsoleKeyInfo info = Console.ReadKey(true);
|
||||||
|
@ -579,13 +579,13 @@ namespace AsPartitionProcessing
|
|||||||
switch (partitioningConfiguration.Granularity)
|
switch (partitioningConfiguration.Granularity)
|
||||||
{
|
{
|
||||||
case Granularity.Daily:
|
case Granularity.Daily:
|
||||||
selectQueryTemplate = "SELECT * FROM {0} WHERE {1} = {2} ORDER BY {1}";
|
selectQueryTemplate = "SELECT * FROM {0} WHERE CAST(CONVERT(varchar, {1}, 112) AS int) = {2} ORDER BY {1}";
|
||||||
break;
|
break;
|
||||||
case Granularity.Monthly:
|
case Granularity.Monthly:
|
||||||
selectQueryTemplate = "SELECT * FROM {0} WHERE FLOOR({1} / 100) = {2} ORDER BY {1}";
|
selectQueryTemplate = "SELECT * FROM {0} WHERE FLOOR(CAST(CONVERT(varchar, {1}, 112) AS int) / 100) = {2} ORDER BY {1}";
|
||||||
break;
|
break;
|
||||||
default: //Granularity.Yearly:
|
default: //Granularity.Yearly:
|
||||||
selectQueryTemplate = "SELECT * FROM {0} WHERE FLOOR({1} / 10000) = {2} ORDER BY {1}";
|
selectQueryTemplate = "SELECT * FROM {0} WHERE FLOOR(CAST(CONVERT(varchar, {1}, 112) AS int) / 10000) = {2} ORDER BY {1}";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Partition newPartition;
|
Partition newPartition;
|
||||||
|
Loading…
Reference in New Issue
Block a user