【Alteryx関数シリーズ】特殊関数の使い方

Alteryxで使用できる関数の「特殊関数」の使い方をご紹介します

特殊カテゴリの関数は、他のジャンルに入らない関数です。結果ウィンドウにメッセージ出力を行ったり、XMLメタキャラ処理など、特殊な処理を行います。

本記事はAlteryx Designer Version2025.1.2の内容になりますので、Alteryx Designer Version2019.1.6.の場合は以下のリンクを参考にしてください。

フォーミュラツールの特殊カテゴリの関数一覧

やりたいこと 関数名 概要
特殊文字のエスケープ EscapeXMLMetacharacters(String) XMLクエリに含まれる特殊文字をエスケープします
環境変数を取得 GetEnvironmentVariable(String) 環境変数を取得します
インデックスの値を取得 GetVal(index, v0, v1) 指定したインデックスに入っている値を返します
メッセージを出力 Message(messageType, message, returnValue) メッセージログにメッセージを出力します
Null値を取得 Null() Null値を取得します
中央値を取得 RangeMedian(...) 集計範囲から中央値を取得します
環境変数を取得 ReadRegistryString(Key, ValueName) 環境変数を取得します
発音に関する情報を取得 Soundex(String) 文字列に対して英語の発音に関する情報を取得します
発音に関する情報を取得 Soundex_Digits(String) 文字列に対して英語の発音に関する情報を取得します
N番目のインデックスを取得 TOPNIDX(N, v0, v1) リストの最大値からN番目のインデックスを返します
文字列をURLとしてエンコード UrlEncode(String) 文字列をURLとしてエンコードします
最初のNull以外の値以外を取得 Coalesce(v1,v2,v3,…,vn) 最初のNull以外の値以外を取得します
パーセントエンコーディングを使用してエンコード UrlEncodeUTF8(String) パーセントエンコーディングを使用してエンコードします

以下の関数は、Alteryx Designer Version 2019.1.6以降にAlteryxに追加された関数です。

  • Coalesce (Version2024.1で追加)
  • UrlEncodeUTF8 (Version2024.2で追加)

各関数の使い方とサンプル

EscapeXMLMetacharacters ・・・ XMLの特殊文字をエスケープします

EscapeXMLMetacharacters(String)

String で指定した XML の中で、下の表の5つのXMLメタ文字について、エスケープされたバージョンに置き換えます。

EscapeXMLMetacharacters関数は特殊文字が含まれているXMLで、特殊文字をエスケープするために使用します。(Alteryx では特殊文字が使われているクエリを含むXMLは解析できないため、EscapeXMLMetacharacters関数で特殊文字をエスケープしてから解析をする際等に使用します。)

文字 エスケープされたバージョン
" "
' '
< &lt;
> &gt;
& &amp;
Sample

 

 

GetEnvironmentVariable ・・・ 環境変数を取得します

GetEnvironmentVariable(String)

String で指定した環境変数を取得します。String に指定する環境変数は「”String”」の形で記載します。

入力ツールで「 C:\Users\[Folder Name]\folder1\folder2\the_file.xlsx 」といった環境変数によって変わるファイルパスを読み込みたい場合など([Folder Name]部分)、ワークフローを実行する環境によって可変にしたい場合等に使用します。(インプットファイルパスに環境変数を使用する例について、詳しくはこちらの質問 を参照してください。)

補足

String で指定できる環境変数については、以下の手順で確認できます。

コントロールパネル > システムとセキュリティ > システム > システムの詳細設定 > 環境変数

 

Sample

下の例では、OS、ComSpec、Path について環境変数を取得しています。

 

 

 

GetVal ・・・ 指定したインデックスに入っている値を返します

GetVal(index, v0, v1 ...)

0 から始まる index で、指定した値(v0、v1 ... に入っている値)を返します。

 

Sample

下の例では、index で指定した 0 番目に入っている数値「3」が返っています。

 

 

Message ・・・ メッセージログにメッセージを出力します

Message(messageType, message, returnValue)

messageType で指定した動きに従って、メッセージ・ログに message で指定したメッセージを出力し、条件が満たされた場合 returnValue で指定した値を返します。

messageType に指定できる値は以下の6つです。

messageType 対応するワークフローの動き
1 メッセージ
2 警告
3 エラー
5 変換エラー(フィールド変換エラー)
8 ファイル(入力)
9 ファイル(出力)

 

Sample1

下の例ではフォーミュラツールを通ったすべてのレコードに対し、結果ウィンドウに「example_Message」と警告を出し、test の値を返すように設定しています。

 

補足
Sample2

以下のように、IF文にMessage関数を組み込むこともできます。(下の例では、「example」列が 0 以上ならTrue、0 未満ならエラーとして結果ウィンドウにメッセージ「less than 0」を表示し、 False の値を返すようにしています。)

If [example] < 0 then
Message(3, "less than 0 ", "False")
Else
"True"
Endif

 

 

Null ・・・ Null値を返します

Null()

Null値を返します。

 

Sample

下の例では、新たに作成した「test」列に Null が返っています。

 

 

RangeMedian ・・・ 集計範囲から中央値を取得します

RangeMedian(c0, v0, c1, v1, ... cn, vn)

一連の集計範囲から中央値を計算します。

