如何在Kibana数据表中按项创建子计数列

如何在Kibana数据表中按项创建子计数列,kibana,metric,Kibana,Metric,我正在尝试从Elasticsearch中的数据自定义数据表 假设我有一个字段“部门”,它可以是“部门a”或“部门B”或“部门C”等等。。。 但我只能显示所有记录的总数,而不能使用department字段获取小计数值 请参阅下表: 只有“总计”列是正确的。 我的任务是实现“部门A”和“其他部门”下的数字 是否有可以应用于度量的过滤器?或者有其他方法吗 如果您需要更多信息,请告知 更新------------------------------------------- 搜索后,我找到了解决方法:

我正在尝试从Elasticsearch中的数据自定义数据表

假设我有一个字段“部门”,它可以是“部门a”或“部门B”或“部门C”等等。。。 但我只能显示所有记录的总数,而不能使用department字段获取小计数值

请参阅下表:

只有“总计”列是正确的。 我的任务是实现“部门A”和“其他部门”下的数字

是否有可以应用于度量的过滤器?或者有其他方法吗

如果您需要更多信息,请告知

更新-------------------------------------------

搜索后,我找到了解决方法:

首先在Kibana中创建两个脚本字段,如下所示:

脚本化字段名:sf_dept_A

朗:无痛的

脚本:

if (doc["department"].value.equals("Dept A"))
    return 1;
else
    return 0;
if (doc["department"].value.equals("Dept A") == false)
    return 1;
else
    return 0;
脚本字段名称:sf\U其他\U部门

朗:无痛的

脚本:

if (doc["department"].value.equals("Dept A"))
    return 1;
else
    return 0;
if (doc["department"].value.equals("Dept A") == false)
    return 1;
else
    return 0;
创建上述两个脚本化字段后,转到创建datatable,只需添加脚本化字段总和的mertics

添加指标

  • 合计:总和

  • 字段:sf_dept_A

  • 自定义标签:部门A

添加指标

  • 合计:总和
  • 字段:sf_dept_A
  • 自定义标签:部门A
添加指标

  • 聚合:计数
  • 自定义标签:总计
这样,可以用列分隔不同部门的计数。
但是这需要更多的资源,如果我有许多部门,我必须创建许多字段。

在您的拆分行下,您可以简单地应用

假设您在每个记录中都有一个名为Department的字段,您可以使用两个过滤器,如下所示:

Department:"Dept A"

Department:"Dept B"
它可能看起来像这样

您可以使用聚合来根据字段的相应值区分结果。理想情况下,应显示每个部门的计数。但是我不认为你可以显示计数,部门之间用列隔开,尽管你已经在上面的屏幕截图中显示了

然而,您可以看到每个部门的计数以及您选择的时间戳,它应该如下所示:

Timestamp     Departments         Count
01/01/17        Depa A              1
01/01/17        Depa B              2 
02/01/17        Depa C              1
02/01/17        Depa B              6 

希望这有帮助

在Kibana的最新版本中,您可以使用“JSON输入”在给定的可视化中动态执行此操作,而无需编写脚本字段:

  • 在您的可视化中,创建一个“总和”度量(我认为,在任何字段上,该字段最终都会被忽略…?)
  • 在该总和指标下,单击“高级”链接,显示“JSON输入”文本框
  • 在该文本框中,键入如下内容:
    {
    “脚本”:{
    “内联”:“doc['SomeField'].value=='SomeValue'?1:0”,
    “郎”:“无痛”
    }
    }
就在这里!现在您有了一个条件计数度量。默认标签将是“总和(您选择的任何字段)”,因此您需要在度量上设置更精确的自定义标签,如“计数(SomeValue)”

这将仍然是缓慢/昂贵的运行,但据我所知,与您在问题中附加的解决方案相比,有两个优势:

  • 您不需要预先创建所有这些脚本字段,您可以在需要时根据需要定义脚本
  • 在许多(所有?)查询中,创建脚本化字段会带来查询执行时间开销,而这种方法只有在运行这种特定的可视化时才会有这种开销

  • 我懂了。但我真的希望部门计数由列分隔,而不是将它们分隔成行。我注意到度量有“JSON输入”字段。“我可以把过滤规则放在那里得到结果吗?”比尔,但据我所知,还没有添加一个增强功能。我还没有尝试过使用JSON输入,也许你可以试试。仅供参考,您可以使用JSON输入进行一些聚合。类似于
    {'script':'(_值)/100'}
    !如果有帮助,可以告诉我吗?@bill这方面运气好吗?嗨,我从你提供的链接中找到了另一种方法。如果预期的度量是“Count”,则可以使用脚本化字段来执行:对于所需的每个datatable列,定义一个脚本化字段,其表达式为:?1:0然后在datatable visualization editor中,对于您想要的每一列,添加一个引用脚本字段的“总和”度量感谢您分享您的方法,它对我有用。