【问题标题】:Google BigQuery Legacy Syntax Help Needed需要 Google BigQuery 旧版语法帮助
【发布时间】:2017-03-10 16:18:42
【问题描述】:

我在从标准 SQL 转换 Google BigQuery 语句时遇到问题 到旧版 SQL。对于上下文,我已经发布了标准 SQL 和相应的表架构。

简而言之...下面的代码选择了“最新”(AS-IS)版本的 用于报告的产品层次结构。这是通过在标准 SQL 中使用 STRUCT 完成的。 我不确定如何在旧版 SQL 中执行此操作。

任何帮助将不胜感激! 克巴里诺

标准 SQL 示例

选择 STR_NBR , 库存单位 , SKU_CRT_DT , DS.* , ( 选择为结构 X。* 从 ( 选择 * , ROW_NUMBER() OVER(ORDER BY EFF_BGN_DT DESC) AS ROW_NUM 来自 SLS.PROD_HIER ) 作为 X WHERE ROW_NUM = 1 ) 作为 P_HIER FROM `XXXX.YYYY.SKU_STR_SLS_20141201` SLS , UNNEST(DAILY_SALES) 作为 DS; 模式定义 STR_NBR--------------------------------STRING------------NULLABLE SKU------------------------------------INTEGER----------NULLABLE SKU_CRT_DT-----------------DATE-------------NULLABLE DAILY_SALES----------------------------记录-----------重复 DAILY_SALES.SLS_DT---------DATE-------------NULLABLE DAILY_SALES.*(许多其他属性)--XXXX-------------XXXX PROD_HIER-----------------记录-----------重复 PROD_HIER.eff_bgn_dt-------日期-------------NULLABLE PROD_HIER.*(许多其他属性)----XXXX-------------XXXX

【问题讨论】:

  • 您能解释一下为什么需要使用旧版 SQL 而不是标准 SQL 吗?
  • 我们的 Tableau 环境只能使用旧版 SQL。

标签: google-bigquery


【解决方案1】:

一些建议,但您可能需要联系 Tableau 的支持人员,询问能够使用标准 SQL 的状态。在某些工具中,可以通过将 #standardSQL 放在查询顶部来强制执行标准 SQL。

对于旧版 SQL,您需要使用 FLATTEN,而不是带有 UNNEST 的逗号运算符。例如,FLATTEN(XXXX.YYYY.SKU_STR_SLS_20141201, DAILY_SALES.SLS_DT) 之类的东西。但是,由于您想在展平之前计算行号,您可能需要将FLATTEN 应用于子查询本身。我的旧 SQL 有点生疏了,所以我不想让你误入歧途的非功能查询,但看看其他一些关于 FLATTEN 的 SO 问题,看看它是如何使用的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多