範囲中央値(RangeMedian)について、詳しくはこちらのページを参照してください。

 

Sample

以下の表から、世帯収入の中央値を算出してみます。

var 収入 世帯数 累計
v0 収入$ 0から$ 4,999 3 3
v1 収入$ 5,000から$ 9,999 7 10
v2 収入$ 10,000から$ 14,999 6 16
v3 収入$ 15,000から$ 19,999 5 21

フォーミュラツールで下のようにRangeMedean関数を指定すると、上の表の範囲の中央値を取得できます。

RangeMedian(0,[v0],5000,[v1],10000,[v2],15000,[v3])

 

 

ReadRegistryString ・・・環境変数を取得します

ReadRegistryString(Key, ValueName)

レジストリのルートキーから環境変数を取得します。

Sample

下の例ではUSERNAME、TimeZoneKeyNameの環境変数を取得しています。

 

 

Soundex ・・・文字列の英語の発音の情報を取得します。

Soundex(String)

String で指定した文字列に対して、英語の発音に関する情報を取得します。以下の表のように値を返します。

String Soundex関数で返る値
アルファベット以外の字 -1
a, e, i, o, u, y, h, w String の最初の文字でない限り無視
b, f, p, v 1
c, g, j, k, q, s, x, z 2
d, t 3
l 4
m, n 5
r 6

Soundexは、文字列の最初の文字と上の表で変える値 3文字に基づいて、4字のコードを作成します。結果のコードの長さが2文字または3文字しかない場合は 0 を使用してコードを4字に入力します。結果のコードの長さが4文字を超える場合、4文字目以降のすべての文字は無視されます。

例えば、「Alteryx」という単語を String に指定してSoundex関数を実行すると、上の表に従って A436 の値が返ります。

Sample

なお、日本語や数字など対応していないものは「Z000」が返ります。

 

Soundex_Digits ・・・文字列の英語の発音の情報を取得します。

Soundex_Digits(String)

String で指定した文字列に対して、英語の発音に関する情報を取得します。

文字列に数字(数値)がある場合、最初の4桁が返されます。数字がない場合、Soundexコードが返されます。

 

以下の表のように値を返します。

Sample

なお、日本語など対応していないものは「Z000」が返ります。

 

TOPNIDX(N, v0, v1) ・・・リストの最大値からN番目のインデックスを返します。

TOPNIDX(N, v0, v1...)

v0, v1, ... で指定したリストに対して、 N 番目のインデックス(0ベース)を返します。

Sample

下の例では N に 2 を指定し、v0 から v3 までの中でN番目(0, 1, 2 で3番目)に大きい v1 のインデックス値である「1」が返っています。

 

 

UrlEncode ・・・ 文字列をURLとしてエンコードします。

UrlEncode(String)

String で指定した文字列を Web の有効な URL としてエンコードします。(Unicodeでエンコードされます。)

Sample1

下の例では Stringで指定した文字列の中の「\」や空白、「あ」といった文字が、それぞれUnicode でエンコードされました。

 

注意

UrlEncode関数を日本語の文字列に使った場合、Excel関数の ENCODEURL関数 とは違う結果になるので注意してください。これは、UrlEncode関数がエンコードに Unicode を使用するのに対して、ENCODEURL関数は UTF-8 を使用するためです。

エンコードする文字列 UrlEncode (Alteryx関数) でエンコード ENCODEURL (Excel関数) でエンコード
C:\temp\Alteryx URL Encode C:/temp/Alteryx%20URL%20Encode C%3A%5Ctemp%5CAlteryx%20URL%20Encode
C:\temp\Alteryx\あ C:/temp/Alteryx/%u3042 C%3A%5Ctemp%5CAlteryx%5C%E3%81%82

 

Coalesce・・・ 最初のNull以外の値を返します。

Coalesce(v1, v2, v3, ..., vn)

 

Sample1

下の例では、新たに作成したTest列に Null 以外の値が返っています。すべての引数が Null の場合、結果も Null になります。

一方で、関数の最後に値を指定した場合は、すべての列が Null の行に対して、その値が出力されます。

Sample2

同じ入力データでも、Coalesce 関数の最後に値を指定するかどうかで、すべての列が Null の場合の出力結果が異なります。

 

注意

Coalesce関数に渡される値は、すべて同じ型(すべて文字列、すべて数値、またはすべて空間)である必要があります。

 

UrlEncodeUTF8 ・・・ パーセントエンコーディングを使用してエンコードします。

UrlEncodeUTF8(String)

文字列を UTF-8 を使用したパーセントエンコーディングでエンコードします。

Sample

下の例では、String で指定した文字列の中の「\」や空白、「あ」といった文字が、それぞれ UTF-8 を用いたパーセントエンコーディングで変換されました。

サンプルワークフローダウンロード

formula_function_specialized

 

※Alteryx Designer 2025.1.2時点の情報です。

AlteryxDesigner初心者の方向け教育プログラム

京セラみらいエンビジョンでは、AlteryxDesignerをこれから利用していくお客様を対象に、初心者向けのトレーニングをご用意しております。

ハンズオン形式で実施致しており、使用し始めた方の上達をサポート致します。

トレーニング以外にもAlteryxを用いた環境構築、開発、ワークフロー作成を承りますので、お気軽にご相談ください。

おすすめの記事