LoginSignup
39
33

More than 5 years have passed since last update.

cross join unnestを利用して、カンマ区切りのデータを単一の列の複数レコードに分解する。

Last updated at Posted at 2016-03-22

「cross join unnest」という関数と「split」関数を使えば実現できます。

サンプル

select
  split_record
from
  tbl_test t1
cross join unnest( --・・・(1)
  split(t1.csv_column, ',') --・・・(2)
) as t (split_records)

処理概要

ざっくり説明すると
(2)のsplit関数で文字列(t1.csv_column)をカンマで分割して、配列にし、
その配列を(1)のcross join unnest関数で、単一の列のレコードに展開します。

イメージ

cross join unnest-1.png

■split関数

split(文字列, 区切り文字)・・・
第1引数の文字列を第2引数の区切り文字で分割し、配列にします。

■cross join unnest関数

cross join unnest(配列) AS t (展開後のカラム名)・・・
第1引数の配列を単一の列のレコードに展開します。
カラム名は第2引数の展開後のカラム名になります。

まとめ

treasureデータなどのビックデータ基盤には、分析時に扱い易いように加工した上で
データが登録されているケースもありますが、必ずしもそうではなく
そのままでは分析に使い辛いようなデータも、登録されていることがあると思います。
今回のご紹介は、csv形式でデータが登録されているが
そのcsvの1区切りを1レコードとして扱いたい場合を例に紹介させて頂きました。
この記事が分析などの業務のお役に立てばと思います。

39
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
33