文字列関数

この記事は、文字列関数と Tableau での用途について紹介します。また、例を使用して文字列計算を作成する方法を示します。

文字列関数を使う理由

文字列関数は、文字列データ (つまりテキストデータ) の操作を可能にします。Tableau は、文字列を比較するときに、最新の International Components for Unicode (ICU) ライブラリを使用します。文字列の並べ替えや比較の方法は言語とロケールの両方に基づいています。ICU が継続的な更新と言語サポートの向上に伴い、Viz が変更される可能性があります。

たとえば、全顧客の姓名を含むフィールドがあるとします。あるメンバーは Jane Johnson です。文字列関数を使って、全顧客の姓だけを新しいフィールドに取り込むことができます。

計算結果は次のようになります。

SPLIT([Customer Name], ' ', 2)

そのため、SPLIT('Jane Johnson' , ' ', 2) = 'Johnson' となります。

Tableau で利用可能な文字列関数

ASCII

構文ASCII(string)
出力数値
定義<string> の最初の文字の ASCII コードを返します。
ASCII('A') = 65
これは CHAR 関数の逆です。

CHAR

構文CHAR(number)
出力文字列
定義ASCII コード <number> で符号化される文字を返します。
CHAR(65) = 'A'
これは ASCII 関数の逆です。

CONTAINS

構文CONTAINS(string, substring)
出力ブール値
定義指定された文字列に指定された部分文字列が含まれている場合、true を返します。
CONTAINS("Calculation", "alcu") = true
論理関数(新しいウィンドウでリンクが開く) IN およびサポートしている RegEx については、その他の関数についてのドキュメント(新しいウィンドウでリンクが開く)も参照してください。

ENDSWITH

構文ENDSWITH(string, substring)
出力ブール値
定義特定の文字列が指定されたサブ文字列で終わる場合は、true を返します。行末の空白は無視されます。
ENDSWITH("Tableau", "leau") = true
サポートしている RegEx については、その他の関数についてのドキュメント(新しいウィンドウでリンクが開く)も参照してください。

FIND

構文FIND(string, substring, [start])
出力数値
定義

文字列内の部分文字列のインデックス位置を返します。部分文字列が見つからない場合は 0 を返します。文字列の最初の文字の位置は 1 です。

オプションの数値引数 start を追加した場合、関数は開始位置より前に出現する部分文字列のインスタンスをすべて無視します。

FIND("Calculation", "alcu") = 2
FIND("Calculation", "Computer") = 0
FIND("Calculation", "a", 3) = 7
FIND("Calculation", "a", 2) = 2
FIND("Calculation", "a", 8) = 0
サポートしている RegEx については、その他の関数についてのドキュメント(新しいウィンドウでリンクが開く)も参照してください。

FINDNTH

構文FINDNTH(string, substring, occurrence)
出力数値
定義指定した文字列内の部分文字列が n 番目に現れる位置を返します。ここで、n は引数 occurrence によって定義されます。
FINDNTH("Calculation", "a", 2) = 7

FINDNTH はすべてのデータ ソースで使用できるわけではありません。

サポートしている RegEx については、その他の関数についてのドキュメント(新しいウィンドウでリンクが開く)も参照してください。

LEFT

構文 LEFT(string, number)
出力文字列
定義文字列の左端から <number> 個の文字を返します。
LEFT("Matador", 4) = "Mata"
MIDRIGHT も参照してください。

LEN

構文LEN(string)
出力数値
定義文字列の長さを返します。
LEN("Matador") = 7
空間関数(新しいウィンドウでリンクが開く) LENGTH と混同しないでください。

LOWER

構文LOWER(string)
出力文字列
定義指定された <string> をすべて小文字にして返します。
LOWER("ProductVersion") = "productversion"
UPPERPROPER も参照してください。

LTRIM

構文 LTRIM(string)
出力文字列
定義指定された <string> を先頭の空白を削除して返します。
LTRIM(" Matador ") = "Matador "
RTRIM も参照してください。

MAX

構文MAX(expression) または MAX(expr1, expr2)
出力引数と同じデータ型、または引数の一部が Null の場合 NULL 
定義

2 つの引数の最大値を返します (2 つの引数は同じ型でなければなりません)。

MAX は集計として単一フィールドにも適用できます。

