今回もAlteryxの関数のお話です。
AlteryxではIs関数がいくつか用意されています。
- IsEmpty
- IsInteger
- IsNull
- IsNumber
- IsSpatialObj
- IsString
これらはそれぞれのデータ型が関数名の型になっているかどうかを調べる関数です。しかし、よくよく使ってみると、2つのグループに別れていることに気づくと思います。すなわち以下のとおりです。
- データ自体を検査する関数
- IsEmpty
- IsInteger
- IsNull
- フィールドの型を検査する関数
- IsNumber
- IsSpatialObj
- IsString
似たような名前でデータ自体を検査する関数とフィールドの型を検査する関数が存在するため、使い方を勘違いしてしまうので、ご注意ください。せめてカテゴリが違っていればいいのですが・・・。
実際に見てみましょう。
IsEmpty、IsInteger、IsNull
これらはフィールドの値を見て判断する関数です。それぞれ以下の通りとなります。
IsNull
レコードがNullかどうかを判断します。NullならTrueとなります。
例えば、「Number」というフィールドをテストします。
IsEmpty([Number])
Numberフィールドの1レコード目のNullがしっかりTrueと判定されています。
IsEmpty
レコードが空(空白ではなく空っぽ、ということです)もしくはNullであるかどうかを判断します。空ならTrue。ちなみに、数値型フィールドでは空を取り得ないので、数値型フィールドでは通常はIsNull関数を使います。
例えば、「String」というフィールドをテストします。
IsEmpty([String])
Stringフィールドの2レコード目は空文字です。こちらがしっかりとTrueとなっていることが確認できます。また、1レコード目のNullもTrueとなっています。
IsInteger
レコードが整数として扱えるかどうかを判断します。これは、文字列型フィールド内の数値に対しても使えますし、Double型のフィールドに対しても整数かどうかを判定するためにも利用できます。ただし、「1,000」などの表記は整数としては残念ながら認識してくれません。
ちなみに、テストするフィールドが数値型の場合は、Null値はTrueとして返すので注意してください(IsNull関数と組み合わせて使いましょう)。
例えば、「String」というフィールドをテストします。
IsInteger([String])
次に、「Number」というDouble型のフィールドをテストします。
NullがTrueとして判定されています・・・。その他小数点を持つ数についてはFalse判定となっています。
IsNumber、IsSpatialObj、IsString
この3つの関数は若干使い所が難しいです。フィールドのデータ型を検査しているので、各レコードに対して何かを判断するわけではありません。
使い所としては主に、複数フィールドフォーミュラでデータ型に応じて処理を変えたい場合などに使うことができます。実際に見てみましょう。
IsNumber
フィールドが数値型かどうかを判定します。ただし、値をToIntegerなどで数値型に変えるとTrueとして判定されます。しかし結局は値の中身を見て判断しているわけではなく、ToIntegerで変換された型自体を見て判定していることに注意してください。
例えば以下のようにStringフィールド、Numberフィールドを見てみましょう。
結果は以下のとおりです。
Stringフィールド内の値が数値であっても、型としては文字列型なので、Falseとして判定されています。
IsString
フィールドが文字列型かどうかを判定します。ただし、数値型の値をToStringで文字列型に変えるとTrueとして判定されます。しかし結局は値の中身を見て判断しているわけではなく、ToStringで変換された型自体を見て判定していることに注意してください。
例えば以下のようにStringフィールド、Numberフィールドを見てみましょう。
結果は以下のとおりです。
Stringフィールド内の値が数値であっても、型としては文字列型なので、Trueとして判定されています。
IsSpatialObj
フィールドが空間型かどうかを判定します。
例えば、以下のように空間型フィールドをセレクトツールで文字列型にした「SOJ_Text」というフィールドと、レコードにNull値を持つ空間型フィールド「SOJ」を検査してみたいと思います。
結果は以下のとおりです。
中身は空間型ですが、フィールド自体が文字列型であるJudge_for_SOJ_Textフィールドは、すべてFalse、空間型フィールドの「SOJ」はTrue判定です。Null値もTrueとして判定されています。
まとめ
- Is関数全般を紹介しました
- Is関数には2種類あることを説明しました。値自体を判定するものと、データ型を判定するものです。
- IsInteger関数は、数値型フィールドでNull値の場合はTrue判定を返すので注意してください(文字列型フィールドではFalseとなります)。
サンプルワークフローダウンロード
次回
次回は、データ内で数値型なのかどうか判定する、とやってみたいと思います。
コメント