共通関数 ​

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

共通関数は、任意の型の値に対して動作します。ほぼすべての変換では、使用可能な値が存在するかどうか、またその値がどの型を保持しているかを知る必要があり、これらの関数はその両方に答えます。これらは、不完全なインバウンドデータにも耐えられる式を記述するための基盤です。

機能の提供状況

WELは現在、一部のお客様にご利用いただけます。ご利用のワークスペースで利用可能かどうかを確認するには、Customer Success Representativeにお問い合わせください。

測定 ​

次の関数は、値のサイズをその型に適した単位で測定します。

length ​

Stringの長さをコードポイント数で返すか、List内の要素数、またはMap内のキー数を返します。

文字列の場合、lengthはバイト数ではなくコードポイント数をカウントします。一部の絵文字やアクセント付き文字は、複数のコードポイントが組み合わさって、ユーザーが1つの文字として認識する文字(書記素クラスタ)になっています。書記素クラスタについては、Unicode関数を参照してください。

text
length(value)
パラメーター説明
valueString、List、またはMap。
文字列内のコードポイントをカウント

次の例では、文字列内の各コードポイントをカウントします。

Formula

text
length('hello')

出力

text
5
リスト内の要素をカウント

次の例では、リスト内の各要素をカウントします。

Formula

text
length(['a', 'b'])

出力

text
2
マップ内のキーをカウント

次の例では、マップ内の各キーをカウントします。

Formula

text
length({a: 1, b: 2, c: 3})

出力

text
3

使用可能な値のテスト ​

次の関数は、値が単に非nullであるだけでなく、実際に使用可能かどうかをテストします。

present? ​

値が実際に使用可能な場合にtrueを返します。つまり、nullではなく、空ではなく、空白のみでもなく、NaNまたはInfinityでもない場合です。すべてのデータ型で動作します。

falseは、不在ではなくパイプライン内の意味のある値であるため、trueとして返されます。これはRubyのblank?とは異なります。

text
present?(value)
パラメーター説明
valueE100を発生させるRegexを除く任意の値。
空でない文字列は存在する

次の例では、空でない文字列をテストします。

Formula

text
present?('SO-1001')

出力

text
true
空白のみの文字列は存在しない

次の例では、空白のみの文字列をテストします。

Formula

text
present?('   ')

出力

text
false
Nullは存在しない

次の例では、null値をテストします。

Formula

text
present?(null)

出力

text
false
空のリストは存在しない

次の例では、空のリストをテストします。

Formula

text
present?([])

出力

text
false
Falseは存在する

次の例では、不在ではなく意味のあるデータであるブール値falseをテストします。

Formula

text
present?(false)

出力

text
true

presence ​

値が存在する場合はその値を返し、存在しない場合はnullを返します。

presenceはpresent?のコンパニオンであり、この2つは異なるジョブに使用されます。 present?は、分岐に使用するBooleanを返します。 presenceは、空の文字列、空白のみの文字列、空のリストまたはマップ、NaN、Infinityなど、あらゆる種類の不在を単一のnullに正規化します。これにより、フォールバック演算子|はそれらすべてを一度にキャッチできます。

text
presence(_.nickname) | 'none'

presenceを使用しない場合、' 'を含むフィールドはnullではないため、|は空白をそのまま通過させます。

text
presence(value)
パラメーター説明
valueE100を発生させるRegexを除く任意の値。
使用可能な値は変更されずに通過する

次の例では、使用可能な値を変更せずに通過させます。

Formula

text
presence('SO-1001')

出力

text
SO-1001
空白のみの文字列はnullに正規化される

次の例では、空白のみの文字列をnullに正規化します。

Formula

text
presence('   ')

出力

text
null

ユースケース: 実際に入力されている最初の名前を選択 ​

CRMエクスポートでは、表示名が空白の場合があり、正式名が欠落している場合があります。 presenceを|で連結して、最初に使用可能な値にフォールスルーします。

入力

json
{
  "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

text
_.contacts >> map_by(c ~> {
  id: c.id,
  name: presence(c.display_name) | presence(c.legal_name) | 'Unknown'
})

出力

json
[
  {"id": "C-1", "name": "Kalani Park"},
  {"id": "C-2", "name": "Noam"},
  {"id": "C-3", "name": "Unknown"}
]

C-1は、' 'が欠落ではなく空白であり、単純なnullチェックではまさにこのケースがすり抜けて宛先に渡されるため、フォールスルーします。

型の検査 ​

次の関数は、値が実際に16個のWEL型のどれであるかを報告します。

type_of ​

値の型の名前をStringとして返します。

ルールをペイロードのどのリーフに適用するかを決定する条件ラムダを記述する場合や、予期しない入力で失敗している変換を診断する場合に最も役立ちます。

text
type_of(value)
パラメーター説明
value任意の値。
文字列

次の例では、文字列の型を返します。

Formula

text
type_of('SO-1001')

出力

text
文字列
整数

次の例では、整数の型を返します。

Formula

text
type_of(42)

出力

text
整数
小数

次の例では、小数の型を返します。

Formula

text
type_of(Decimal('1.50'))

出力

text
小数
リスト

次の例では、リストの型を返します。

Formula

text
type_of([1])

出力

text
リスト
マップ

次の例では、マップの型を返します。

Formula

text
type_of({a: 1})

出力

text
Map
Null

次の例では、null値の型を返します。

Formula

text
type_of(null)

出力

text
Null

TYPE_OFは実際に保持しているものを報告する

どちらも数値のように見えますが、type_of(42)はIntegerで、type_of(Decimal('1.50'))はDecimalです。算術演算で予期しない結果が生成される場合は、型を確認してください。通常は、それが理由を特定する最も速い方法です。各WEL型が何を表すかについては、データ型を参照してください。

  • データ型:16個のWELデータ型と、それぞれを使用するタイミング。
  • 演算子: フォールバック演算子|の詳細情報。
  • ディープマップ関数: 条件ラムダ内でtype_ofを使用します。
  • Unicode関数: 読み手に見える方法でテキストをカウントします。

最終更新日: