2017-09-14 1 views
0

bigqueryには100列以上のテーブルがあり、70万以上の行があります。私は列のいずれかに値 'FINISHED'が含まれている行を抽出するためのクエリを書くことができるかどうかを調べたいと思います。以下はBigquery列に 'FINISHED'が含まれているテーブルから選択

+0

私はこれが可能ではないと思います。 – Daniel

+1

@ダニエル - 確かにそれは可能です:o)BigQueryと - 回答を参照 –

+0

あなたは低レートです。 SOの重要な点 - 投稿された回答の左側のチェックボックスの下にあるチェックマークを使用して、「受け入れられた回答をマークする」ことができます。重要な理由については、http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#5235を参照してください。答えに投票することも重要です。役に立った答えを投票してください。 ...誰かがあなたの質問に答えるときに何をすべきかを調べることができます - http://stackoverflow.com/help/someone-answers。これらの単純なルールに従えば、あなた自身の評判スコアを上げると同時に、私たちはあなたの質問に答えるために動機づけることができます:o)考慮してください! –

答えて

1

BigQueryの標準SQL はあなたのために良いスタートであるべきです:)

#standardSQL 
SELECT <columns to output> 
FROM yourTable AS t 
WHERE REGEXP_CONTAINS(LOWER(TO_JSON_STRING(t)), 'finished') 

あなたがテストすることができます/ダミーデータ以下

#standardSQL 
WITH yourTable AS (
    SELECT 'a' AS x, 'b' AS y, 'c' AS z UNION ALL 
    SELECT 'finished', '', '' UNION ALL 
    SELECT '', 'Bigquery Select from table where any column contains "FINISHED"','' UNION ALL 
    SELECT '', '', 'aaa' UNION ALL 
    SELECT 'finished', 'bbb', 'finished' 
) 
SELECT * 
FROM yourTable AS t 
WHERE REGEXP_CONTAINS(LOWER(TO_JSON_STRING(t)), 'finished') 

でそれで遊ぶの更新

注:少なくとも1つの列名の一部として検索語を指定した場合、上記のようにすべての行が返されます。これを解決するために - あなたはもっとたとえば

コーディング少しを投資する必要があるだろう、(レコードまたは反復なしで)簡単なスキーマのために、これはあなたが以下の

でこれをテストすることができ

#standardSQL 
SELECT <columns to output> 
FROM yourTable AS t 
WHERE (SELECT COUNTIF(SPLIT(zzz, ':')[SAFE_OFFSET(1)] LIKE '%finished%') 
    FROM UNNEST(SPLIT(SUBSTR(LOWER(TO_JSON_STRING(t)),2,LENGTH(TO_JSON_STRING(t))-2))) AS zzz 
) > 0 

だろう

#standardSQL 
WITH yourTable AS (
    SELECT 'a' AS x, 'b' AS y, 'c' AS col_finished UNION ALL 
    SELECT 'finished', '', '' UNION ALL 
    SELECT '', 'Bigquery Select from table where any column contains "FINISHED"','' UNION ALL 
    SELECT '', '', 'aaa' UNION ALL 
    SELECT 'finished', 'bbb', 'finished' 
) 
SELECT * 
FROM yourTable AS t 
WHERE (SELECT COUNTIF(SPLIT(zzz, ':')[SAFE_OFFSET(1)] LIKE '%finished%') 
    FROM UNNEST(SPLIT(SUBSTR(LOWER(TO_JSON_STRING(t)),2,LENGTH(TO_JSON_STRING(t))-2))) AS zzz 
) > 0 
+0

面白い、ありがとう! – Daniel

関連する問題