azure - 如何在 Azure Log Analytics 中使用“包含”查询多个相似的字符串值?
问题描述
我有一个 ADF 管道,我正在尝试查询其故障日志。我需要根据我在管道运行中使用的参数分析日志。我的示例查询如下:
ADFPipelineRun
| project JobId, PLName, JobStatus, PL_param, Status
| where PLName == "org_daily_data_load"
| where Status == "Failed"
| where PL_param contains 'org_erp_sap'
这行得通。但我需要分析各种参数的结果。但参数相似但并不总是相同。它们因日期和时间而异,如下所示:
参数:
org_erp_sap_20201104_063418
ABC_ENV_D_20210329_174033
123_xyz_abc_20210801_101923
org_erp_sap_20210504_143418
123_xyz_abc_20210401_121923
正如您在上面看到的,日期不同,但参数中有一个共同的字符串部分。如果我想检查这些参数的日志,我必须手动更改where PL_param contains
每个查询的子句中的参数,如下所示:
ADFPipelineRun
| project JobId, PLName, JobStatus, PL_param, Status
| where PLName == "org_daily_data_load"
| where Status == "Failed"
| where PL_param contains 'org_erp_sap'
ADFPipelineRun
| project JobId, PLName, JobStatus, PL_param, Status
| where PLName == "org_daily_data_load"
| where Status == "Failed"
| where PL_param contains 'ABC_ENV_D'
ADFPipelineRun
| project JobId, PLName, JobStatus, PL_param, Status
| where PLName == "org_daily_data_load"
| where Status == "Failed"
| where PL_param contains '123_xyz_abc'
有没有办法让contains
子句只使用公共字符串部分来获取多个值,而不管后面的日期和时间戳信息如何?如下所示:
ADFPipelineRun
| project JobId, PLName, JobStatus, PL_param, Status
| where PLName == "org_daily_data_load"
| where Status == "Failed"
| where PL_param contains 'org_erp_sap%' OR 'ABC_ENV_D%' OR '123_xyz_abc%'
这是我第一次使用 KQL 和 Azure Log Analytics,我不知道如何实现这一点。有人可以帮忙吗?
解决方案
如果我理解正确,您所要做的就是将所有变量放在一个地方。为此,您可以使用let
如下语句:
let PLName = "org_daily_data_load";
let StatusToLookFor = "Failed";
// etc...
ADFPipelineRun
| project JobId, PLName, JobStatus, PL_param, Status
| where PLName == PLNameToLookFor
| where Status == StatusToLookFor
| where PL_param contains 'org_erp_sap%' OR 'ABC_ENV_D%' OR '123_xyz_abc%'
顺便说一句,如果您正在寻找完整的单词,那么使用它比使用索引更has
有效contains
。您还可以使用更方便的语法,如下所示:
| where PL_param has_any ('org_erp_sap%', 'ABC_ENV_D%', '123_xyz_abc%')
如果你想在查询的开头声明这个列表,那么你可以这样做:
let PLParamsToLookFor = dynamic(['org_erp_sap%', 'ABC_ENV_D%', '123_xyz_abc%']);
ADFPipelineRun
...
| where PL_param has_any (PLParamsToLookFor)
推荐阅读
- android - 用于 Firebase 数据更新的 setValue() 导致更新对象中的其他字段在 childEventListener 中的 onChildAdded 中返回 null
- python - 在 Linux 中编写的 django 项目如何运行,我有 Windows 吗?
- javascript - 在 AJAX 返回的元素仍然可见时暂停 HTML5 音频
- google-cloud-platform - WinScp SFTP - 没有支持的身份验证方法可用谷歌云
- php - 条卡处理
- c - 将一个引脚配置为输入而另一个引脚配置为输出时 AVR 端口上的奇怪行为
- javascript - 使用 JS 在已填充的选择标签中选择一个选项
- cookies - 谷歌“同意”cookie - 它是什么?
- javascript - 从解析的 html 中获取文本值
- c++ - Firebase:架构 x86_64 的未定义符号(配置多个项目)