変換関数
変換関数は特定の型の値を構築します。各関数は生成する型の名前を使用し、大文字で始まります。たとえば、Decimal('19.99')はDecimal値を作成します。
通常、インバウンドデータは文字列として到着するため、変換関数を使用すると、インバウンドデータが式に入る場所で値の型を明示的に制御できます。 WELは、文字列補間と2つの設定可能なTransform dataフラグを除き、呼び出しを成功させるために引数を変換しません。境界で明示的に変換することで、ダウンストリームの操作の型安全性と予測可能性が維持されます。
エッジで1回だけ変換
変換の開始時に、各フィールドを意図した型に1か所で変換します。残りの式全体で、それらの型付き値を使用します。式全体に変換が散在していると、どのフィールドが処理済みかを把握しにくくなり、数値が2回丸められる可能性が高くなります。
機能の提供状況
WELは現在、一部のお客様にご利用いただけます。ご利用のワークスペースで利用可能かどうかを確認するには、Customer Success Representativeにお問い合わせください。
数値
WELには、各数値型に1つずつ、3つの数値コンストラクターがあります。
Integer
Integerに変換します。既存のIntegerまたは数字の文字列を受け入れます。
変換は厳密です。有効な整数以外を含む文字列はE102を発生させます。たとえば、Integer('3 items')は3を返すのではなくエラーを発生させます。
Integer(value)| パラメーター | 説明 |
|---|---|
| value | Integerまたは整数文字列。 |
整数文字列を変換する
次の例では、整数文字列を変換します:
Formula
Integer('42')出力
42既存の整数をそのまま渡す
次の例では、既存のIntegerを変更せずにそのまま渡します:
Formula
Integer(42)出力
42Decimal
Decimal、つまり正確な任意精度の数値に変換します。
金額にはDecimalを使用します。正確な桁がコンストラクターに渡るように、Decimal('19.99')など、値を文字列として渡します。 Decimal(19.99)は、すでに近似値であるFloatを変換するため、Decimalが保持するために存在する正確性が失われます。
Decimalはスケールも保持するため、Decimal('12.50')は算術演算中も末尾のゼロを保持し、合計は12.5になるのではなく通貨金額のままになります。
Decimal(value)| パラメーター | 説明 |
|---|---|
| value | 数値または数値文字列。 |
小数文字列を変換する
次の例では、小数文字列を変換します:
Formula
Decimal('19.99')出力
19.99整数をDecimalに変換する
次の例では、整数をDecimalに変換します:
Formula
Decimal(5)出力
5Float
Float、つまりバイナリ浮動小数点数に変換します。
近似精度が許容される測定値、比率、科学的な値に適しています。 Floatはほとんどの小数を正確に表現できないため、金額には適していません。正確な算術演算には、代わりにDecimalを参照してください。
Float(value)| パラメーター | 説明 |
|---|---|
| value | 数値または数値文字列。 |
数値文字列をFloatに変換する
次の例では、数値文字列をFloatに変換します:
Formula
Float('3.14')出力
3.14テキストと真偽値
次のコンストラクターはString、Bool、Binaryに変換します:
String
data-planeロケールを使用して、スカラー値をStringに変換します。
Binaryとコレクションを拒否します。 ListまたはMapが暗黙的に、またはこの関数によって文字列に変換されることはありません。コレクションを意図的にシリアル化するには、to_jsonまたはto_welを使用します。この制限が存在するのは、暗黙のうちに文字列化されたコレクションが、ダウンストリームで最も気付きにくい変換バグの1つであるためです。
String(value)| パラメーター | 説明 |
|---|---|
| value | スカラー値。 |
整数を文字列に変換する
次の例では、整数を文字列に変換します:
Formula
String(42)出力
42Decimalを文字列に変換する
次の例では、Decimalを文字列に変換します:
Formula
String(Decimal('19.99'))出力
19.99Bool
値をBooleanに変換します。既存のBoolean、または文字列'true'と'false'を受け入れます。
'yes'、'1'、'Y'は、意味がソースシステムに依存するため受け入れられません。ソース固有の値を明示的にBooleanにマッピングします:
if _.flag == 'Y' then true else falseBool(value)| パラメーター | 説明 |
|---|---|
| value | Boolean、または文字列'true'もしくは'false'。 |
文字列'true'を変換する
次の例では、文字列'true'をBooleanに変換します:
Formula
Bool('true')出力
trueBinary
ASCII文字列をBinaryバイトに変換します。
ASCIIではないテキストには、明示的なエンコーディングを受け取るencode_stringを使用します。 Binaryは、非ASCII入力でエンコーディングを選択するのではなくE008を発生させます。
Binary(value)| パラメーター | 説明 |
|---|---|
| value | ASCII文字列。 |
ASCII文字列をバイトに変換する
次の例では、ASCII文字列をBinaryバイトに変換します:
Formula
Binary('AB')出力
0x"4142"日付と時刻
WELでは、正確な瞬間と、タイムゾーンのないカレンダー日付または壁時計時刻を区別します。正しい型を選択すると、タイムゾーンをまたぐ日付のずれを防ぐのに役立ちます。構築後に各型を操作する方法については、一時関数を参照してください。
DateTime
DateTime、つまりタイムゾーンを持つ正確な瞬間に変換します。
作成タイムスタンプ、イベント時刻、監査レコードなど、発生するイベントの記録に使用します。
DateTime(value)| パラメーター | 説明 |
|---|---|
| value | DateTime、ISO 8601文字列、またはコンポーネントのマップ。 |
ゾーンを含むISO 8601文字列を変換する
次の例では、タイムゾーンを含むISO 8601文字列を変換します:
Formula
DateTime('2026-03-15T09:30:00Z')出力
2026-03-15T09:30:00ZPlainDate
PlainDate、つまり時刻もゾーンもないカレンダー日付に変換します。
請求書の日付、生年月日、契約開始日など、どこでも同じ日付に使用します。 PlainDateの代わりに保存されたDateTimeは、ゾーン境界をまたぐと1日ずれることがあります。
PlainDate(value)| パラメーター | 説明 |
|---|---|
| value | ISO 8601日付文字列、または日付を保持する値。 |
ISO 8601日付文字列を変換する
次の例では、ISO 8601日付文字列を変換します:
Formula
PlainDate('2026-03-15')出力
2026-03-15PlainTime
PlainTime、つまり店舗の開店時刻など、日付もゾーンもない時刻に変換します。
PlainTime(value)| パラメーター | 説明 |
|---|---|
| value | 時刻のみの文字列、またはhour、minute、secondを含むマップ。 |
ISO 8601時刻文字列を変換する
次の例では、ISO 8601時刻文字列を変換します:
Formula
PlainTime('09:30:00')出力
09:30:00PlainDateTime
PlainDateTime、つまりゾーンのない日付と時刻に変換します。
PlainDateTimeはDateTime引数を変換するのではなく、そこからゾーンを取り除くため、壁時計の読み取り値はそのまま保持されます。
PlainDateTime(value)| パラメーター | 説明 |
|---|---|
| value | コンポーネントのマップ、ISO 8601文字列、またはDateTime。 |
ISO 8601日時文字列を変換する
次の例では、ISO 8601日時文字列を変換します:
Formula
PlainDateTime('2026-03-15T09:30:00')出力
2026-03-15T09:30:00Duration
Duration、つまりISO 8601期間形式で記述された時間の長さに変換します。たとえば、PT1H30Mです。
Duration(value)| パラメーター | 説明 |
|---|---|
| value | ISO 8601期間文字列、または期間を保持する値。 |
ISO 8601期間文字列を変換する
次の例では、ISO 8601期間文字列を変換します:
Formula
Duration('PT1H30M')出力
PT1H30Mセンチネル
次のコンストラクターは、不在を表すためにWELが使用する2つのマーカーを構築します:
Null
nullを返します。引数は取りません。
Null()nullを返す
次の例では、nullを返します:
Formula
Null()出力
nullSkip
Skipセンチネルを返します。引数は不要です。
Skipは、フィールドにnullを送信するのではなく、そのフィールドを完全に省略します。 Skipがmap_by内でリストをフィルタリングする方法を含む完全な比較については、Null and Skipを参照してください。宛先が明示的にクリアされたフィールドと未変更のフィールドを区別する場合は、Skipを使用します。多くのCRM APIがこれに該当します。
スキップする()ユースケース: 境界でインバウンドペイロードを変換する
論理的には文字列ではないものを含め、すべてのフィールドが文字列として到着します。残りの変換が実際の型で機能できるように、先頭で1回だけ変換します:
入力
{
"id": 1001,
"qty": "3",
"total": "149.50",
"shipped": "true",
"ship_date": "2026-03-15"
}Formula
{
order_id: String(_.id),
qty: Integer(_.qty),
total: Decimal(_.total),
shipped: Bool(_.shipped),
ship_date: PlainDate(_.ship_date)
}出力
{
"order_id": "1001",
"qty": 3,
"total": 149.50,
"shipped": true,
"ship_date": "2026-03-15"
}Decimalはスケールを保持するため、totalは末尾のゼロを保持します。 ship_dateはPlainDateであるため、後続のステップでタイムゾーンが適用されても1日ずれることはありません。
関連情報
最終更新日: