Python 查询日志分析,以便返回所有表名的列表
我正在使用Python调用针对Azure日志分析工作区的查询。为了提供最大的可伸缩性,我想实现一个查询,返回日志分析工作区中的所有表名。本质上,我希望生成所有表名的列表,以便稍后在python脚本中调用它们 我试过几个不同的问题。例如:Python 查询日志分析,以便返回所有表名的列表,python,python-requests,adal,azure-log-analytics,azure-data-explorer,Python,Python Requests,Adal,Azure Log Analytics,Azure Data Explorer,我正在使用Python调用针对Azure日志分析工作区的查询。为了提供最大的可伸缩性,我想实现一个查询,返回日志分析工作区中的所有表名。本质上,我希望生成所有表名的列表,以便稍后在python脚本中调用它们 我试过几个不同的问题。例如: Search * | distinct $table 而不是获取表列表,例如: [ { "$table": "ExampleTable" } ] 我收到一条错误消息: {'error': { 'message'
Search * | distinct $table
而不是获取表列表,例如:
[
{
"$table": "ExampleTable"
}
]
我收到一条错误消息:
{'error':
{
'message': 'The request had some invalid properties', 'code': 'BadArgumentError', 'innererror':
{
'code': 'SyntaxError', 'message': 'Syntax Error'
}
}
}
如有任何建议/示例,将不胜感激。谢谢大家!
更新:
在再次访问Azure Log Analytics REST API网站之后,我决定花一些时间玩弄内置的API explorer工具。正是在那里,我能够成功地查询示例工作区中的表列表。我可以通过几个不同的查询来实现这一点:
search * | distinct $table
search * | distinct Type
虽然这两个查询在示例环境中都工作得很好,但在我自己的环境中,它们仍然让我失败。无论是我的python应用程序,还是我的Azure LogicApp,只要我在API资源管理器中发送返回完美结果的相同查询,就会继续收到语法错误。我仍然对这个问题感到困惑。以下是API Explorer的网站,供希望测试此功能的用户使用:
另外,要回答一个显而易见的问题:是的,我已经正确设置了API连接的其余部分。我可以并且确实成功地在Python应用程序和LogicApp工作流中进行其他查询。似乎正是这个特别的问题给了我麻烦
最后,如果有帮助,这是我在进行查询时继续收到的错误消息:
{'error': {'message': 'The request had some invalid properties', 'code': 'BadArgumentError', 'innererror': {'code': 'SyntaxError', 'message': 'Syntax Error'}}}
关于问题的Kusto查询语言部分,
Search
应该是Search
(小写s
)我没有深入挖掘,但它显然看起来像是Python在您的查询中理解“$”的问题。在这种情况下,我们可能需要显式调用API,让Python转义“$”
然而,您可以使用下面的查询来完成您的需求
search * | distinct Type
另一个注意事项是,由于日志分析查询语言已更改为较新版本,因此请确保使用最新的可用API。新的API文档可在
希望这有帮助!!干杯
注意:如果您认为您的问题已得到回答,请“接受”它,如果只是帮助,请单击“此答案有用”,并提供追加投票。这可能对阅读此线程的其他社区成员有益。请注意,search*| distinc不会为您提供工作区中的所有表,只提供至少包含一条记录的表。否则,它们将不会出现在搜索*的结果中,因此也不会出现在独特的查询中 请签出此API以获取工作区的架构:
这将显示每个表,按登录到其中的日志数排序。感谢您的建议;不幸的是,即使你改正了,这个问题仍然存在。我感谢你花时间研究我面临的这个问题。我已经尝试在Python应用程序和LogicApp中实现您的解决方案,我一直在使用LogicApp通过API测试查询。但是,您的解决方案仍然返回相同的错误。但是,我会注意到,在我的LogicApp环境中,我有一些关于此问题的有趣经验。2019年3月5日之前,我能够成功调用此查询,它将返回我需要的结果(所有表名的列表),但是2019年3月5日之后,LogicApp在尝试运行该查询时将失败。代码根本没有更改,所以我只能假设API或查询语言发生了更改。
search "*" | summarize count() by $table | sort by count_ desc