共通関数
共通関数は、任意の型の値に対して動作します。ほぼすべての変換では、使用可能な値が存在するかどうか、またその値がどの型を保持しているかを知る必要があり、これらの関数はその両方に答えます。これらは、不完全なインバウンドデータにも耐えられる式を記述するための基盤です。
機能の提供状況
WELは現在、一部のお客様にご利用いただけます。ご利用のワークスペースで利用可能かどうかを確認するには、Customer Success Representativeにお問い合わせください。
測定
次の関数は、値のサイズをその型に適した単位で測定します。
length
Stringの長さをコードポイント数で返すか、List内の要素数、またはMap内のキー数を返します。
文字列の場合、lengthはバイト数ではなくコードポイント数をカウントします。一部の絵文字やアクセント付き文字は、複数のコードポイントが組み合わさって、ユーザーが1つの文字として認識する文字(書記素クラスタ)になっています。書記素クラスタについては、Unicode関数を参照してください。
length(value)| パラメーター | 説明 |
|---|---|
| value | String、List、またはMap。 |
文字列内のコードポイントをカウント
次の例では、文字列内の各コードポイントをカウントします。
Formula
length('hello')出力
5リスト内の要素をカウント
次の例では、リスト内の各要素をカウントします。
Formula
length(['a', 'b'])出力
2マップ内のキーをカウント
次の例では、マップ内の各キーをカウントします。
Formula
length({a: 1, b: 2, c: 3})出力
3使用可能な値のテスト
次の関数は、値が単に非nullであるだけでなく、実際に使用可能かどうかをテストします。
present?
値が実際に使用可能な場合にtrueを返します。つまり、nullではなく、空ではなく、空白のみでもなく、NaNまたはInfinityでもない場合です。すべてのデータ型で動作します。
falseは、不在ではなくパイプライン内の意味のある値であるため、trueとして返されます。これはRubyのblank?とは異なります。
present?(value)| パラメーター | 説明 |
|---|---|
| value | E100を発生させるRegexを除く任意の値。 |
空でない文字列は存在する
次の例では、空でない文字列をテストします。
Formula
present?('SO-1001')出力
true空白のみの文字列は存在しない
次の例では、空白のみの文字列をテストします。
Formula
present?(' ')出力
falseNullは存在しない
次の例では、null値をテストします。
Formula
present?(null)出力
false空のリストは存在しない
次の例では、空のリストをテストします。
Formula
present?([])出力
falseFalseは存在する
次の例では、不在ではなく意味のあるデータであるブール値falseをテストします。
Formula
present?(false)出力
truepresence
値が存在する場合はその値を返し、存在しない場合はnullを返します。
presenceはpresent?のコンパニオンであり、この2つは異なるジョブに使用されます。 present?は、分岐に使用するBooleanを返します。 presenceは、空の文字列、空白のみの文字列、空のリストまたはマップ、NaN、Infinityなど、あらゆる種類の不在を単一のnullに正規化します。これにより、フォールバック演算子|はそれらすべてを一度にキャッチできます。
presence(_.nickname) | 'none'presenceを使用しない場合、' 'を含むフィールドはnullではないため、|は空白をそのまま通過させます。
presence(value)| パラメーター | 説明 |
|---|---|
| value | E100を発生させるRegexを除く任意の値。 |
使用可能な値は変更されずに通過する
次の例では、使用可能な値を変更せずに通過させます。
Formula
presence('SO-1001')出力
SO-1001空白のみの文字列はnullに正規化される
次の例では、空白のみの文字列をnullに正規化します。
Formula
presence(' ')出力
nullユースケース: 実際に入力されている最初の名前を選択
CRMエクスポートでは、表示名が空白の場合があり、正式名が欠落している場合があります。 presenceを|で連結して、最初に使用可能な値にフォールスルーします。
入力
{
"contacts": [
{"id": "C-1", "display_name": " ", "legal_name": "Kalani Park"},
{"id": "C-2", "display_name": "Noam", "legal_name": "Noam Gupta"},
{"id": "C-3", "display_name": null, "legal_name": null}
]
}Formula
_.contacts >> map_by(c ~> {
id: c.id,
name: presence(c.display_name) | presence(c.legal_name) | 'Unknown'
})出力
[
{"id": "C-1", "name": "Kalani Park"},
{"id": "C-2", "name": "Noam"},
{"id": "C-3", "name": "Unknown"}
]C-1は、' 'が欠落ではなく空白であり、単純なnullチェックではまさにこのケースがすり抜けて宛先に渡されるため、フォールスルーします。
型の検査
次の関数は、値が実際に16個のWEL型のどれであるかを報告します。
type_of
値の型の名前をStringとして返します。
ルールをペイロードのどのリーフに適用するかを決定する条件ラムダを記述する場合や、予期しない入力で失敗している変換を診断する場合に最も役立ちます。
type_of(value)| パラメーター | 説明 |
|---|---|
| value | 任意の値。 |
文字列
次の例では、文字列の型を返します。
Formula
type_of('SO-1001')出力
文字列整数
次の例では、整数の型を返します。
Formula
type_of(42)出力
整数小数
次の例では、小数の型を返します。
Formula
type_of(Decimal('1.50'))出力
小数リスト
次の例では、リストの型を返します。
Formula
type_of([1])出力
リストマップ
次の例では、マップの型を返します。
Formula
type_of({a: 1})出力
MapNull
次の例では、null値の型を返します。
Formula
type_of(null)出力
NullTYPE_OFは実際に保持しているものを報告する
どちらも数値のように見えますが、type_of(42)はIntegerで、type_of(Decimal('1.50'))はDecimalです。算術演算で予期しない結果が生成される場合は、型を確認してください。通常は、それが理由を特定する最も速い方法です。各WEL型が何を表すかについては、データ型を参照してください。
関連情報
最終更新日: