我的问题是如何在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.第二:将结果查询转换为dataframe,并将变量分配给'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
statefilter4.最后,我想对statefilter中的每个变量在for循环中运行我的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查询/分析,并将每个站点的查询结果分配给一个dataframe。请让我知道,如果这是可能的,或者也许有其他合乎逻辑的方式来做这在KQL…
发布于 2021-02-08 02:07:55
有几种方法可以做到这一点。
最简单的是将你的%%kql细胞魔法折射成%kql线魔法。线魔法可以嵌入到python cell中。
另一种选择是:从Kqlmagic导入kql kql方法,将kql单元格或行作为字符串接受。您可以从python中调用kql。
第三种方法是通过ipython方法调用kql魔术: ip.run_cell_magic(' kql ',{您的kql魔术单元文本})您可以从python中调用它。
https://stackoverflow.com/questions/66056001
复制相似问题