文字列関数
この記事は、文字列関数と 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 です。 オプションの数値引数 |
例 | 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 |
注 |
サポートしている RegEx については、その他の関数についてのドキュメント(新しいウィンドウでリンクが開く)も参照してください。 |
LEFT
構文 | LEFT(string, number) |
出力 | 文字列 |
定義 | 文字列の左端から <number> 個の文字を返します。 |
例 | LEFT("Matador", 4) = "Mata" |
注 | MID と RIGHT も参照してください。 |
LEN
構文 | LEN(string) |
出力 | 数値 |
定義 | 文字列の長さを返します。 |
例 | LEN("Matador") = 7 |
注 | 空間関数(新しいウィンドウでリンクが開く) LENGTH と混同しないでください。 |
LOWER
構文 | LOWER(string) |
出力 | 文字列 |
定義 | 指定された <string> をすべて小文字にして返します。 |
例 | LOWER("ProductVersion") = "productversion" |
注 | UPPER と PROPER も参照してください。 |
LTRIM
構文 | LTRIM(string) |
出力 | 文字列 |
定義 | 指定された <string> を先頭の空白を削除して返します。 |
例 | LTRIM(" Matador ") = "Matador " |
注 | RTRIM も参照してください。 |
MAX
構文 | MAX(expression) または MAX(expr1, expr2) |
出力 | 引数と同じデータ型、または引数の一部が Null の場合 NULL 。 |
定義 | 2 つの引数の最大値を返します (2 つの引数は同じ型でなければなりません)。
|
例 | MAX(4,7) = 7 |
注 | 文字列の場合
データベースのデータ ソースでは、 日付の場合 日付の場合、 集計として
比較として
|
MID
構文 | (MID(string, start, [length]) |
出力 | 文字列 |
定義 | 指定された オプションの数値引数 |
例 | MID("Calculation", 2) = "alculation" MID("Calculation", 2, 5) ="alcul" |
注 | サポートしている RegEx については、その他の関数についてのドキュメント(新しいウィンドウでリンクが開く)も参照してください。 |
MIN
構文 | MIN(expression) または MIN(expr1, expr2) |
出力 | 引数と同じデータ型、または引数の一部が Null の場合 NULL 。 |
定義 | 2 つの引数の最小値を返します (2 つの引数は同じ型でなければなりません)。
|
例 | MIN(4,7) = 4 |
注 | 文字列の場合
データベースのデータ ソースでは、 日付の場合 日付の場合、 集計として
比較として
|
PROPER
構文 | PROPER(string) |
出力 | 文字列 |
定義 | 指定された |
例 | PROPER("PRODUCT name") = "Product Name" PROPER("darcy-mae") = "Darcy-Mae" |
注 | スペースや句読点などの英数字以外の文字も区切り文字として扱われます。 |
データベースの制限 | PROPER は、一部のフラット ファイルおよび抽出でのみ使用できます。PROPER をサポートしていないデータ ソースで PROPER を使用する必要がある場合は、抽出の使用を検討してください。 |
REPLACE
構文 | REPLACE(string, substring, replacement |
出力 | 文字列 |
定義 | <string> で <substring> を検索し、それを <replacement> で置き換えます。<substring> が見つからない場合、文字列は変更されません。 |
例 | REPLACE("Version 3.8", "3.8", "4x") = "Version 4x" |
注 | その他の関数についてのドキュメント(新しいウィンドウでリンクが開く)の REGEXP_REPLACE も参照してください。 |
RIGHT
構文 | RIGHT(string, number) |
出力 | 文字列 |
定義 | 文字列の右端から <number> 個の文字を返します。 |
例 | RIGHT("Calculation", 4) = "tion" |
注 | LEFT と MID も参照してください。 |
RTRIM
構文 | RTRIM(string) |
出力 | 文字列 |
定義 | 指定された <string> を末尾の空白を削除して返します。 |
例 | RTRIM(" Calculation ") = " Calculation" |
注 | LTRIM と TRIM も参照してください。 |
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" |
注 | 文字列は区切り文字とトークンが交互に連続する文字列として解釈されます。そのため、文字列が
サポートしている 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) |
出力 | ブール値 |
定義 | string が substring で始まる場合は、true を返します。先頭の空白は無視されます。 |
例 | STARTSWITH("Matador, "Ma") = TRUE |
注 | CONTAINS、およびサポートしている REGEX については、その他の関数についてのドキュメント(新しいウィンドウでリンクが開く)も参照してください。 |
TRIM
構文 | TRIM(string) |
出力 | 文字列 |
定義 | 指定された <string> を、先頭と末尾の空白を削除して返します。 |
例 | TRIM(" Calculation ") = "Calculation" |
注 | LTRIM と RTRIM も参照してください。 |
UPPER
構文 | UPPER(string) |
出力 | 文字列 |
定義 | 指定された <string> をすべて大文字にして返します。 |
例 | UPPER("Calculation") = "CALCULATION" |
注 | PROPER と LOWER も参照してください。 |
文字列計算の作成
次の手順に従って、文字列計算の作成方法を学習してください。
Tableau Desktop で、Tableau に付属のサンプル - スーパーストア保存済みデータ ソースに接続します。
ワークシートに移動します。
[データ] ペインの [ディメンション] から、"Order ID (注文 ID)"を[行] シェルフまでドラッグします。
各注文 ID には、国 (たとえば CA や US)、年 (2011)、注文番号 (100006) が含まれています。この例では、フィールドから注文番号のみを取り込む計算を作成します。
[分析] > [計算フィールドの作成] を選択します。
開いた計算エディターで、次の操作を実行します。
計算フィールドに「Order ID Numbers (注文 ID 番号)」と名前を付けます。
次の式を入力します。
RIGHT([Order ID], 6)
この式は、文字列の右から指定された桁数 (6) を新しいフィールドに取り込みます。
そのため、
RIGHT('CA-2011-100006' , 6)
= '100006' となります。終了したら、[OK] をクリックします。
新しい計算フィールドは、[データ] ペインの [ディメンション] に表示されます。他のフィールドと同様に、このフィールドを 1 つ以上のビジュアライゼーションで使用できます。
[データ] ペインから、"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 | 左のみ | 10 | Impala はバージョン 2.3.0 以降でサポートされます。 |
Microsoft SQL Server | 両方 | 10 | 2008 以降 |