【问题标题】:Getting only unique values within a category in Kusto Query Language (Azure Monitor Logs)仅获取 Kusto 查询语言(Azure Monitor 日志)中的类别中的唯一值
【发布时间】:2019-10-21 05:56:43
【问题描述】:

我有这种格式的数据:

Category Session_ID  Step_Name

  A         100        1
  A         100        2 
  A         200        1
  A         200        1    <--
  A         200        1    <--
  A         200        2
  B         300        1
  B         300        1    <--

我需要删除 每个 Session_ID 中步骤名称的重复值。比如ID = 200,有3个'1'需要改成1个'1',所以最终的数据是这样的:

Category Session_ID  Step_Name

  A         100        1
  A         100        2 
  A         200        1
  A         200        2
  B         300        1

【问题讨论】:

  • 也许 Distinct 正在为:| distinct Session_ID, Step_Name
  • 是的,这行得通,谢谢。你能把这个作为答案吗?

标签: azure distinct-values azure-data-explorer kql


【解决方案1】:

在你的情况下你应该使用distinct operator

your_table
| distinct Category, Session_ID, Step_Name

然后您可以获得如下所示的预期输出,它在我身边工作:

Category Session_ID  Step_Name

  A         100        1
  A         100        2 
  A         200        1
  A         200        2
  B         300        1

对于您在评论中的问题,如果您使用上述查询,则“A 100 1”之类的记录将被视为一个实体,并且仅当有 2 个或更多完全相同记录如果使用不同的,像“A 100 1”将只保留 1 条记录。

如果还有像“B 100 1”这样的记录,那么“A 100 1”和“B 100 1”这两条记录都会保留。

【讨论】:

  • 如果我们有一个 Timestamp 列而不是 Category,在这种情况下我们应该如何处理? - 考虑到会话 ID 中的重复步骤将具有不同的时间戳,并将被视为唯一的。
  • 如果您有一个 Timestamp 列而不是 Category,那么您的预期结果是什么?
  • 应保留具有最新时间戳的重复步骤(在 session_id 内),并且应删除较早的重复步骤。 (第二个箭头的步骤应该保留,第一个箭头的步骤必须删除)
  • @user75252,你能发布一个关于这个的新问题吗?并在完成后提供链接:)。
  • 当然,我会这样做的。
猜你喜欢
  • 1970-01-01
  • 2022-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多