首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JupyterLab中的参数化和循环KQL查询

JupyterLab中的参数化和循环KQL查询
EN

Stack Overflow用户
提问于 2021-02-05 08:42:11
回答 1查看 168关注 0票数 0

我的问题是如何在Jupyter实验室的KQL魔术命令中分配循环中的变量。我参考了微软关于这个主题的文档,并将我的问题基于这里给出的代码:https://docs.microsoft.com/en-us/azure/data-explorer/kqlmagic

1.下面的第一个查询

代码语言:javascript
复制
%%kql  
StormEvents  
| summarize max(DamageProperty) by State  
| order by max_DamageProperty desc  
| limit 10  

2.第二:将结果查询转换为dataframe,并将变量分配给'statefilter‘

代码语言:javascript
复制
df = _kql_raw_result_.to_dataframe()  
statefilter =df.loc[0].State  
statefilter  

3.这就是我想要修改上述查询的地方,让statefilter具有多个变量(即由不同的状态组成):

代码语言:javascript
复制
df = _kql_raw_result_.to_dataframe()  
statefilter =df.loc[0:3].State  
statefilter

4.最后,我想对statefilter中的每个变量在for循环中运行我的kql查询。下面的语法可能不正确,但它可以为我正在寻找的东西提供一个示例:

代码语言:javascript
复制
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…

EN

回答 1

Stack Overflow用户

发布于 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中调用它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66056001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档