如何在 bigquery 中创建标准 SQL 表

Posted

技术标签:

【中文标题】如何在 bigquery 中创建标准 SQL 表【英文标题】:How to create standard SQL tables in bigquery 【发布时间】:2018-01-26 17:26:10 【问题描述】:

我刚刚检查了 Web UI,创建了一个空表,所有暴露的数据类型都是旧的 SQL 数据类型。然后我检查了bq mk,我看不到任何设置标准 SQL 标志的选项。

甚至奇怪的是,如果我使用标准 SQL 数据类型创建表,

bq mk --schema name:string,value:int64 -t test.newtable5
Table 'oandmpoc:test.newtable5' successfully created.

它创建一个带有value INTEGER 的表,稍后我将深入研究 ARRAY 和 STRUCT 数据类型的行为。有什么明显的我失踪了吗?

【问题讨论】:

您查看了 DDL 文档吗? cloud.google.com/bigquery/docs/data-definition-language 【参考方案1】:

BigQuery 不会以不同方式存储旧版 SQL 和标准 SQL 的表。 INTEGERINT64 类型的旧 SQL 别名。同样,RECORDSTRUCT 的别名。您会注意到 legacy SQL data types reference 有 DATETIMEDATETIME 的条目,尽管这些条目在标准 SQL 中最有用。

migrating from legacy SQL documentation page 上提供了有关哪些旧 SQL 类型映射到哪些标准 SQL 类型的更多信息。

【讨论】:

谢谢 - 但我们在使用 Tableau 时遇到了问题。它使用“.”在 ARRAY 中发送 STRUCT 数据类型。请求元数据时的(点)表示法。但是这些名称不能在进一步的查询中使用。我不确定为什么 BQ 在使用标准 SQL 时会这样做。 kb.tableau.com/articles/issue/… 架构是什么样的?您想在 Tableau 中做什么?这可能是另一个问题。

以上是关于如何在 bigquery 中创建标准 SQL 表的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 标准 SQL 如何将行转换为列

BigQuery 在一个查询中创建小样本表

在 BigQuery 中展平嵌套和重复的结构(标准 SQL)

bigquery - 自定义字段上的分区 - 仅适用于标准 SQL?

如何在 bigquery 中创建分区表

如何从 java 在 BigQuery 中创建分区表?