【问题标题】:Using both 'distinct' and 'project'同时使用 'distinct' 和 'project'
【发布时间】:2020-06-09 20:55:42
【问题描述】:

在 Azure 数据资源管理器中,我尝试同时使用“项目”和“不同”关键字。 表记录有 3 个字段,我想在上面使用“项目”:

  1. 牛名
  2. 牛型
  3. CowNum
  4. 牛标签

但表中还有许多其他字段,例如日期、测量等,我不想返回。

Cows
| project CowName, CowType, CowNum, CowLabel

但是,我想避免CowName和CowNum的重复记录,所以我包括了

Cows
| project CowName, CowType, CowNum, CowLabel
| distinct CowName, CowNum

但是当我这样做时,返回的唯一列是 CowName 和 CowNum。我现在完全错过了 CowType 和 CowLabel。

有没有办法同时使用“project”和“distinct”而不会相互干扰? 我应该采取不同的方法吗?

【问题讨论】:

    标签: azure-data-explorer kql


    【解决方案1】:

    你可以这样做:

    Cows
    | distinct CowName, CowType, CowNum
    

    或者,如果您不想拥有不同的 CowType 值 - 并且只拥有它的任何值:

    Cows
    | summarize any(CowType) by CowName, CowNum
    

    参考:
    汇总运算符:https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/summarizeoperator
    区分运算符:https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/distinctoperator
    any() 聚合函数:https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/any-aggfunction

    【讨论】:

      【解决方案2】:

      你可以用这个

      | summarize any(CowType, CowLabel) by CowName, CowNum
      

      为了形象化这将如何工作,请使用以下示例表/查询:

      let CowTable = datatable(CowNum:int, CowName:string, CowType:string, CowLabel:string, DontWantThis:int) 
      [
         1, "Bob", "Bull", "label1", 99,
         2, "Tipsy", "Heifer", "label1", 98,
         3, "Milly", "Heifer", "label2", 99,
         4, "Bob", "Bull", "label2", 87,
         4, "Bob", "Bull", "label2", 77,
         2, "Hanna", "Heifer", "label1", 98,
      ];
      CowTable
      | summarize any(CowType, CowLabel) by CowName, CowNum
      

      结果:

      请注意,我们没有看到 CowNum 4 被列出了两次,但是我们确实看到 CowNum 2 被列出了两次;这是因为这些行在 CowName 和 CowNum 方面是唯一的。我们还看到 Bob 列出了两次(不是 3 次);这是因为 Bob 条目中有 2 个在 CowName/CowNum 方面是唯一的,但 Bob 条目中有 2 个在 CowName/CowNum 方面不是唯一的。

      如果您真的只想要 CowName 唯一且 CowNum 也不同的结果,您可以通过两步汇总来完成:

      CowTable
      | summarize any(CowName, CowType, CowLabel) by CowNum
      | summarize any(CowNum, any_CowType, any_CowLabel) by any_CowName
      //normalize column names
      | project CowNum = any_CowNum, CowName = any_CowName, CowType = any_any_CowType, CowLabel = any_any_CowLabel
      

      结果:

      【讨论】:

        猜你喜欢
        • 2019-06-27
        • 1970-01-01
        • 2014-09-11
        • 1970-01-01
        • 1970-01-01
        • 2020-07-16
        • 2012-03-21
        • 1970-01-01
        • 2016-12-09
        相关资源
        最近更新 更多