TableauのFIND関数は、文字列の中から特定の文字や語句がどこにあるかを検索する関数です。
文字列処理やデータ整形の場面でよく使われ、**「何文字目に〇〇があるか」**を調べる用途で非常に便利です。
FIND関数とは?
FIND関数は、指定文字列の中に検索対象の文字や語句があるかを探し、**最初に見つかった位置(1始まり)**を返します。
例:
FIND("福井県", "福") → 結果:1
FIND("福福福井県", "福") → 結果:1
FIND("井福県", "福") → 結果:2
FIND("東京都", "福") → 結果:0(見つからない)
注意:「0」はエラーではなく「見つからなかった」という正常な結果です。
FIND関数の構文と引数
FIND(対象文字列, 検索文字列 [, 開始位置])
- 対象文字列:検索対象となる文字列(例:「住所」「製品ID」など)
- 検索文字列:見つけたい文字や単語(例:「@」や「県」)
- 開始位置(省略可):何文字目から検索を始めるか(1から始まる)
例:2文字目以降から探す →
FIND([文字列], "県", 2)
FINDNTH関数との違い|n番目に現れる位置を探す
FIND関数では最初に見つかった位置しか返せませんが、FINDNTH関数を使えば2回目、3回目…の出現位置も取得可能です。
FINDNTH関数の構文
FINDNTH(対象文字列, 検索文字列, n)
- 例:3回目に出てくる「,」の位置を探す
FINDNTH("A,B,C,D,E", ",", 3) → 結果:5
REGEXP_REPLACEとの組み合わせで複数パターンを抽出
FINDは単一の文字列を探すのに向いていますが、複数パターンに対応するには正規表現(REGEXP_REPLACE)との併用が有効です。
FIND(
REGEXP_REPLACE([都道府県], "埼玉県|神奈川県|群馬県|茨城県|栃木県", "@"),
"@"
)
→ 該当する県名をまとめて「@」に置き換え、その位置をFINDで取得。
FIND関数の具体的な使い方(実務例)
メールアドレスからユーザー名を取得
LEFT([メール], FIND([メール], "@") - 1)
例:「mail@fc-datascience.com」 → 結果:「mail」
メールアドレスからドメイン部分を取得
MID([メール], FIND([メール], "@") + 1)
結果:「fc-datascience.com」
製品コードから区切り位置を探して分解
LEFT([製品ID], FIND([製品ID], "-") - 1)
→ 製品IDが「A123-B456」のとき、区切り前「A123」を抽出。
FIND関数とSPLIT関数の違いと使い分け
関数名 | 概要 | 向いている用途 |
---|---|---|
FIND | 指定文字列が何文字目にあるかを返す | 特定の位置取得・部分抽出 |
SPLIT | 指定区切り文字で分割し、n番目の要素を取得 | 構造がはっきりした文字列 |
SPLITが使えるなら基本的にそちらの方が簡潔です。
ただし、動的な検索や位置情報を使った柔軟な処理はFINDの方が適しています。
よくある質問(FAQ)
Q. 位置は0始まりですか?1始まりですか?
→ Tableauでは1始まりです。文字列の最初の文字が1文字目です。
Q. 見つからなかった場合の返り値は?
→ 「0」です。計算時にはこの点に注意してIF文などで分岐処理を入れるのがベスト。
Q. 複数出現した場合は?
→ FINDは最初に見つかったものだけを返します。2回目以降はFINDNTHで対応可能です。
まとめ
FIND関数は、Tableauにおける文字列検索・処理の基本関数のひとつです。特定文字の位置を調べたり、文字列を分解したりと、実務での応用範囲が非常に広いのが特徴です。
FINDとFINDNTH、そしてSPLITの使い分けを理解すれば、ほぼすべての文字列操作に対応可能です。
正規表現と組み合わせることで、より複雑な条件に柔軟に対応できるようになります。
Comment