case-kの備忘録

日々の備忘録です。データ分析とか基盤系に興味あります。

Cloud LoggingでBigQueryにシンクしたカンマ区切りのデータをスキーマ単位で分割する

アプリケーションのログCloud Loggingに出力してますがBigQuerで扱いたかったので整形しました。1カラム(jsonPayload.message)に次のような形でデータが入っています。

col_1: value_1, col_2: value_2, col_3: value_3, col_4: value_4

配列にして要素を取得してスキーマを与えます。

WITH
  DATA AS (
  SELECT
    SPLIT(jsonPayload.message, ",") AS primes_array
  FROM
    streaming_datatransfer_monitoring_tracker_b.cos_containers_20210109 )
  SELECT
    CASE
      WHEN ARRAY_LENGTH(primes_array)>=1 THEN primes_array[ OFFSET (0)]
  END
    AS col_1,
    CASE
      WHEN ARRAY_LENGTH(primes_array)>=2 THEN primes_array[ OFFSET (1)]
  END
    col_2,
    CASE
      WHEN ARRAY_LENGTH(primes_array)>=3 THEN primes_array[ OFFSET (2)]
  END
    col_3,
    CASE
      WHEN ARRAY_LENGTH(primes_array)>=4 THEN primes_array[ OFFSET (3)]
  END
    col_4
  FROM
    DATA