diff --git a/AsPartitionProcessing/AsPartitionProcessing.SampleClient/ArgumentOptions.cs b/AsPartitionProcessing/AsPartitionProcessing.SampleClient/ArgumentOptions.cs index cff15b7..8718998 100644 --- a/AsPartitionProcessing/AsPartitionProcessing.SampleClient/ArgumentOptions.cs +++ b/AsPartitionProcessing/AsPartitionProcessing.SampleClient/ArgumentOptions.cs @@ -18,6 +18,9 @@ namespace AsPartitionProcessing.SampleClient [Option('k', "MergePartitionKey", HelpText = "When ExecutionMode=MergePartitions, target partition key. If year, follow yyyy; if month follow yyyymm.")] public string MergePartitionKey { get; set; } + [Option('i', "ModelConfigurationIDs", HelpText = "When connect to config database, only process models with ModelConfigurationID in a comma-delimited list.")] + public string ModelConfigurationIDs { get; set; } + [ParserState] public IParserState LastParserState { get; set; } diff --git a/AsPartitionProcessing/AsPartitionProcessing.SampleClient/Program.cs b/AsPartitionProcessing/AsPartitionProcessing.SampleClient/Program.cs index e387788..18be712 100644 --- a/AsPartitionProcessing/AsPartitionProcessing.SampleClient/Program.cs +++ b/AsPartitionProcessing/AsPartitionProcessing.SampleClient/Program.cs @@ -38,7 +38,8 @@ namespace AsPartitionProcessing.SampleClient class Program { //Set sample execution mode here: - private static ExecutionMode _executionMode = ExecutionMode.InitializeInline; + private static ExecutionMode _executionMode = ExecutionMode.InitializeFromDatabase; + private static string _modelConfigurationIDs; static int Main(string[] args) { @@ -214,7 +215,7 @@ namespace AsPartitionProcessing.SampleClient connectionInfo.Password = ReadPassword(); } - return ConfigDatabaseHelper.ReadConfig(connectionInfo); + return ConfigDatabaseHelper.ReadConfig(connectionInfo, _modelConfigurationIDs); } private static void ParseArgs(string[] args, ref string mergeTable, ref Granularity mergeTargetGranuarity, ref string mergePartitionKey, out bool help) @@ -225,6 +226,12 @@ namespace AsPartitionProcessing.SampleClient ArgumentOptions options = new ArgumentOptions(); if (CommandLine.Parser.Default.ParseArguments(args, options)) { + if (!String.IsNullOrEmpty(options.ModelConfigurationIDs)) + { + Console.WriteLine($"ModelConfigurationIDs: {options.ModelConfigurationIDs}"); + _modelConfigurationIDs = options.ModelConfigurationIDs; + } + Console.WriteLine($"Argument ExecutionMode: {options.ExecutionMode}"); switch (options.ExecutionMode) { diff --git a/AsPartitionProcessing/AsPartitionProcessing/ConfigDatabaseHelper.cs b/AsPartitionProcessing/AsPartitionProcessing/ConfigDatabaseHelper.cs index 995d71a..fe94104 100644 --- a/AsPartitionProcessing/AsPartitionProcessing/ConfigDatabaseHelper.cs +++ b/AsPartitionProcessing/AsPartitionProcessing/ConfigDatabaseHelper.cs @@ -14,17 +14,11 @@ namespace AsPartitionProcessing /// Read configuration information from the database. /// /// Information required to connect to the configuration and logging database. + /// Comma delimited list of ModelConfigurationIDs to filter on when getting worklist from workspace database. /// Collection of partitioned models with configuration information. - public static List ReadConfig(ConfigDatabaseConnectionInfo connectionInfo) + public static List ReadConfig(ConfigDatabaseConnectionInfo connectionInfo, string modelConfigurationIDs) { - using (SqlConnection connection = new SqlConnection(GetConnectionString(connectionInfo))) - { - connection.Open(); - using (SqlCommand command = new SqlCommand()) - { - command.Connection = connection; - command.CommandType = CommandType.Text; - command.CommandText = @" + string commandText = String.Format(@" SELECT [ModelConfigurationID] ,[AnalysisServicesServer] ,[AnalysisServicesDatabase] @@ -43,13 +37,24 @@ namespace AsPartitionProcessing ,[MaxDateIsNow] ,[MaxDate] ,[IntegerDateKey] + ,[TemplateSourceQuery] FROM [dbo].[vPartitioningConfiguration] - WHERE [DoNotProcess] = 0 + WHERE [DoNotProcess] = 0 {0} ORDER BY [ModelConfigurationID], [TableConfigurationID], - [PartitioningConfigurationID];"; + [PartitioningConfigurationID];", + (String.IsNullOrEmpty(modelConfigurationIDs) ? "" : $" AND [ModelConfigurationID] IN ({modelConfigurationIDs}) ")); + + using (SqlConnection connection = new SqlConnection(GetConnectionString(connectionInfo))) + { + connection.Open(); + using (SqlCommand command = new SqlCommand()) + { + command.Connection = connection; + command.CommandType = CommandType.Text; + command.CommandText = commandText; List modelConfigs = new List(); ModelConfiguration modelConfig = null;