2016-10-27 1 views
0

Google BigQueryステートメントを標準SQL から従来のSQLに変換する際に問題が発生しています。文脈のために、私は標準SQLとそれぞれのテーブルスキーマを投稿しました。Google BigQuery従来の構文ヘルプが必要

簡潔に言えば、以下のコードは、レポートのための 製品階層の最新(AS-IS)バージョンを選択しています。これは、標準SQLでSTRUCTを使用して行われました。 これをレガシーSQLで行う方法がわかりません。

ご協力いただければ幸いです! clbarrineau

標準SQL例

  
SELECT STR_NBR 
,   SKU 
,   SKU_CRT_DT 
,   DS.* 
,   (
      SELECT AS STRUCT 
        X.* 
      FROM (
       SELECT * 
       ,  ROW_NUMBER() OVER(ORDER BY EFF_BGN_DT DESC) AS ROW_NUM 
       FROM SLS.PROD_HIER 
       ) AS X 
      WHERE ROW_NUM = 1 
      ) AS P_HIER 
FROM  `XXXX.YYYY.SKU_STR_SLS_20141201` SLS 
,   UNNEST(DAILY_SALES) AS DS; 


Schema Definition 
STR_NBR--------------------------------STRING-----------NULLABLE 
SKU------------------------------------INTEGER----------NULLABLE 
SKU_CRT_DT-----------------------------DATE-------------NULLABLE 
DAILY_SALES----------------------------RECORD-----------REPEATED 
DAILY_SALES.SLS_DT---------------------DATE-------------NULLABLE 
DAILY_SALES.*(many other attributes) --XXXX-------------XXXX 
PROD_HIER------------------------------RECORD-----------REPEATED 
PROD_HIER.eff_bgn_dt-------------------DATE-------------NULLABLE 
PROD_HIER.*(many other attributes) ----XXXX-------------XXXX 

+0

なぜ標準SQLではなくレガシーSQLを使用する必要があるのか​​説明できますか? –

+0

私たちのTableau環境はレガシーSQLを利用することができます。 – clbarrineau

答えて

0

提案のカップル、あなたは標準のSQLを使用することができるという状況は同様であるものを聞いてTableauのサポートに連絡したいかもしれません。いくつかのツールでは、クエリの先頭に#standardSQLを置くことで標準SQLを強制することができます。

従来のSQLの場合、カンマ演算子の代わりにUNNESTを使用する場合は、FLATTENを使用する必要があります。たとえば、FLATTEN(XXXX.YYYY.SKU_STR_SLS_20141201, DAILY_SALES.SLS_DT)のようなものです。ただし、フラット化する前に行番号を計算したいので、サブクエリ自体にFLATTENを適用する必要があります。私のレガシーSQLは少し錆びているので、機能していないクエリであなたを迷子にしたくはありませんが、それがどのように使用されているかについては、FLATTENに関するその他の質問をご覧ください。

関連する問題