NestedフィールドとRepeatedフィールドを持つテーブルにレコードを挿入しようとしています。 STRUCTとARRAYキーワードはそれぞれStandard SQLで使用できることがわかっています。BigQuery Legacy SQL - ネストされたフィールドを持つテーブルに挿入するには?
レガシーSQLのSTRUCTおよびARRAYキーワードに相当するものは、レコードをネストされたフィールドと繰り返しフィールドに挿入するものですか?
NestedフィールドとRepeatedフィールドを持つテーブルにレコードを挿入しようとしています。 STRUCTとARRAYキーワードはそれぞれStandard SQLで使用できることがわかっています。BigQuery Legacy SQL - ネストされたフィールドを持つテーブルに挿入するには?
レガシーSQLのSTRUCTおよびARRAYキーワードに相当するものは、レコードをネストされたフィールドと繰り返しフィールドに挿入するものですか?
私はあなたがbq command line tool - How to insert into Big query tables that has nested fields?
で提供された例を再利用しています、それは従来のSQLのためのものであり、従来のSQL
注用Javascript UDFのインラインバージョンを使用して、以下試してみてください:デフォルトでは、BigQueryのレガシーSQLは、任意の結果を平坦化するので、作ります
SELECT Employee_id, Name, Age, Department.*, Location.* FROM JS((
SELECT Employee_id, Name, Age, Department_id, Department_Name, Department_Code, e.Location_id AS Location_id, Country, State, City
FROM (SELECT e.Employee_id AS Employee_id, e.Name AS Name, e.Age AS Age,
e.Department_id AS Department_id, d.Department_Name AS Department_Name, d.Department_Code AS Department_Code, e.Location_id AS Location_id
FROM Employee e JOIN Department d ON e.Department_id = d.Department_id) AS e
JOIN Location l ON e.Location_id = l.Location_id
),
// input columns
Employee_id, Name, Age, Department_id, Department_Name, Department_Code, Location_id, Country, State, City,
// output schema
"[
{'name': 'Employee_id', 'type': 'INTEGER', 'mode': 'NULLABLE'},
{'name': 'Name', 'type': 'STRING', 'mode': 'NULLABLE'},
{'name': 'Age', 'type': 'INTEGER', 'mode': 'NULLABLE'},
{'name': 'Department', 'type': 'RECORD', 'mode': 'NULLABLE', 'fields': [
{'name': 'Department_id', 'type': 'STRING', 'mode': 'NULLABLE'},
{'name': 'Department_Name', 'type': 'STRING', 'mode': 'NULLABLE'},
{'name': 'Department_Code', 'type': 'STRING', 'mode': 'NULLABLE'}
]},
{'name': 'Location', 'type': 'RECORD', 'mode': 'NULLABLE', 'fields': [
{'name': 'Location_id', 'type': 'STRING', 'mode': 'NULLABLE'},
{'name': 'Country', 'type': 'STRING', 'mode': 'NULLABLE'},
{'name': 'State', 'type': 'STRING', 'mode': 'NULLABLE'},
{'name': 'City', 'type': 'STRING', 'mode': 'NULLABLE'}
]}
]",
// function
"function(r, emit){
emit({
Employee_id: r.Employee_id, Name: r.Name, Age: r.Age,
Department: {Department_id:r.Department_id, Department_Name:r.Department_Name, Department_Code:r.Department_Code},
Location: {Location_id:r.Location_id, Country:r.Country, State:r.State, City:r.City}
});
}"
)
あなたが先テーブルを設定し、trueに
Allow Large Results
を設定(またはWeb UIでそれを確認してください)と
Flatten Results
falseに(またはWeb UIでそれをオフに)必ずご注意:私はここUDFのインラインバージョンを使用しています簡単にするために表示とテスト。インラインバージョンは推奨されておらず、公式にはサポートされていません。しかし、サポートされているバージョンに簡単に変換することができます。
User-Defined Functions in Legacy SQL
P.S.標準SQLがオプションになる前に、これまでの作業は大変助かりましたが、今はStandard SQLをよりエレガントにして、レガシーSQLを使用する大きな理由は何ですか?フィールド
ありがとうございます。 BigQueryとの接続にtableau 9.3を使用していますが、標準SQLをサポートしていないようです。助言がありますか? – Vetri
Tableauバージョン9.3では、それを超えて何かにアップグレードすることを望んでいません。たとえば、[Tableauのアップグレードガイド](http://www.tableau.com/support/server-upgrade)を読むことができます。そのバージョンのTableauは6ヶ月以上前にリリースされました。 –
Tableauをバージョン10.1にアップグレードし、追加機能を備えたBigQuery Standard SQLを使用します。皆さんありがとう。 – Vetri
私は明白な質問をするでしょう...なぜこの目的のためにレガシーSQLを使用するのですか?クエリー結果のネストされたフィールドと繰り返しフィールドの作成には、かなり厳しい制限があります。 –
@vetri - Elliotが述べているように、ソリューションでBigQueryで標準SQLを使用し、従来のSQLから抜け出すべきです。 –
私は、標準SQLの利点を理解しています。したがって、標準SQLに移行します。皆さんありがとう。 – Vetri