DB

BigQueryで区切り文字を使って文字列結合する方法

BigQueryで区切り文字を使って文字列結合する方法

BigQueryで区切り文字を使って文字列結合するしたい

複数のデータをテーブルで管理することができるBigQuery。

1行1行にデータが保存されているが、ときには全ての行のデータを1つに結合して使いたい場合もあるだろう。

そこで今回はBigQueryで区切り文字を使って文字列結合する方法について紹介する。

この記事を書いている人


からさん
システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。最近GCPを色々と習得中。

記事を読むメリット

BigQueryで区切り文字を使って文字列結合する方法がわかる


BigQueryで区切り文字を使って文字列結合する方法

BigQueryで区切り文字を使って文字列結合するには string_agg() の関数を使用する。


使い方を説明する前に、まず使用するデータを用意する。

(select "a" as text)
union all
(select "b" as text)
union all
(select "c" as text)
union all
(select "d" as text)
union all
(select "e" as text)

結果

text
a
b
c
d
e


textカラムに a から e まで5行のデータが存在する。

これらの文字列データを結合するのに string_agg() を使う。

select
string_agg( text, '_') as concat_text
from
(
  (select "a" as text)
  union all
  (select "b" as text)
  union all
  (select "c" as text)
  union all
  (select "d" as text)
  union all
  (select "e" as text)
)

すると文字列が区切り文字 _ で結合された結果が得られる。

concat_text
a_b_c_d_e


string_agg() の第2引数を変更すれば区切り文字を変更できる。

string_agg() の中で order by で順番を指定すると結合する順番を決めることができる。

select
string_agg( text, ':' order by text desc) as concat_text
from
(
  (select "a" as text)
  union all
  (select "b" as text)
  union all
  (select "c" as text)
  union all
  (select "d" as text)
  union all
  (select "e" as text)
)

結果

concat_text
e:d:c:b:a



役立つケース

少年
これ、どんなときに役立つの?
例えば複数の文字列をパイプ | で結合してOR条件のようなテキストを作ったり、空白 で結合して検索文字列のようなテキストを作ったりできますね。
からさん



まとめ

今回はBigQueryで区切り文字を使って文字列結合する方法を紹介した。

結合には string_agg(テキストカラム, "区切り文字") とすると任意の区切り文字を使って文字列のカラムを結合できる。


他にもBigQueryに関する記事もあるので、もし気になったら参考にして欲しい。

コチラもオススメ

KRSW

駆け出し機械学習エンジニア。機械学習、DB、WEBと浅く広い感じ。 Junior machine learning engineer. Not a specialist but a generalist who knows DB, WEB too.

役に立ったらシェアしてくれると励みになります。

にほんブログ村 IT技術ブログへ

-DB
-

Translate »

Copyright© ITips , 2021 All Rights Reserved.