不带列名的动态汇总

2023-12-30

如何根据列的字符串数组动态构造汇总语句?

deviceTelemetry 
| summarize <FOR-EACH-COLUMNS>avg(column)<FOR-EACH-COLUMNS> by deviceId

EDIT

这是一个数据集,“keys”包含我想在摘要聚合中使用的列名称,“deviceTelemetry”是预期结果(在这种情况下,列是硬编码的)。

let deviceTelemetry = datatable (deviceId:guid, timestamp:datetime, value:dynamic)[
'fddf1cec-16db-4461-9057-3d08e46b6bcf','2020-05-15 17:01:35.7750000', dynamic({ "level":  60}),
'fddf1cec-16db-4461-9057-3d08e46b6bcf','2020-05-15 18:01:35.7750000', dynamic({ "level":  50}),
'aaaaaaaa-fed4-c23b-422b-e85e0877c092','2020-05-15 17:01:35.7750000', dynamic({ "level": 100, "flow": 350}),
'aaaaaaaa-fed4-c23b-422b-e85e0877c092','2020-05-15 18:01:35.7750000', dynamic({ "level":  90, "flow": 360}),
'aaaaaaaa-fed4-c23b-422b-e85e0877c092','2020-05-15 19:01:35.7750000', dynamic({ "level":  80, "flow": 370}),
'aaaaaaaa-fed4-c23b-422b-e85e0877c092','2020-05-15 20:01:35.7750000', dynamic({ "level":  70, "flow": 380}),
'cb04ccff-48bc-4108-9d16-7d7db9152895','2020-05-15 21:01:35.7750000', dynamic({ "pressure":  120}),
'cb04ccff-48bc-4108-9d16-7d7db9152895','2020-05-15 20:01:35.7750000', dynamic({ "pressure":  130}),
'cb04ccff-48bc-4108-9d16-7d7db9152895','2020-05-15 21:01:35.7750000', dynamic({ "pressure":  140}),
];
let keys = deviceTelemetry
| summarize make_bag(value)
| extend keys=bag_keys(bag_value)
| mv-expand keys
| distinct tostring(keys);
keys;
let flowColumnName = "flow";
let levelColumnName = "level";
let pressureColumnName = "pressure";
deviceTelemetry
| evaluate  bag_unpack(value)
| summarize
            level=avg(toreal(column_ifexists(levelColumnName, levelColumnName))), 
            flow=avg(toreal(column_ifexists(flowColumnName, flowColumnName))),
            pressure=avg(toreal(column_ifexists(pressureColumnName, pressureColumnName)))
            by timestamp=bin(timestamp , 1d) , deviceId

pivot https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/pivotplugin plugin

let deviceTelemetry = datatable (deviceId:guid, timestamp:datetime, value:dynamic)[
'fddf1cec-16db-4461-9057-3d08e46b6bcf','2020-05-15 17:01:35.7750000', dynamic({ "level":  60}),
'fddf1cec-16db-4461-9057-3d08e46b6bcf','2020-05-15 18:01:35.7750000', dynamic({ "level":  50}),
'aaaaaaaa-fed4-c23b-422b-e85e0877c092','2020-05-15 17:01:35.7750000', dynamic({ "level": 100, "flow": 350}),
'aaaaaaaa-fed4-c23b-422b-e85e0877c092','2020-05-15 18:01:35.7750000', dynamic({ "level":  90, "flow": 360}),
'aaaaaaaa-fed4-c23b-422b-e85e0877c092','2020-05-15 19:01:35.7750000', dynamic({ "level":  80, "flow": 370}),
'aaaaaaaa-fed4-c23b-422b-e85e0877c092','2020-05-15 20:01:35.7750000', dynamic({ "level":  70, "flow": 380}),
'cb04ccff-48bc-4108-9d16-7d7db9152895','2020-05-15 21:01:35.7750000', dynamic({ "pressure":  120}),
'cb04ccff-48bc-4108-9d16-7d7db9152895','2020-05-15 20:01:35.7750000', dynamic({ "pressure":  130}),
'cb04ccff-48bc-4108-9d16-7d7db9152895','2020-05-15 21:01:35.7750000', dynamic({ "pressure":  140}),
];
deviceTelemetry
| mv-expand kind=array value
| extend k = tostring(value[0]), v = toreal(value[1])
| extend timestamp_bin = bin(timestamp , 1d)
| evaluate pivot(k, avg(v),  timestamp_bin, deviceId)
timestamp_bin deviceId flow level pressure
2020-05-15T00:00:00Z fddf1cec-16db-4461-9057-3d08e46b6bcf NaN 55 NaN
2020-05-15T00:00:00Z aaaaaaaa-fed4-c23b-422b-e85e0877c092 365 85 NaN
2020-05-15T00:00:00Z cb04ccff-48bc-4108-9d16-7d7db9152895 NaN NaN 130

