BigQuery 在一个查询中创建小样本表
Posted
技术标签:
【中文标题】BigQuery 在一个查询中创建小样本表【英文标题】:BigQuery create small sample table all in one query 【发布时间】:2019-09-26 16:33:17 【问题描述】:我知道 BigQuery 现在支持 CREATE TABLE ... AS SELECT...
类似标准 SQL 的语法。但是有没有人提供一些示例数据来生成这个表的例子?
假设我想要两个名为 A 和 B 的列。 A 值应为1,2,3,4
,B 值应为"Alpha", "Bravo", "Charlie", "Delta"
。如何生成这样的查询并创建这样的表?我知道这对于创建大表效率不高,但想知道创建小表的推荐方法。
【问题讨论】:
【参考方案1】:另一个不那么冗长的选项是
CREATE TABLE `PROJECT_ID.DATASET_NAME.NEW_TABLE_NAME` AS
SELECT * FROM UNNEST([
STRUCT(1 AS a, 'Alpha' AS b),
(2, 'Bravo'),
(3, 'Charlie'),
(4, 'Delta')
])
或者让它更容易与现有的 csv 一起重用
CREATE TABLE `PROJECT_ID.DATASET_NAME.NEW_TABLE_NAME` AS
SELECT * FROM UNNEST([
STRUCT(NULL AS a, '' AS b),
(1, 'Alpha'),
(2, 'Bravo'),
(3, 'Charlie'),
(4, 'Delta')
])
WHERE NOT a IS NULL
【讨论】:
如果只有一列就不行SELECT * FROM UNNEST([ STRUCT(NULL AS a), (1), (2), (3), (4) ]) WHERE NOT a IS NULL
@SergeyLossev 可以通过UNNEST
数组来做到这一点:SELECT * FROM UNNEST([NULL, 1, 2, 3, 4]) a WHERE NOT a IS NULL
【参考方案2】:
select . . . union all
怎么样?
create table t as
select 1 as a, 'Alpha' as b union all
select 2 as a, 'Bravo' as b union all
select 3 as a, 'Charlie' as b union all
select 4 as a, 'Delta' as b;
【讨论】:
是的,这很好用。谢谢!我刚刚用PROJECT_ID.DATASET_NAME.NEW_TABLE_NAME
的 BigQuery 语法交换了 table t
另外,我发现了一个有用的工具,可以从最初以 csv 格式的数据以编程方式生成大部分查询:convertcsv.com/csv-to-sql.htm以上是关于BigQuery 在一个查询中创建小样本表的主要内容,如果未能解决你的问题,请参考以下文章