MAX(4,7) = 7
MAX(#3/25/1986#, #2/20/2021#) = #2/20/2021#
MAX([Name]) = "Zander"

文字列の場合

MAX は、通常、アルファベット順で最後に来る値です。

データベースのデータ ソースでは、MAX の文字列値は、その列でデータベースが定義しているソート順が最も高い値です。

日付の場合

日付の場合、MAX は最新の日付です。MAX が集計の場合、結果には日付の階層がありません。MAX が比較の場合、結果には日付の階層が保持されます。

集計として

MAX(expression) は集計関数であり、集計された単一の結果を返します。Viz では AGG(expression) と表示されます。

比較として

MAX(expr1, expr2) は 2 つの値を比較し、行レベルの値を返します。

MIN も参照してください。

MID

構文(MID(string, start, [length])
出力文字列
定義

指定された start 位置から始まる文字列を返します。文字列の最初の文字の位置は 1 です。

オプションの数値引数 length を追加した場合、返される文字列には、その引数に相当する数の文字だけが含まれます。

MID("Calculation", 2) = "alculation"
MID("Calculation", 2, 5) ="alcul"
サポートしている RegEx については、その他の関数についてのドキュメント(新しいウィンドウでリンクが開く)も参照してください。

MIN

構文MIN(expression) または MIN(expr1, expr2)
出力引数と同じデータ型、または引数の一部が Null の場合 NULL 
定義

2 つの引数の最小値を返します (2 つの引数は同じ型でなければなりません)。

MIN は集計として単一フィールドにも適用できます。

MIN(4,7) = 4
MIN(#3/25/1986#, #2/20/2021#) = #3/25/1986#
MIN([Name]) = "Abebi"

文字列の場合

MIN は、通常、アルファベット順で最初に来る値です。

データベースのデータ ソースでは、MIN の文字列値は、その列でデータベースが定義しているソート順が最も低い値です。

日付の場合

日付の場合、MIN は最も早い日付です。MIN が集計の場合、結果には日付の階層がありません。MIN が比較の場合、結果には日付の階層が保持されます。

集計として

MIN(expression) は集計関数であり、集計された単一の結果を返します。Viz では AGG(expression) と表示されます。

比較として

MIN(expr1, expr2) は 2 つの値を比較し、行レベルの値を返します。

MAX も参照してください。

PROPER

構文PROPER(string)
出力文字列
定義

指定された <string> を各単語の最初の文字を大文字、残りの文字を小文字にして返します。

PROPER("PRODUCT name") = "Product Name"
PROPER("darcy-mae") = "Darcy-Mae"

スペースや句読点などの英数字以外の文字も区切り文字として扱われます。

LOWERUPPER も参照してください。

データベースの制限PROPER は、一部のフラット ファイルおよび抽出でのみ使用できます。PROPER をサポートしていないデータ ソースで PROPER を使用する必要がある場合は、抽出の使用を検討してください。

REPLACE

構文REPLACE(string, substring, replacement
出力文字列
定義<string><substring> を検索し、それを <replacement> で置き換えます。<substring> が見つからない場合、文字列は変更されません。
REPLACE("Version 3.8", "3.8", "4x") = "Version 4x"
その他の関数についてのドキュメント(新しいウィンドウでリンクが開く)REGEXP_REPLACE も参照してください。
構文RIGHT(string, number)
出力文字列
定義文字列の右端から <number> 個の文字を返します。
RIGHT("Calculation", 4) = "tion"
LEFTMID も参照してください。

RTRIM

構文RTRIM(string)
出力文字列
定義指定された <string> を末尾の空白を削除して返します。
RTRIM(" Calculation ") = " Calculation"
LTRIMTRIM も参照してください。

SPACE

構文SPACE(number)
出力文字列 (具体的にはスペースのみ)
定義指定された文字数分の空白からなる文字列を返します。
SPACE(2) = "  "

SPLIT

構文SPLIT(string, delimiter, token number)
出力文字列
定義指定した文字列を基に、区切り文字を使用して連続したトークンに文字列を分割したサブストリングを返します。
SPLIT ("a-b-c-d", "-", 2) = "b"
SPLIT ("a|b|c|d", "|", -2) = "c"

文字列は区切り文字とトークンが交互に連続する文字列として解釈されます。そのため、文字列が abc-defgh-i-jkl で、区切り文字が「-」の場合、トークンは (1) abc、(2) defgh、(3) i、(4) jlk になります。

SPLIT はトークン番号に対応するトークンを返します。トークン番号が正の場合、トークンは文字列の左端からカウントされます。トークン番号が負の場合、トークンは文字列の右からカウントされます。

サポートしている REGEX については、その他の関数についてのドキュメント(新しいウィンドウでリンクが開く)も参照してください。

データベースの制限

split コマンドと custom split コマンドは、次の種類のデータ ソースで使用できます。Tableau データ抽出、Microsoft Excel、テキスト ファイル、PDF ファイル、Salesforce、OData、Microsoft Azure Market Place、Google アナリティクス、Vertica、Oracle、MySQL、PostgreSQL、Teradata、Amazon Redshift、Aster Data、Google Big Query、Cloudera Hadoop Hive、Hortonworks Hive、Microsoft SQL Server。

データ ソースによっては、文字列の分割に制限があります。このトピックで後述する SPLIT 関数の制限事項を参照してください。

STARTSWITH

構文STARTSWITH(string, substring)
出力ブール値
定義stringsubstring で始まる場合は、true を返します。先頭の空白は無視されます。
STARTSWITH("Matador, "Ma") = TRUE
CONTAINS、およびサポートしている REGEX については、その他の関数についてのドキュメント(新しいウィンドウでリンクが開く)も参照してください。

TRIM

構文TRIM(string)
出力文字列
定義指定された <string> を、先頭と末尾の空白を削除して返します。
TRIM(" Calculation ") = "Calculation"
LTRIMRTRIM も参照してください。

UPPER

構文UPPER(string)
出力文字列
定義指定された <string> をすべて大文字にして返します。
UPPER("Calculation") = "CALCULATION"
PROPERLOWER も参照してください。

文字列計算の作成

次の手順に従って、文字列計算の作成方法を学習してください。

  1. Tableau Desktop で、Tableau に付属のサンプル - スーパーストア保存済みデータ ソースに接続します。

  2. ワークシートに移動します。

  3. [データ] ペインの [ディメンション] から、"Order ID (注文 ID)"[行] シェルフまでドラッグします。

    各注文 ID には、国 (たとえば CA や US)、年 (2011)、注文番号 (100006) が含まれています。この例では、フィールドから注文番号のみを取り込む計算を作成します。

  4. [分析] > [計算フィールドの作成] を選択します。

  5. 開いた計算エディターで、次の操作を実行します。

    • 計算フィールドに「Order ID Numbers (注文 ID 番号)」と名前を付けます。

    • 次の式を入力します。

      RIGHT([Order ID], 6)

      この式は、文字列の右から指定された桁数 (6) を新しいフィールドに取り込みます。

      そのため、RIGHT('CA-2011-100006' , 6) = '100006' となります。

    • 終了したら、[OK] をクリックします。

      新しい計算フィールドは、[データ] ペインの [ディメンション] に表示されます。他のフィールドと同様に、このフィールドを 1 つ以上のビジュアライゼーションで使用できます。

  6. [データ] ペインから、"Order ID Numbers (注文 ID 番号)"[行] シェルフにドラッグします。"Order ID (注文 ID)" の右側に配置します。

    フィールドが変わりました。

データソースによる SPLIT の制限

データ ソースによっては、文字列の分割に制限がある場合があります。次の表は、負のトークン数をサポートするデータ ソースや、データ ソースごとに許可される分割の数に制限があるかどうかを示します。

負のトークン番号を指定する SPLIT 関数は、他のデータ ソースでは有効ですが、これらのデータ ソースでは「このデータ ソースでは、右からの分割はサポートされません。」というエラーを返します。

データ ソース左/右の制約分割の最大数バージョンの制限
Tableau Data Extract両方無制限 
Microsoft Excel両方無制限 
テキスト ファイル両方無制限 
Salesforce両方無制限 
OData両方無制限 
Google アナリティクス両方無制限 
Tableau データ サーバー両方無制限バージョン 9.0 でサポート。
Vertica左のみ10 
Oracle左のみ10 
MySQL両方10 
PostgreSQLバージョン 9.0 より前は左のみ。バージョン 9.0 以降は両方。10 
Teradata左のみ10バージョン 14 以降
Amazon Redshift左のみ10 
Aster Database左のみ10 
Google BigQuery左のみ10 
Hortonworks Hadoop Hive左のみ10 
Cloudera Hadoop左のみ10Impala はバージョン 2.3.0 以降でサポートされます。
Microsoft SQL Server両方102008 以降

関連項目

Tableau で使用する関数

Tableau 関数 (アルファベット順)

Tableau 関数 (カテゴリ別)

Tableau での計算の書式設定

フィードバックをありがとうございます。フィードバックは正常に送信されました。ありがとうございます!