Fiddle https://dataexplorer.azure.com/clusters/help/databases/Samples?query=H4sIAAAAAAAAA73UzWrjMBAA4Hsg7zDkEhukRZItS3bpA%20x9byUs%20hkXU9sJjuI27O67r9x4S9pDCS6sDAbNSPMxB02LATyOjcMf2GKHYTjDPXgT4mdbhOSS/O6rx1PjCYSmw2Mw3aGKZ3DaERhNe8LKn3vTNS59WK%202tfc1d%20goL7yleV5wWjKpaOaZxrywhXX1lmwFE4wySbkErirGq0x%20U0qyuLYE5oLJL9i0OGK7qQAK9iclywB9EyBnwMyL1uhz6kQWFSEsRS2RaaUcK8WSDjhjBDZ1u3%20Om%20wL2m3tlNdasVwrb9L0taYWa4LdpKlrTc%20asyx3rq5prq2jOWealp4XVHnlbcml0KX8oPHPtMOAx%20NpwAnkYjnyaUvvkOx/dJJfkN3devXh9a9Xv6EbKb4cTO/hqen9vRkGc7688imLLwGnVJwTYX8MQ9M/Jq/JB7ZL4zR4jQ9o2jnKd%20nVtbcB8tM2fTwa/8lbDAhwfzk93Y0TBg7NuA/JEwEzRibWf1%20BwL8Blf4FkG8uh8sEAAA=

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不带列名的动态汇总 的相关文章

