【问题标题】:Azure Kusto language query through all tables通过所有表进行 Azure Kusto 语言查询
【发布时间】:2020-10-10 05:45:21
【问题描述】:

我正在尝试构建一个 KUSTO 查询来验证日志是否进入 Azure 日志分析表。这是我的代码。此命令完美运行并给出它收到的记录数。但问题是它没有在查询输出中考虑接收零(不是任何)日志的表名

union withsource=sourceTable kind=outer Table1, Table2, Table3
| summarize AggregatedValue=count() by bin(TimeGenerated, 5m), sourceTable

预期输出:

| Table Name | Count |
----------------------
| Table1     | 5     |
| Table2     | 3     |
| Table3     | 0     | //If the count is zero, query output does not show the table name
----------------------

【问题讨论】:

    标签: azure-log-analytics azure-data-explorer kql


    【解决方案1】:

    您没有在预期输出中为bin(TimeGenerated, 5m) 指定列中的值。我假设您并不真正想要此列(否则,我不确定您希望在 Table3 的预期输出中看到什么,它有 0 条记录)。

    要获得您想要的输出,请使用以下技巧:

    let DefaultResult = datatable(['Table Name']: string, Count: long) [
        "Table1", 0,
        "Table2", 0,
        "Table3", 0
    ];
    union withsource=sourceTable kind=outer Table1, Table2, Table3
    | summarize AggregatedValue=count() by bin(TimeGenerated, 5m), sourceTable
    | union DefaultResult
    | summarize Count = sum(Count) by ['Table Name']
    | order by ['Table Name'] asc
    

    【讨论】:

    • 嗨@Slavik N,感谢您的支持,是的,我想在输出中查看所有表和收到的日志计数,即使该特定表没有收到任何日志,也应该显示为 0。此外,在 Microsoft 文档中,我发现我们可以使用 Group Expression 显示值,但仍然没有运气docs.microsoft.com/en-us/azure/data-explorer/kusto/query/…
    • 嗨@UtpMahesh。如果summarize 的输入没有特定的分组键,那么summarize 将不会输出它(而且我看不到文档所说的位置)。这就是为什么我用DefaultResult 做了一个union,我把所有的表名都放在Count = 0。你试过吗?它是否输出您期望的结果?
    【解决方案2】:

    这可能会有所帮助:

    let reCount = union withsource=sourceTable kind=outer  AppServiceFileAuditLogs,AzureDiagnostics, BaiClusterEvent
    | summarize AggregatedValue=count() by sourceTable;
    let tableList = datatable (name:string)
    [
        'AppServiceFileAuditLogs',
        'AzureDiagnostics',
        'BaiClusterEvent'
    ];
    tableList
    | join kind=leftouter reCount on $left.name == $right.sourceTable
    |project name,count = iff(isnull(AggregatedValue)==true,0,AggregatedValue )
    

    这里的想法是使用具有表名 (tableList) 的表表达式进行左连接,然后在 AggregatedValue 为 NULL 的位置放置 0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多