python - 参数化 kusto 函数的异常输入
问题描述
我使用 azure-kusto-data 库 ( https://pypi.org/project/azure-kusto-data/ )从 Kusto 查询数据的 Python 应用程序
我正在尝试编写一个 kusto 函数来执行特定的函数。该函数有 2 个输入,一个数据表输入和一个时间跨度输入
举个例子:
函数名称:GenerateSomeOutputviaKusto 函数参数:(T:(Env:string,Something:string,StartDate:datetime),inputGranularity:timespan)
如您所见,此函数输入使用表格输入。现在为了正确调用此函数(例如 KustoExplorer),我使用“let”语句来创建此函数的表格输入,遵循此页面的指导:https ://docs.microsoft.com/ en-us/azure/data-explorer/kusto/query/letstatement
let QueryTable = datatable (Environment:string, Something:string, StartDate:datetime)
["Prod", "Sometext", datetime("2020-11-17")];
GenerateSomeOutputviaKusto(QueryTable, 24h);
现在的问题是,当我尝试参数化此函数以从 python 执行此函数时。当我在 python 中使用 kusto 库调用这个函数时,我需要参数化这个函数。
我将参数设置为 python 字典,如下所示:
params = {
"env": self._env,
"something": something,
"startdate": self._alert_start_date_str,
}
然后,我尝试从我的 python 代码中参数化 kusto 函数,如下所示:
declare query_parameters(env:string,
something:string,
starting_time:string);
let QueryTable = datatable (Environment:string, something:string, StartDate:datetime)
[env, something, datetime(startdate)];
GenerateSomeOutputViaKusto(QueryTable, 24h)
当我这样做时,我遇到了这个错误:
发生识别错误。[行:位置=5:17]。查询:'声明 query_parameters(env:string,\n
出于隐私原因,我已经替换了一些敏感字段。我的 Kusto 相关问题是,这甚至是做这种事情的正确方法吗?kusto 文档在参数化函数方面非常少,尤其是在像这样的极端情况下。参数化工作,不使用 let 语句,但结合使用“declare”语句和“let”语句似乎会导致问题。
解决方案
问题是您正在尝试将非常量标量值传递给datatable
运算符 - 无论是否使用查询参数,这都是不受支持的。
您可以将datatable
运算符的用法替换print
为 ,例如:
declare query_parameters(env:string, failure_signature:string, starting_time:datetime);
let QueryTable = print Environment = env, FailureSignature = failure_signature, StartDateTime = starting_time;
QueryTable
推荐阅读
- java - 为检查器框架设置环境变量
- c - 如何从 Eclipse CDT 生成独立的 makefile
- java - 为什么我无法在哈希表的链表数组中添加新条目?
- javascript - 带有 NestJS + Typescript + Webpack + node_modules 的单个文件包
- php - 为什么我的代码给出错误通知:未定义索引:subject02在线
- ios - 如何为 ios 应用程序创建简约地图
- ruby-on-rails - 如何修复 Rails 5.1.7 中的“未初始化常量“ActiveRecord_Relation”?
- big-o - 使用大 O 表示法分析伪代码的复杂性/运行时间
- python - Django / FactoryBoy - unable to generate instance for abstract models
- javascript - 如何在主窗口和模态框之间存储、显示和传递信息