随机推荐

  • 如何在一个 get 请求中返回多个 Mongoose 集合?

    我正在尝试生成一个响应 返回按 3 个不同列排序的相同集合 这是我目前拥有的代码 var findRoute router route find findRoute get function req res Box find functio
  • Git 以错误用户身份推送到远程 GitHub 存储库

    我有一个工作 GitHub 帐户和一个个人帐户 首先 我使用个人帐户进行测试项目 然后我继续使用同一台计算机上的另一个帐户创建存储库 现在我想再次在我的个人帐户上创建一个新的存储库 我更改了全局和本地user name 并创建了一个新的 s
  • 如何通过reactnavigation v5将参数从一个屏幕传递到另一个屏幕

    我有一个问题 有一个用户列表 我想向任何用户添加约会 因此在用户屏幕上有一个 PlusButton 在添加约会屏幕上发送用户 从用户屏幕的 headerRight 呈现的 PlusButton 但我不知道如何传递给 AddAppointme
  • 在 fullCalendar 中更改 slotDuration 而不重新加载页面

    使用 fullcalendar 我需要无需重新加载页面即可更改slotDuration参数取决于其他条件 我在一种情况下这样做 calendar fullCalendar option slotDuration 00 15 00 在其他情况
  • 如何在 NHibernate 中映射 Collection

    我有一个联系人类 基类 一个名为 客户 的类和一个名为 供应商 的类 客户和供应商类都派生自联系人 客户与订单有 0 n 关系 我想要在客户上有一个 Collection 属性 并将其在 NHibernate 中映射到其相应的表 在 NHi
  • T-SQL - 获取具有相同 B 集的所有 As 的列表

    我正在努力编写一个棘手的 SQL 查询 看一下下表 A B 1 2 1 3 2 2 2 3 2 4 3 2 3 3 4 2 4 3 4 4 现在 从这个表中 我本质上想要一个所有 A 的列表 它们具有完全相同的 B 集 并为每个集提供一个递
  • 如何在 DAX (Power BI Desktop) 中计算总价值的百分比

    我在 Power BI Desktop 中有以下切片器 其中客户数量计算为计数 不同 Fact EHRTransaction ClientFK 在我的数据模型中 我的目标是计算占总数的百分比 13 639 并将其作为度量或另一个列添加到此切
  • parse(text = str) 中出现意外符号错误,数字后带有连字符

    我正在尝试解析 R 中的字符串 当字符串中存在数字后跟连字符时 R 会抛出 意外符号 或 意外输入结束 异常 请参阅代码 搜索并尝试不同的方法来解决这个问题并没有帮助 可能是我的知识匮乏 任何帮助或建议将不胜感激 gt str lt abc
  • Umbraco 5询问用户是否有节点权限

    我正在使用 Umbraco 5 1 beta 在互联网上 此信息来自以前的版本 找不到最新的文档 我发现我可以询问节点用户是否具有访问权限 这样我想建立我的菜单 问题是 我无法让它工作 HasAccess 和 IsProtected 属性不
  • 如何使用 SwiftUI 扩展按钮的宽度

    我不知道如何更改 SwiftUI 中按钮的宽度 我已经尝试过 使用 frame minWidth 0 maxWidth infinity 在按钮和导航链接周围使用 Spacer 在文本字段上使用框架并在按钮上使用填充 查看文档以及我在网上搜
  • 为什么 PHP 对象运算符在浏览器中被视为结束标记? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • 使用其他数组对对象数组进行排序

    我创建了这个对象数组 const palette color Blue brightness Soft color Blue brightness Medium color Blue brightness Principal color M
  • Magento 重写 getPrice()

    我已经通过覆盖 Magento 产品的价格规则getPrice 方法在 Mage Catalog Model Product Type Price 类 简单的产品工作正常 并显示我在中提到的更新价格getPrice i e public f
  • Haproxy ssl重定向握手失败

    我有 haproxy v1 5 4 可以使用 http 和 https 我将 80 和 443 绑定到相同的前端并使用相同的 acl 我想创建一个 http gt https 重定向 frontend http in bind 80 bin
  • NSXMLparser 错误代码 5

    我在我的应用程序中使用亚马逊的 simpledb 解析 xml 时出现错误 代码为 5 IE NSXMLParserErrorDomain 错误 5 有时它工作正常 并且导航没有任何重大变化就会出现该错误 当我多次重新启动应用程序而无需对系
  • Android:如何在主项目中使用测试项目

    我想在 Eclipse 中创建这样的项目结构 并将其与 Maven 一起使用 MyProject AndroidManifest xml res resources for main application src source code
  • div元素中额外空间的解决方案

    在我的应用程序中我使用的是div元素 div 元素下方和上方有一些额外的空间 我怎样才能删除它 Thanks 每个浏览器都有自己的各种元素的边距和填充的默认值 所以除非你明确设置例如 div margin 0 padding 0 在你的 C
  • 如何在不创建数据库的情况下保存谜语游戏的答案?

    我创建了一个具有不同级别的问答游戏 每个级别都包含一个问题 我没有用数据库创建它 我只是用了字符串 当用户回答第一级的问题时 他会被带到第二级 但是当用户返回到第一级时 他必须再次输入答案 即使他之前已经解决了该问题 无论如何 JAVA 是
  • Firemonkey Delphi TWebBrowser 获取文本/HTML

    我如何从 Firemonkey 平台 Android iOS 上的网页获取文本 html TWebBrowser 没有任何这方面的东西 经过一些测试 我结合了JAVAScript和Delphi代码 有一个workground 请参考我的文章
  • 不带列名的动态汇总

    如何根据列的字符串数组动态构造汇总语句 deviceTelemetry summarize