式の構築
式の作成について
式は XM Discover でデータをフィルタリングし、データフィールドを変換するために使用されます。たとえば、式を使用して、日付フィールドの書式設定を変更したり、空のレコードのデータを評価したり、数学計算を実行したりすることができます。
式には 4 つのコンポーネントを含めることができます。
定数
定数は、数値、テキスト文字列、および数値演算および比較の実行に使用できる日付です。たとえば、恒常的な日付(年次CXアンケートの開始日など)を使用して、アンケートの回答の経過時間を計算できます。
定数の使用に関する注記:
- テキスト文字列は大文字と小文字が区別されます。大文字と小文字を区別するための回避方法として、UPPER 関数または LOWER 関数を使用します。
- テキスト文字列と日付は引用符で囲む必要があります。
- 数字には引用符は必要ありません (引用符で囲まれた数字はテキストとして扱われます)。
フィールド
フィールドは、受信データコネクタから利用可能なデータフィールドです。これには、数値、テキスト文字列、および日付フィールドが含まれます。これらのフィールドを使用して、数学演算と比較を実行することができます。たとえば、顧客の誕生日のフィールドがデータセットに含まれている場合、顧客の年齢を計算することができます。
フィールドを追加するには、[フィールド]セクションから[式]ボックスにドラッグします。
フィールドの種類には、以下のアイコンが付いています。
機能
このセクションに記載されている数値、テキスト、および日付関数を使用することができます。
関数を追加するには、関数セクションから式ボックスに関数をドラッグします。
機能タイプには、以下のアイコンが付いています。
ABS
数値の絶対値を返します。
構文: ABS(数値)
COALESCE
リスト内の最初の NULL 以外の値を返します。
構文: COALESCE(value1, value2, value3)
CEILING
数値の切り上げ値を返します。
構文: CEILING(number)
CONCAT
複数のテキスト文字列を 1 つに結合します。
構文: CONCAT(“string 1”, “string 2”, “string 3”)
含む
テキスト文字列 (“テキスト内”) に別のテキスト文字列 (“テキスト検索”) が含まれている場合に true を返します。それ以外の場合は false を返します。
構文: CONTAINS(“テキスト内”, “テキスト検索”)
CONVERT_TO_TIMEZONE
日付と時刻をあるタイムゾーンから別のタイムゾーンに変換します。
構文: CONVERT_TO_TIMEZONE(“日付と時刻”, “変換元のタイムゾーン”, “変換先のタイムゾーン”)
日付書式に関する注記:
- tz データベース名を使用してタイムゾーンを指定します。
- 日付と時刻を ISO 8601 または yyyy-mm-dd hh:mm:ss として指定します。
- 日付および時刻にタイムゾーン情報が提供される場合、”変換元のタイムゾーン” パラメータが優先されます。
- 変換された日付では、ISO 8601 書式が使用されます。変更する必要がある場合は、TODATE 関数を使用します。
DATETONUMBER
日付フィールドを Unix タイムスタンプに変換します。
構文: DATETONUMBER(“date”)
DATETOTEXT
日付フィールドを指定された形式の日付文字列に変換します。
構文: DATETOTEXT(“date”, “date format”)
DAYOFWEEK
日付に対応する曜日を返します。
構文: DAYOFWEEK(“date”)
DYNAMICLOOKUP
動的にロードされた参照テーブルを使用して、フィールドの値に置換します。ルックアップ値は、最初の引数で指定された項目 (“項目名”) から取得されます。
構文: DYNAMICLOOKUP(“field name”, “value”)
ELEMENTOFARRAY
配列からn番目の値を抽出し、XM Discoverの属性に配列の値をマッピングします。
構文: ELEMENTOFARRAY([“配列要素 1”, “配列要素 2”, “配列要素 3”], 数値)
注記:
- 入力が配列でない場合、関数はエラーをスローします。
- 数値が配列のサイズより大きい場合、関数は null を返します。増加する順序の数は 0 から始まります。
FIELD
スペースまたはドットを含むフィールド名をラップします。
構文: FIELD(“項目名”)
検索
あるテキスト文字列 (“テキスト検索”) を別のテキスト文字列 (“テキスト内”) 内で検索し、”テキスト内” の最初の文字 (1 から始まる) から “テキスト検索” の開始位置の番号を返します。
検索を開始する “テキスト内” での文字の順序を指定することができます (1 から開始)。order_number を省略すると、1 とみなされます。
“テキスト内” に “テキスト検索” が見つからない場合は、-1 を返します。
構文: FIND(“テキスト検索”, “テキスト内”, order_number)
FINDFIRST
別のテキスト文字列 (“テキスト内”) 内で最初に出現するテキスト文字列 (“テキスト検索”) を検索し、”テキスト内” の最初の文字 (1 から始まる) から “テキスト検索” の開始位置の番号を返します。
構文: FINDFIRST(“テキスト内”, “テキスト検索”)
FINDLAST
別のテキスト文字列 (“テキスト内”) 内でテキスト文字列の最後の出現箇所 (“テキスト検索”) を検索し、”テキスト内” の最初の文字 (1 から始まる) から “テキスト検索” の開始位置の番号を返します。
構文: FINDLAST(“テキスト内”, “テキスト検索”)
フロア
数値の切り下げ値を返します。
構文: FLOOR(数値)
GENERATE_ID
一意の ID を生成します。この関数には、追加パラメータは必要ありません。
構文: GENERATE_ID()
GETDAYSBETWEEN
2 つの日付間の日数を返します。
構文: GETDAYSBETWEEN(“start date”, “end date”)
GETHOURSBETWEEN
2 つの日付の間の時間数を返します。
構文: GETHOURSBETWEEN(“start date”, “end date”)
GETMINUTESBETWEEN
2 つの日付の間の分数を返します。
構文: GETMINUTESBETWEEN(“開始日”, “終了日”)
条件
文が true の場合はある値を返し、false の場合は別の値を返します。
構文: IF(statement, “value if true”, “value if false”)
ISBLANK
フィールドが空の場合は TRUE、空でない場合は FALSE を返します。
構文: ISBLANK(“field name”)
ジョイナレイ
項目の配列を、指定した区切り文字でひとつの文字列に結合する。
構文JOINARRAY(array, delimiter, escape, skipNull, removeDuplicates)
上記の構文では、以下のようになる:
- array: 結合する文字列あるいは数値の配列。
- delimiter: 配列を連結する際に使用する区切り文字。
- escape: trueの場合、引用符で囲まれた要素を保持する。
- skipNull: trueの場合、nullの要素をスキップします。
- removeDuplicated:trueの場合、複製要素を削除する。
LEN
テキスト文字列の文字数を返します。
構文: LEN(“text”)
構文LEN([“text1”, text2])
小文字
テキストを小文字に変換します。
構文: LOWER(“text”)
MD5HASH
入力データに MD5 ハッシュを適用し、そのデータに基づいて一意の ID を生成します。
構文: MD5HASH(“text”)
MID
指定した位置から始まる特定の文字数をテキスト文字列から返します。
位置 (order_number) は 1 から始まります。
構文: MID(“text”, order_number, characters_number)
MOD
数値を除数で割ったときの余りを返します。
構文: MOD(数値, 除数)
現在
現在の日付と時刻を返します。この関数には、追加パラメータは必要ありません。
構文: NOW()
NUMBERTODATE
UNIX タイムスタンプを日付フィールドに変換します。UNIX タイムスタンプは、1970 年 1 月 1 日から経過したミリ秒数です。
構文: NUMBERTODATE(number)
NUMBERTOTEXT
数値をテキストに変換します。
構文: NUMBERTOTEXT(number)
POW
x の結果を y の累乗で返します。
構文: POW(x, y)
PROPERCASE
テキスト文字列の最初の文字を大文字にします。
構文: PROPERCASE(“text”)
例: PROPERCASE(“pracy makes Perfect”) は Practice に解決され、完璧になります。
ランダム
0 から 1 の間のランダムな実数を返します。この関数には、追加パラメータは必要ありません。
構文: RANDOM()
RANDOMBETWEEN
2 つの数値の間の乱数を返します。
構文: RANDOMBETWEEN(最小数, 最大数)
REMOVEHTMLTAGS
テキスト文字列から HTML タグを削除します。
構文: REMOVEHTMLTAGS(“text”)
置換
“テキスト” (occurrence_number) 内の “古いテキスト” の発生回数に基づいて、テキスト文字列の一部 (“古いテキスト”) を別のテキスト文字列 (“新しいテキスト”) で設定された回数 (number_of_replacements) に置き換えます。
構文: REPLACE(“text”, “old text”, “new text”, occurrence_number, case_sensitivity, number_of_replacements)
REPLACEBYINDEX
指定した文字数に基づいて、テキスト文字列の一部 (“古いテキスト”) を別のテキスト文字列 (“新しいテキスト”) に置き換えます。
位置 (order_number) は 1 から始まります。
構文: REPLACE(“old text”, order_number, characters_number, “new text”)
REPLACEBYREGEXP
正規表現を使用してテキスト値を置き換えます。
構文: REPLACEBYREGEXP(“text”, “regular expression for pattern matching”, “regular expression for replacement value”)
ラウンド
最も近い整数に丸めた数値を返します。
構文: ROUND(number)
検索
あるテキスト文字列 (“テキスト検索”) を別のテキスト文字列 (“テキスト内”) 内で検索し、”テキスト内” の最初の文字 (1 から始まる) から “テキスト検索” の開始位置の番号を返します。
検索を開始する “テキスト内” での文字の順序を指定することができます (1 から開始)。order_number を省略すると、1 とみなされます。
“テキスト内” に “テキスト検索” が見つからない場合は、-1 を返します。
構文: SEARCH(“テキスト検索”, “テキスト内”, order_number)
スプリット
指定した文字列を、指定した区切り文字に基づいて部分文字列の配列に分割する。この関数は、出力値が文字列でなければならないため、JOINARRAY関数やELEMENTOFARRAY関数のパラメータとして使用することができます。
構文SPLIT(“文字列_to_split”, “_”)
SUBSTITUTE
テキスト文字列の “旧テキスト” を “新規テキスト” に置き換えます。
置換する “古いテキスト” のオカレンスを指定できます。occurrence_number を指定すると、”old text” のインスタンスのみが置き換えられます。それ以外の場合は、テキスト内の “古いテキスト” が発生するたびに “新規テキスト” に変更されます。
構文: SUBSTITUTE(“text”, “old text”, “new text”, occurrence_number)
SUBSTR
文字列の最初の文字から始まり、指定された文字数 (1 から始まる) までのテキスト文字列の一部を返します。
構文: SUBSTR(“text”, order_number)
肩書き
テキスト文字列内の各単語の最初の文字を大文字にします。
構文: TITLECASE(“text”)
TEXTTODATE
日付文字列を書式 YYYY-MM-DDThh:mm:ssZ の日付項目に変換します。
構文: TEXTTODATE(“date”, “date format”)
TEXTTONUMBER
テキストを数値に変換します。
構文: TEXTTONUMBER(text)
翻訳
受信データを翻訳します。
構文: TRANSLATE (“翻訳元言語コード”、”翻訳先言語コード”、”テキスト”)
注記:
- この機能は Google 翻訳 API 信用証明書を持つアカウントでのみ使用できます
- サポートされている言語コードの完全な一覧については、Google Cloud Translation の文書を参照してください。
トリムレフト
テキスト文字列の左端からスペースを削除します。
構文: TRIMLEFT(“text”)
トリムライト
テキスト文字列の右端からスペースを削除します。
構文: TRIMRIGHT(“text”)
大文字
テキストを大文字に変換します。
構文: UPPER(“text”)
演算子
以下の表に示す算術演算子と比較演算子を使用できます。
算術演算子
演算子 | 説明 |
+ | 追加 |
– | 減算/否定 |
* | 乗算 |
/ | 除算 |
たとえば、次の式は 2 つの数値の平均を返します。
(RATING1 + RATING2) / 2
比較演算子
演算子 | 説明 |
== | 等しい |
> | 次の数より大きい |
< | 次の数より小さい |
>= | 次の数以上 |
<= | 次の数以下 |
!= | 次と等しくない |
たとえば、次の式は、RATING が 3 以下の場合は “bad rating” を返し、RATING が 3 より大きい場合は “good rating” を返します。
IF(RATING <= 3, “bad rating”, “good rating”)
論理演算子
IF 関数またはジョブフィルタを使用する場合は、論理演算子を使用して複数の条件を指定します。
演算子 | 説明 |
と | “and” で区切られたすべての条件が真の場合、条件は真になります。 |
インチ | 一覧表示された値のいずれかと一致する場合、条件は真です。
構文: in[“値 1”, “値 2”, “値 3”] ヒント:複数の「or」演算子の代わりに使用します。
|
または | “or” で区切られた条件のいずれかが真の場合、条件は真になります。 |
たとえば、COUNTRY フィールドに指定された値のいずれかが含まれている場合、次の式は “地中海” を返します。それ以外の場合は、”非地中海” が返されます。
IF(LOWER(COUNTRY) in [“france”, “portugal”, “italy”, “spain”, “greece”, “malta”, “cyprus”], “Mediterranian”, “Non-Mediterical”)
構文のヒント
無効な式を回避するには、以下のヒントに従ってください。
- 1 つの式で複数の関数を組み合わせる場合は、開括弧数と閉括弧数が一致していることを確認してください。
例: IF(GETDAYSBETWEEN(feedback_date, response_date) > 3, “遅延”, “遅延なし”)
- 式で使用される関数ごとに、必要なすべての引数が存在する必要があります。たとえば、TODATE 関数が正しく動作するには、日付と日付形式の引数の両方が必要です。
- 必ず関数、算術演算、または比較演算でサポートされている正しいデータ型を使用してください。たとえば、ABS 関数を正しく機能させるには、数値が必要であり、テキストフィールドや日付フィールドでは機能しません。
- 式にドット (“.”) がある場合は、FIELD 関数と引用符 (‘単一’ または ‘ダブル’) でラップしてください。たとえば、”agentParticipants.0.agentLoginName” という名前のフィールドがある場合の潜在的な変換でのラップ方法は次のとおりです。
IF(CONTAINS(LOWINS(LOWER(FIELD(“agentParticipants.0.agentLoginName”)), “bot”),”YES”, “NO”)