1
別のネストされたフィールドの値と一致するga_sessions_テーブルのsourcePropertyDisplayNameを更新しようとしています。私はここでこの答えが見つかりました:別のネストされたフィールドを条件として使用してBigQueryのネストされたフィールドを更新します。
Update nested field in BigQuery table
をしかし、これはTRUE WHERE非常に単純なを持っています。特定のhits.eventInfo.eventCategoryと一致する場合にのみ適用したいと考えています。
UPDATE `dataset_name`.`ga_sessions_20170720`
SET hits =
ARRAY(
SELECT AS STRUCT * REPLACE(
(SELECT AS STRUCT sourcePropertyInfo.* REPLACE('updated text' AS
sourcePropertyDisplayName)) AS sourcePropertyInfo)
FROM UNNEST(hits)
)
WHERE ARRAY(
SELECT AS STRUCT eventInfo.eventCategory
FROM UNNEST(hits)
) LIKE '%SEARCH%'
しかし、私は現在、次のエラー取得しています:
Error: No matching signature for operator LIKE for argument types:
ARRAY<STRUCT<eventCategory STRING>>, STRING. Supported signatures: STRING
LIKE STRING; BYTES LIKE BYTES at [8:7]
私は別の値を使用して、1つのネストされたフィールドを更新することができますどのようにここで
は、私がこれまで持っているものですWHERE句?
以下おかげミハイルのようにする必要があります。 'UPDATE dataset_name.ga_sessions_20170720 SETヒット= ARRAY( SELECT AS STRUCT *はsourcePropertyInfo AS(STRUCT sourcePropertyInfo AS SELECT * sourcePropertyDisplayName AS( '更新 テキスト')REPLACE)( をREPLACE):私はにクエリを変更しましたUNNEST(ヒット) FROM )EXISTS h.eventInfo.eventCategory LIKE '%の検索%' ) ' 時間 AS( はUNNEST(ヒットから1をSELECT)そして、私は今、取得 : 'エラー:リソースをクエリの実行中に超過しました。 " 0行が正常に更新されました。これについて何かできますか? – Jimbol4
WHERE句がうまく動作するかどうかをテストすることをお勧めします。これは、あなたの質問の焦点だったので、これを行うには、\ datetet_name.ga_sessions_20170720 \ 'からselect count(1)を実行してください。 WHERE EXISTS(SELECT 1 FROM hEventInfo.eventCategory LIKE '%SEARCH%') - 最低でもWHEREが動作するか、おそらく 'Resources exceeded'エラーの原因であることが分かります。それがうまくいくなら - エラーを解決するために私は考えている別の質問を投稿するべきです:o) –
ありがとうMikhail。クエリの実行は機能するので、リソースの問題を調査し、必要に応じて別の問題を投稿します。 – Jimbol4