cross join unnestを利用して、カンマ区切りのデータを単一の列の複数レコードに分解する。
1984 ワード
「cross join unnest」という関数と「split」関数を使えば実現できます。
サンプル
select
split_record
from
tbl_test t1
cross join unnest( --・・・(1)
split(t1.csv_column, ',') --・・・(2)
) as t (split_records)
処理概要
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関数で、単一の列のレコードに展開します。
イメージ
■split関数
split(文字列, 区切り文字)・・・
第1引数の文字列を第2引数の区切り文字で分割し、配列にします。
■cross join unnest関数
cross join unnest(配列) AS t (展開後のカラム名)・・・
第1引数の配列を単一の列のレコードに展開します。
カラム名は第2引数の展開後のカラム名になります。
まとめ
treasureデータなどのビックデータ基盤には、分析時に扱い易いように加工した上で
データが登録されているケースもありますが、必ずしもそうではなく
そのままでは分析に使い辛いようなデータも、登録されていることがあると思います。
今回のご紹介は、csv形式でデータが登録されているが
そのcsvの1区切りを1レコードとして扱いたい場合を例に紹介させて頂きました。
この記事が分析などの業務のお役に立てばと思います。
Author And Source
この問題について(cross join unnestを利用して、カンマ区切りのデータを単一の列の複数レコードに分解する。), 我々は、より多くの情報をここで見つけました https://qiita.com/shohei727/items/80aebf3956d48fb509a6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .