Alteryxで使用できる関数の「特殊関数」の使い方をご紹介します
特殊カテゴリの関数は、他のジャンルに入らない関数です。結果ウィンドウにメッセージ出力を行ったり、XMLメタキャラ処理など、特殊な処理を行います。
フォーミュラツールの特殊カテゴリの関数一覧
やりたいこと | 関数名 | 概要 |
---|---|---|
特殊文字のエスケープ | 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としてエンコードします |
各関数の使い方とサンプル
EscapeXMLMetacharacters ・・・ XMLの特殊文字をエスケープします
EscapeXMLMetacharacters(String)
String で指定した XML の中で、下の表の5つのXMLメタ文字について、エスケープされたバージョンに置き換えます。
EscapeXMLMetacharacters関数は特殊文字が含まれているXMLで、特殊文字をエスケープするために使用します。(Alteryx では特殊文字が使われているクエリを含むXMLは解析できないため、EscapeXMLMetacharacters関数で特殊文字をエスケープしてから解析をする際等に使用します。)
文字 | エスケープされたバージョン |
---|---|
" | " |
' | ' |
< | < |
> | > |
& | & |
Sample
GetEnvironmentVariable ・・・ 環境変数を取得します
GetEnvironmentVariable(String)
String で指定した環境変数を取得します。String に指定する環境変数は「”String”」の形で記載します。
入力ツールで「 C:\Users\[Folder Name]\folder1\folder2\the_file.xlsx 」といった環境変数によって変わるファイルパスを読み込みたい場合など([Folder Name]部分)、ワークフローを実行する環境によって可変にしたい場合等に使用します。(インプットファイルパスに環境変数を使用する例について、詳しくはこちらの質問 fa-share-square-oを参照してください。)
補足
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)について、詳しくはこちらのページfa-share-square-oを参照してください。
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でエンコードされます。)
Sample
下の例では 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 |
サンプルワークフローダウンロード
formula_function_specialized fa-download
※Alteryx Designer 2019.1.6.58192時点の情報です