Как указать параметры в запросе KQL? - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь выполнить запрос KQL для кластера Azure Data Explorer, используя параметры запроса и .NET Kusto SDK.

Я попытался поместить параметры в фигурные скобки {} и без фигурных скобок.

Я прочитал документацию о передаче параметров в запрос, но не могу найти примеров того, как должен выглядеть запрос при передаче в Azure Data Explorer через .NET SDK.

Мой запрос работаетв инструменте Kusto.Explorer, когда я устанавливаю параметры в инструменте, но мне не повезло при использовании SDK.

var queryParameters = new Dictionary<string, string>()
            {
                { "myscope", "scope001" },
                { "startdate", "2019-01-01" },
                { "enddate", "2019-01-30" },
                { "author", "Bob Jammo" }
            };

var query = @"declare query_parameters (myscope:string, startdate:string, enddate:string, author:string);
                            Events 
                            | where Scope == ""{myscope}"" 
                                and EventTime between (datetime({startdate}) .. datetime({enddate}))
                                and EventType == ""product""
                                and User.Email <> """"
                            | mv-expand Payload.products
                            | where Payload_products.authors contains ""{author}""
                            | distinct DeviceId
                            | count";

using (var client = KustoClientFactory.CreateCslQueryProvider(ConfigurationManager.AppSettings["AdxConnectionString"]))
{
    var clientRequestProperties = new Kusto.Data.Common.ClientRequestProperties(
        options: null,
        parameters: queryParameters);

    clientRequestProperties.ClientRequestId = StepsBase.ScenarioScope;

    using (var reader = client.ExecuteQuery(query, clientRequestProperties))
    {
        reader.Read();
        return Convert.ToInt32(reader[0]);
    }
}

Я получаю ошибку, которая указывает мне, что значение параметра не былоset: "Синтаксическая ошибка: не удалось проанализировать запрос: не удалось проанализировать литерал datetime: 'datetime (startdate)'"

1 Ответ

0 голосов
/ 29 мая 2019

Судя по сообщению об ошибке, это потому, что вы используете datetime({startdate}) вместо todatetime({startdate}).

В любом случае, вы можете также рассмотреть возможность изменения типа startdate и enddate на datetime вместо string для начала (и скорректировать их определение в словаре .NET)

...