0

我正在尝试创建一个查询 adx 数据库的 Azure 函数。

在我的函数中,我有一个对象,我想将它作为参数传递给 adx 中的存储函数。

在函数中,我在代码中使用它,但出现错误并且SetParameter只接受一个字符串。

queryGetTransaction = "declare query_parameters(ID:dynamic); GetTransaction(ID)";

ClientRequestProperties如果“ID”是对象,我设置该动态参数:

ClientRequestProperties clientRequestProperties = new ClientRequestProperties();
clientRequestProperties.SetParameter("identifiervalue", ID)

我收到此错误:

文本=声明查询参数(ID:动态);GetTransaction(ID)
SemanticErrors='ID' 无效的查询参数类型(预期为'动态)

如果我没有正确执行此操作,我可以将一个对象传递给存储的函数并将其用于 where 的参数吗?

  private static readonly string queryGetIDs = "declare query_parameters(idvalue:dynamic); GetIds(idvalue)";

   public async Task<List<ID>> GetIDs(ID ids)
    {
        IDataReader reader = null;
       
        var serviceUri = URL To ADX ;
        var kustoConnectionStringBuilder = new KustoConnectionStringBuilder(serviceUri).WithAadSystemManagedIdentity();

        var client = KustoClientFactory.CreateCslQueryProvider(kustoConnectionStringBuilder);

        ClientRequestProperties clientRequestProperties = new ClientRequestProperties();
        clientRequestProperties.SetParameter("idvalue", ids);

        reader = await client.ExecuteQueryAsync("TableName", queryGetIDs, clientRequestProperties);
}
4

1 回答 1

0

我得到了这个工作

string str = JsonConvert.SerializeObject(ids);

ClientRequestProperties clientRequestProperties = new ClientRequestProperties();
 clientRequestProperties.SetParameter("value", str);

声明 query_parameters 不必匹配 ADX 中实际存储的函数。我最终将 declare query_parameters 设置为字符串,并且存储的函数是动态的。这解决了这个问题。

于 2022-01-31T21:11:45.260 回答