BigQuery SQL Select 返回键值对而不是两个单独的列

Posted

技术标签:

【中文标题】BigQuery SQL Select 返回键值对而不是两个单独的列【英文标题】:BigQuery SQL Select that returns Key Value Pairs and not two seperate columns 【发布时间】:2018-06-25 05:29:42 【问题描述】:

我正在尝试在 bigquery 上的 select 语句中合并我的 2 列,以便我有一列带有键值对,而不是两列(一列带有键,一列带有值)。 我曾尝试使用 array_agg() 但每当我这样做时,都会在我的声明的第一行中导致错误: "一个表达式引用了既不分组也不聚合的列 colName"

任何有关如何执行此操作或可能导致我的 array_agg 错误的建议将不胜感激。

【问题讨论】:

请分享您的 SQL、示例输入和所需的输出 :) 【参考方案1】:

您的问题中的信息有限,但无论如何我都会尝试一下。下面是一些使用数组、字符串连接和结构的示例:

#standardSQL
WITH
  key_values AS (
  SELECT
    'key1' AS k,
    'value1' AS v
  UNION ALL
  SELECT
    'key2' AS k,
    'value2' AS v)
SELECT
  [k,
  v] AS kv_array,
  CONCAT(k,':',v) AS kv_concat,
  STRUCT(k,
    v) AS kv_struct
FROM
  key_values 

【讨论】:

以上是关于BigQuery SQL Select 返回键值对而不是两个单独的列的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:将数组中的键值对转换为列

无法从具有数组和结构的 BigQuery 表中提取键值对

将数据从键值对提取到 Google Bigquery 中的列标题

SQL Query 从一行中的单个表返回多个键值对

从对象数组中获取数据 sql BigQuery

在 BigQuery 中查询重复的键值字段