【问题标题】:BigQuery create Table differences between standard and legacy sqlBigQuery 在标准和旧版 sql 之间创建表差异
【发布时间】:2019-03-11 06:48:33
【问题描述】:

我对标准和旧版 sql 中的创建表语法有一些疑问

  1. 新的 BigQueryUI 不显示标准 sql 类型,仅显示旧类型。我知道它们与旧类型一一对应,但创建 partitioned tables 的示例显示了 UI 中不可用的选项
  2. 如果我使用 JSON 字段架构创建表,我还可以使用标准 sql 吗?
  3. BigQueryUI 仅显示按摄取时间对表进行分区,但我想创建一个包含日期列的表,但没有看到它的选项。如果我必须手动创建 DDL,我没有看到有关如何使用 JSON 字段模式构造创建表语句的示例。

【问题讨论】:

    标签: google-bigquery bigquery-standard-sql legacy-sql


    【解决方案1】:

    新的 BigQueryUI 不显示标准 sql 类型

    BigQuery standardSQL 和 LegacySQL 是编写 SQL 语法的 2 个选项(有关详细信息,请参阅此 link),与 BigQuery 中的列类型无关,有关表类型的详细信息可以在此 link 中找到,我也觉得这个Link很有帮助

    如果我使用 JSON 字段架构创建表,我仍然可以使用标准 sql 吗?

    要使用 JSON 创建表,您需要运行 bq command line,如果您需要帮助如何编写此语法,请告诉我们

    但我想创建一个带有日期列的表,但我没有看到它的选项

    您可以使用此标准 SQL 语法来执行此操作:

    #standardSQL
    CREATE OR REPLACE TABLE `project.dataset.tableId`
    PARTITION BY myDate
    CLUSTER BY cluster_col AS
    SELECT * from sourceTable
    

    注意:myDate 列是源表中的列

    【讨论】:

    • 谢谢塔米尔。如果我要创建的表是我想要将数据流式传输到其中的全新表怎么办?然后看来我必须创建一个没有记录的虚拟表,并使用您提供的查询来创建我想要的表。
    • 正确的是这样。如果您觉得我的回答对您有帮助,请考虑接受并投票
    • @PK109,注意:对 SO 很重要 - 您可以使用已发布答案左侧的勾号(投票下方)标记已接受的答案。请参阅 This 了解为什么它很重要!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    相关资源
    最近更新 更多