如何解决在 JupyterLab 中参数化和循环 KQL 查询 1.下面的第一个查询2.第二:将结果查询转换为数据帧并将变量分配给 'statefilter'3.这是我想修改上述查询的地方,让 statefilter 有多个变量即由不同的状态组成:4.最后,我想在 for 循环中为 statefilter 中的每个变量运行我的 kql 查询以下语法可能不正确,但它可以为我正在寻找的内容提供示例:
我的问题是如何在 Jupyter 实验室的 KQL 魔术命令的循环中分配变量。我参考了微软关于这个主题的文档,并将我的问题基于这里给出的代码: https://docs.microsoft.com/en-us/azure/data-explorer/kqlmagic
1.下面的第一个查询
%%kql
StormEvents
| summarize max(damageProperty) by State
| order by max_damageProperty desc
| limit 10
2.第二:将结果查询转换为数据帧并将变量分配给 'statefilter'
df = _kql_raw_result_.to_dataframe()
statefilter =df.loc[0].State
statefilter
3.这是我想修改上述查询的地方,让 statefilter 有多个变量(即由不同的状态组成):
df = _kql_raw_result_.to_dataframe()
statefilter =df.loc[0:3].State
statefilter
4.最后,我想在 for 循环中为 statefilter 中的每个变量运行我的 kql 查询。以下语法可能不正确,但它可以为我正在寻找的内容提供示例:
dfs = [] # an empty list to store dataframes
for state in statefilters:
%%kql
let _state = state;
StormEvents
| where State in (_state)
| do some operations here for that specific state
df = _kql_raw_result_.to_dataframe()
dfs.append(df) # store the df specific to state in the list
我没有在 KQL 查询中查询所有所需状态的原因是为了防止将非常大的查询结果分配给数据帧。这不是针对这个具有合理大小的示例 StormEvents
表,而是针对我的研究数据,它由许多站点组成并且非常大。因此,我希望能够在 for 循环中为每个站点运行 KQL 查询/分析,并将每个站点的查询结果分配给一个数据框。请让我知道这是否可行,或者在 KQL 中可能有其他合乎逻辑的方法来执行此操作...
解决方法
有几种方法可以做到这一点。
最简单的方法是将您的 %%kql 细胞魔法折射为 %kql 线魔法。 线条魔术可以嵌入python单元格中。
其他选项是: from Kqlmagic import kql Kqlmagic kql 方法,将 kql 单元格或行作为字符串接受。 你可以从python调用kql。
第三种方式是通过ipython方法调用kql魔法: ip.run_cell_magic('kql',{你的 kql 魔法单元文本}) 你可以从python调用它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。