首页 > 解决方案 > 将表中的数组单元格转换为另一个表中的行

问题描述

我有一个只有一个单元格的表(table1)。此单元格的内容采用数组格式。我需要将此单元格的内容转换为新表(table2)中的单独行

示例表 1 如下所示:-

![元素 ['foo', 'bar', 'baz', 'qux', 'corge', 'garply', 'waldo', 'fred']] 1

示例表 2 应如下所示:- 在此处输入图像描述

我已经阅读了有关数组和使用 UNNEST 运算符的大型查询文档。

以下逻辑将起作用:- '''SELECT * FROM UNNEST(['foo', 'bar', 'baz', 'qux', 'corge', 'garply', 'waldo', 'fred']) AS元素'''

但是,我需要从表 1 中的单元格中读取数组并创建表 2。

对此的任何帮助都将非常有用。

标签: google-bigquery

解决方案


以下是 BigQuery 标准 SQL

#standardSQL
SELECT element
FROM `project.dataset.table`,
UNNEST(element) element 

您可以使用您问题中的示例数据进行测试,使用上面的示例数据,如下例所示

#standardSQL
WITH `project.dataset.table` AS (
  SELECT ['foo', 'bar', 'baz', 'qux', 'corge', 'garply', 'waldo', 'fred'] element
)
SELECT element
FROM `project.dataset.table`,
UNNEST(element) element 

带输出

Row element  
1   foo  
2   bar  
3   baz  
4   qux  
5   corge    
6   garply   
7   waldo    
8   fred       

现在,您可以使用上面来创建新表,如下例所示

CREATE TABLE `project.dataset.table2` AS    
SELECT element
FROM `project.dataset.table1`,
UNNEST(element) element 

推荐阅读