2016-10-27 9 views
0

Ich habe Probleme beim Konvertieren einer Google BigQuery-Anweisung von Standard SQL zu Legacy SQL. Für den Kontext habe ich das Standard-SQL und das entsprechende Tabellenschema gepostet.Google BigQuery Legacy Syntax Hilfe benötigt

Kurz gesagt ... der folgende Code wählt die 'neueste' (AS-IS) Version einer Produkthierarchie für das Reporting aus. Dies wurde mit der Verwendung von STRUCTs in Standard SQL getan. Ich bin nicht sicher, wie dies in Legacy-SQL zu tun.

Jede Hilfe würde sehr geschätzt werden! clbarrineau

Standard-SQL Beispiel

  
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

Können Sie erklären, warum Sie Legacy-SQL anstelle von Standard-SQL verwenden müssen? –

+0

Unsere Tableau-Umgebung kann nur Legacy SQL verwenden. – clbarrineau

Antwort

0

Ein paar Anregungen, wenn Sie möchten, können Tableau Support kontaktieren zu fragen, was der Status in der Lage, Standard-SQL zu verwenden, wie gut ist. In einigen Tools ist es möglich, Standard-SQL zu erzwingen, indem Sie #standardSQL an die Spitze der Abfrage setzen.

Für Legacy-SQL müssen Sie anstelle des Komma-Operators mit UNNESTFLATTEN verwenden. So etwas wie FLATTEN(XXXX.YYYY.SKU_STR_SLS_20141201, DAILY_SALES.SLS_DT) zum Beispiel. Da Sie die Zeilennummern vor dem Reduzieren jedoch berechnen möchten, müssen Sie möglicherweise FLATTEN auf die Unterabfrage selbst anwenden. Mein Legacy-SQL ist ein wenig eingerostet, deshalb möchte ich Sie nicht mit einer nicht-funktionalen Abfrage in die Irre führen, aber werfen Sie einen Blick auf einige der anderen SO-Fragen über, um zu sehen, wie es verwendet wird.