google-cloud-platform - 在大查询中将多行转换为单个键值对行/列
问题描述
我想将多行数据转换为键值对。能够使用 udaf 函数在 hive 中执行此操作
输入表有两列
列 1 列 2
1 23
2 30
3 45
4 50
5 65
输出表将有一行/列
周销售额(键,值)
(“1”:“23”,“2”:“30”,“3”:“45”,“4”:“50”,“5”:“65”)
解决方案
以下是 BigQuery 标准 SQL
#standardSQL
SELECT CONCAT('{',
STRING_AGG(CONCAT('"', CAST(column1 AS STRING), '":"', CAST(column2 AS STRING), '"')),
'}') AS Weeksales
FROM `project.dataset.table`
如果适用于您的问题的样本数据 - 结果将是
Row Weeksales
1 {"1":"23","2":"30","3":"45","4":"50","5":"65"}
或更简洁的版本
#standardSQL
SELECT FORMAT('{%s}', STRING_AGG(FORMAT('"%d":"%d"', column1, column2))) AS Weeksales
FROM `project.dataset.table`
显然具有相同的输出
另一个选项,更简洁,输出略有不同 - 但希望显示为您的选项
#standardSQL
SELECT STRING_AGG(FORMAT('%T', t)) AS Weeksales
FROM `project.dataset.table` t
带输出
Row Weeksales
1 (1, 23),(2, 30),(3, 45),(4, 50),(5, 65)
上一个版本的另一个变体
#standardSQL
SELECT FORMAT('%t', ARRAY_AGG(t)) AS Weeksales
FROM `project.dataset.table` t
带输出
Row Weeksales
1 [(1, 23), (2, 30), (3, 45), (4, 50), (5, 65)]
推荐阅读
- reactjs - 如何修复打字稿反应中按钮的位置
- karate - 空手道 - java 11 - 问题
- sql - 如何在一组结果的末尾添加 SUM(nvarchar) 或 COUNT 行?
- google-apps-script - Google Sheets 脚本 API 上的 OnEdit 和 OnChange
- visual-studio - PowerShell cmd 输出到 Visual Studio 中的文本框
- javascript - WordPress 搜索问题
- visual-studio - 这是将页脚信息从一个 RD1 复制到另一个的最快方法。我有 45-50 个 RDL 需要更新页脚
- python - Python xml.ElementTree 中的 XPath:或:属性值
- ios - 基于 TensorFlow 示例 Swift 录制和播放视频
- python - 获取模块完全限定名的最简单方法