2016-11-01 2 views
1

ich eine Tabellenstruktur haben (Tabellenname: Recalled_transaction) wie folgt:Big Abfrage DML Insert-select wie in wiederholten Tabellen

[{ 
"name": "STR_NBR", 
"type": "STRING", 
"mode": "NULLABLE" 
}, 
{ 
"name": "RGSTR_NBR", 
"type": "INTEGER", 
"mode": "NULLABLE" 
}, 
{ 
"name": "POS_TRANS_ID", 
"type": "INTEGER", 
"mode": "NULLABLE" 
}, 
{ 
"name": "SLS_DT", 
"type": "DATE", 
"mode": "NULLABLE" 
}, 
{ 
"name": "TRANS_ORIG_SRC", 
"type": "RECORD", 
"mode": "REPEATED", 
"fields": [ 
    { 
    "name": "POS_APPL_TYP_CD", 
    "type": "STRING", 
    "mode": "NULLABLE" 
    }, 
    { 
    "name": "USER_ID", 
    "type": "STRING", 
    "mode": "NULLABLE" 
    } 
] 
}, 
{ 
"name": "RECALLED_TXN", 
"type": "RECORD", 
"mode": "REPEATED", 
"fields": [ 
    { 
    "name": "POS_SEQ_NBR", 
    "type": "STRING", 
    "mode": "REPEATED" 
    }, 
    { 
    "name": "SUB_SYS_CD", 
    "type": "STRING", 
    "mode": "NULLABLE" 
    } 
] 
} 
] 

Ich möchte aus einem Satz von regulären Tabellen in diese Struktur einzufügen Einsatz mit -Wählen Sie als (DML in Standard-SQL). Hat jemand schon mal gemacht. Jede Hilfe wird geschätzt.

Dank

+0

Haben Sie sich die Dokumente angesehen? Es gibt viele Beispiele dort - https://cloud.google.com/bigquery/sql-reference/dml-syntax –

+0

Ich denke, dass seine Frage weniger DML spezifisch ist, aber eher, wie man korrekte Abfrage baut, um in Zielschema zu passen, das ich Zweifel werden wir in der Lage sein zu beantworten, basierend auf nur erwartete Ausgabeinformationen in Frage –

+0

Meine aktuelle Anforderung ist, dass ich Daten in zwei nicht verschachtelten Tabellen habe. Eine Tabelle (table1) enthält STR_NBR, POS_TRANS_ID, RGSTR_NBR und eine weitere (table2) mit POS_SEQ_NBR, SIB_SYS_CD mit über 4 Feldern. Derzeit habe ich keine Daten für TRANS_ORIG_SRC, die leer gelassen werden können. Ich habe select mit array_agg (struct .... es erstellt einen Datensatz von NULL für TRANS_ORIG_SRC. Also habe ich versucht "insert select as" zu verwenden und konnte nicht herausfinden, wie man in das ARRAY von Structs einfügt. – DWPro

Antwort

1

habe ich eine Tabelle mit demselben Schema und zusammen eine Beispielabfrage in sie einzufügen. In Ihrem speziellen Fall, da Sie zwei Tabellen haben, müssen Sie wahrscheinlich JOIN sie und dann GROUP BY verwenden.

INSERT mydataset.SampleDmlTable 
    (STR_NBR, RGSTR_NBR, POS_TRANS_ID, SLS_DT, TRANS_ORIG_SRC, RECALLED_TXN) 
WITH T AS (
    SELECT CAST(x AS STRING) AS STR_NBR, 
    10 - x AS RGSTR_NBR, 
    x AS POS_TRANS_ID, 
    DATE_SUB(CURRENT_DATE(), INTERVAL x DAY) AS SLS_DT, 
    CONCAT('foo_', CAST(x AS STRING)) AS POS_APPL_TYP_CD, 
    CAST(x AS STRING) AS USER_ID, 
    [CONCAT('bar_', CAST(x AS STRING)), 'baz'] AS POS_SEQ_NBR, 
    CAST(10 - x AS STRING) AS SUB_SYS_CD 
    FROM UNNEST([1, 1, 0, 3, 2, 2, 2]) AS x 
) 
SELECT 
    STR_NBR, 
    RGSTR_NBR, 
    POS_TRANS_ID, 
    SLS_DT, 
    ARRAY_AGG(STRUCT(POS_APPL_TYP_CD, USER_ID)) AS TRANS_ORIG_SRC, 
    ARRAY_AGG(STRUCT(POS_SEQ_NBR, SUB_SYS_CD)) AS RECALLED_TXN 
FROM T 
GROUP BY 1, 2, 3, 4; 
Verwandte Themen