2017-12-19 13 views
0

ため_TABLE_SUFFIXこのクエリは正常に動作します...BigQueryのga_sessions

SELECT page.* FROM `zentinel-datawarehouse.xxx.ga_sessions_20170601` ga, 
UNNEST (hits) hits, 
UNNEST (hits.page) page 

が、私は_table_suffix

SELECT page.* FROM `zentinel-datawarehouse.xxx.ga_sessions_*` ga, 
UNNEST (hits) hits, 
UNNEST (hits.page) page 
WHERE _TABLE_SUFFIX>=20170601 

いけない、それ以上の作品を使用する必要があります...

hits.pageはレコードが繰り返し可能です...月に08または09が正常に動作します。これはレコードNULLなので ANY IDEA ???

よろしく

+0

あなたはそれがうまくいかないと言ったらどういう意味ですか?エラーメッセージ? – Pentium10

+0

エラー:UNNESTで参照される値は配列でなければなりません。 UNNESTには、[3:9]の[STRUCT ]の式が含まれています –

+0

テーブルの接尾辞と作業には2桁しか使用しないでこれをテストします.... –

答えて

1

あなたは以下のエラーメッセージ

ERROR:Values referenced in UNNEST must be arrays. UNNEST contains expression of type STRUCT at [3:9]

を取得する場合、私はいくつかのテーブルが異なるスキーマを持っていると思いますが、スキーマの変更は、それが1月、2月は1つのスキーマを持っていることかもしれません適用されたときに検索してみてくださいそれ以降、更新されたスキーマが更新されました。

Googleアナリティクスのエクスポートでは、このスキーマの変更が頻繁に発生します。

あなたがここでできることは、テーブルを修正することです。たとえば、スキーマを手助けする方向に修正します。 修正を行うことなく、両方のスキーマをターゲットにするために2つの異なるクエリを用意する必要があります(GAチームが外出先で変更する場合は、スキーマが追加されます)。

新しい更新で導入されたすべてのスキーマの変更を前のテーブルに絶えず伝播するスクリプトが必要です。

+0

同意します。私は前にワイルドカードクエリを壊すスキーマの違いに遭遇しました。ワイルドカードはこれらのテーブルのみをカバーするように、同様のスキーマを持つテーブルを新しいデータセットにコピーすることで、その作業を回避しました。 –

0

hits.pageは配列ではなく構造体です。あなたはすでに、 "ヒット"(配列)を十字結合しています。これで十分です。 アレイまたはテーブルを交差結合することはできません。 hits.pageがnullの場合にのみこのステートメントを削除したいとします。

SELECT 
    page.* 
FROM 
    `project.dataset.ga_sessions_201712*` t, t.hits h 
LIMIT 
    1000