ある項目の値が、xxx-bbb-cccのようにいくつかの要素で構成されている場合ってありますよね。
その企業独自の判別用項目であったり、単に地名のように都道府県市町村の組み合わせであったりといろいろあります。
SPLIT関数はそういったものを区切り文字で分解し、指定した位置の値を取得してくれます。
目次
SPLIT関数とは?
SPLIT関数は引数で指定した値を、指定した区切り文字で分解し、取得位置(例えば1番目とか)で取得してくれます。
例えば
福井県-福井市-大手
上記を”-“で分解すると
福井県,福井市,大手
3つの要素に分解されます。
1番を指定すれば福井県が返ってきます。
2番なら福井市ですね。
SPLIT関数の書式
SPLIT関数の書式
SPLIT([指定文字列],”区切り文字”.取得位置)
区切り文字は自動的に消えます。
先ほどの地名の例でいくと↓みたいな式になります。
SPLIT([都道府県],"-".1)
カスタム分割でも同じことができる
Tableauにはカスタム分割という機能があります。
こっちの方が手軽です。
↓
使い方
- 区切り文字を入れる
- 分割のスタート位置を入れる
最初から始めるか、最後から始めるか、すべては全部取得 - 取得する列数を選択
何個計算フィールドを作るか決められます、例えば3列なら3個できます。
指定位置ではなく指定文字を抜き出したい時は正規表現
表題みたいなことはSPLITでは難しいです。
正規表現で代用しましょう。
REGEXP_EXTRACT([都道府県],'(東京都|大阪府|愛知県)')
‘(東京都|大阪府|愛知県)’←この中を変えるだけです。
リストにある項目だけを抜き出せます。
区切り文字込みで判定する
場合によっては区切り文字込みで判定させ、かつ指定文字だけ抜き出したい場合もありますよね。
REPLACEで消せばOKです。
REPLACE(
REGEXP_EXTRACT(LOWER([都道府県]),'(-東京都-|-大阪府-|-愛知県-)')
,"-","")
IF&CONTAINSでも一応できる
IF CONTAINS([地名],"東京都")THEN "東京都"ELSEIF CONTAINS([地名],"大阪府")THEN "大阪府"ELSEIF CONTAINS([地名],"愛知県")THEN "愛知県"ELSE "その他"END
ひたすらELSEIFでつないでいくやり方です。
CONTAINSは特定文字列を含む場合にTRUEを返す関数です。
指定文字が入っていたらその文字を返すという人力的な手法ですが、どんな場合でも対応できるため便利です。
シンプルで分かりやすいので結構使われがちです。
IFと組み合わせて区切り文字の条件を変える
IFと組み合わせることで区切り文字の条件を変えるができます。
IF CONTAINS([地名],"都")
THEN SPLIT([地名],"都",1) + "都"
ELSEIF CONTAINS([地名],"県")
THEN SPLIT([地名],"県",1) + "県"
ELSE "その他"
END
まとめ
- 区切り文字と位置がわかるならSPLITが便利
- 位置がわからないなら正規表現を使ってみる
もっといい方法がある場合や、面白いアイディア、不明点などあればコメントにお願いします!
お疲れさまでした!
Comment