WELエラーコード
すべてのWELエラーには安定したコードが含まれます。エラーメッセージが変更または翻訳されても、コードは同じままです。エラーの検索、アラートの設定、またはサポートリクエストへの記載にコードを使用します。
_ は、これらの例で式が受け取る入力です。詳細については、入力変数を参照してください。
機能の提供状況
WELは現在、一部のお客様にご利用いただけます。ご利用のワークスペースで利用可能かどうかを確認するには、Customer Success Representativeにお問い合わせください。
エラーコードは次のカテゴリに分類されます。
| カテゴリ | 範囲 | 説明 |
|---|---|---|
| 解析および静的分析 | E001–E021 | 式自体の形式が不正です。キャッチできません。 |
| 型エラー | E100–E107 | 値が操作に必要な型ではありません。キャッチ可能です。 |
| ランタイムエラー | E200–E238 | データが不正、欠落、または範囲外です。キャッチ可能です。 |
| ホストエラー | E300–E303 | 式の外部で何かが失敗しました。ほとんどの場合、キャッチできません。 |
ファミリの識別
エラーファミリはエラーの発生元を示します。
E0xx: 式はすべての入力に対して不正であり、解析できないスクリプトからは何も復旧できないため、キャッチできません。これらはプロダクションではなく、式の記述中に表面化します。E1xxおよびE2xx: 式自体には問題ありませんが、この特定のレコードが想定された形状を持っていません。たとえば、フィールドが欠落している、または数値が必要な場所に文字列がある場合です。これらはプロダクションで最も表面化しやすいエラーであり、多くの場合、通常は正常に実行されるバッチの途中で発生します。これらはキャッチ可能なため、何を行うかを決定できます。E3xx: 式自体には問題ありませんが、依存するホスト関数または別の依存関係が想定どおりに動作しませんでした。キャッチ可能性はコードによって異なります。E300はキャッチ可能です。欠落した任意のホスト値は復旧可能であるためです。E301–E303はキャッチできません。ホスト自体が失敗したためです。
キャッチ可能性
try-fallback演算子|?は、キャッチ可能なエラーをキャッチし、代わりにフォールバックを返します。キャッチできないエラーは常に伝播します。
_.customer.email |? 'unknown'
Integer(_.qty) |? 0|?と|の比較
|?と|の違いは非常に重要であり、ここで混同するとよく混乱の原因になります。
| Operator | 処理する対象 | 処理しない対象 |
|---|---|---|
| | null値 | エラー |
|? | エラー | 該当なし |
存在しないフィールドを読み取るとE104が発生します。これはnullを生成しないため、|では保護されません。
_.customer.nickname | 'none' // still raises E104
_.customer.nickname |? 'none' // returns 'none'キーが存在し、その値がnullまたは空白になる可能性がある場合は、通常、あらゆる種類の欠如をnullに正規化するpresenceとともに|を使用します。
presence(_.display_name) | 'Unknown'形状自体が異なる可能性がある場合は|?を使用します。
フォールバックは判断であり、修正ではありません
|? 0を通貨フィールドで使用すると、不正な形式の金額が気づかれずに0になり、ジョブは成功として報告されます。それが正しい場合もあれば、誤った請求書が気づかれずに送信される場合もあります。
欠落が想定され、デフォルト値が本当に正しい場合にのみ、フォールバックを使用してください。そうでない場合は、エラーを伝播させてください。失敗したジョブは目に見えますが、誤った数値は目に見えません。
解析および静的分析エラー
WELは評価が開始される前にこれらのエラーを発生させます。これらはすべての入力で発生し、キャッチできません。
| コード | メッセージ | 解像度 |
|---|---|---|
E001 | スクリプトには、ランタイムがサポートするより新しいWELバージョンが必要です | 式で、このエンジンにない機能が使用されています。エンジンバージョンを確認します。 |
E002 | 予期しないトークン | 構文エラーです。メッセージ内のキャレット(^)は、問題のあるトークンを指します。 |
E003 | 終了していない文字列リテラル | 引用符('または")が閉じられていません。アポストロフィは一重引用符(')と同じ文字を使用するため、一重引用符で囲まれた文字列内のアポストロフィは文字列を早く閉じてしまいます。 |
E004 | 無効な数値リテラル | 余分な区切り文字または不正な形式の指数がないか確認します。 |
E005 | 無効なバイナリリテラル | 0x"..."リテラルに16進数字以外のものが含まれています。 |
E006 | 予期しない入力の終わり | 何かが閉じられていません: 角かっこ([)、かっこ(()、または本体のないdo。 |
E007 | 無効な正規表現 | パターンをコンパイルできません。 |
E008 | Binary()に非ASCII文字を含めることはできません | 代わりに、明示的なエンコーディングを指定してencode_stringを使用します。 |
E009 | 変数はすでに定義されています | 内側のバインディングの名前を変更します。 WELではシャドーイングは許可されていません。 |
E010 | 未定義の変数 | 入力ミス、またはそれをバインドするletの外側で名前が使用されています。 |
E011 | 未定義の関数 | 入力ミス、または存在しない関数です。標準ライブラリを確認します。 |
E012 | 引数の数が正しくありません | 関数のリファレンスエントリにあるシグネチャを確認します。 |
E013 | 無効なロケール設定 | アクションのロケール設定を確認します。 |
E014 | 式のネストが深すぎます | 式をletバインディングに分割します。 |
E015 | 識別子が長すぎます | 名前を短くします。 |
E016 | 無効な形式指定 | f-stringまたはformat関数の形式文字列を確認します。 |
E017 | 無効なhostfx参照 | ホスト関数参照の構文を確認します。 |
E018 | HostFx名前空間は許可されていません | このコンテキストでは名前空間が許可されていません。 |
E019 | 数値リテラルが長すぎます | 桁数を減らすか、値をStringとして読み取って変換します。 |
E020 | コンストラクタの定数が無効です | リテラルがコンストラクタに適合しません。 Duration('P1D')でこれが発生します。 DurationはPT24Hなどのクロック期間を受け取ります。 |
E021 | 式が大きすぎます | 複数のステップに変換を分割します。 |
型エラー
WELは、値が操作に必要な型でない場合にこれらのエラーを発生させます。すべての型エラーはキャッチ可能です。
WELは、関数または演算子を満たすために引数を自動的に強制変換しません。入力型が必要な型と一致しない場合は、値を明示的に変換します。詳細は変換関数を参照してください。
| コード | メッセージ | 解像度 |
|---|---|---|
E100 | 型の不一致: 1つの型が想定されましたが、別の型が渡されました | 明示的に変換します: String(...)、Integer(...)、Decimal(...)。 WELで最も一般的なエラーです。 |
E101 | これらの型では演算子がサポートされていません | 両方のオペランドを確認します。 Stringに数値を加算するとこれが発生します。いずれかを変換します。 |
E102 | ある型を別の型にキャストできません | たとえば、Integer('3 items')は変換されません。先に値をクリーンアップするか、|?を使用してデフォルトを指定します。 |
E103 | DecimalとFloatの精度が混在しています | 両側を同じ型にします。金額の場合は両方をDecimalにします。詳細はデータ型を参照してください。 |
E104 | この型ではフィールドにアクセスできません | フィールドが欠落しているか、値がMapではありません。デフォルトにはhas_key?または|?を使用します。 |
E105 | Lambdaが異なる数の引数を想定しています | lambdaのパラメータを確認します。 Mapでのfilter_byは1つではなく2つを渡します。 |
E106 | 関数が異なる数の引数を想定しています | シグネチャを確認します。 |
E107 | ここではLambdaを値として使用できません | ラムダは、それを受け取る関数への引数としてのみ有効です。 |
E103は金額に関するものです
DecimalとFloatは混在できません。暗黙の混在は、Decimalを使用する価値である正確性を損ないます。 Floatが計算に入ると結果は近似値になり、下流ではそれを判別できません。
合計でE103が発生した場合、ほとんどの場合、修正はDecimalをFloatに変換するのではなく、もう一方のオペランドをDecimalにすることです。
レシピではデフォルトで混合精度が有効になります
Transform dataアクションには、DecimalとFloatを混在できるかどうかを設定するMixed precisionフィールドがあります。このフィールドのデフォルトはallowです。つまり、フィールドをdenyに設定しない限り、レシピアクションではE103は発生しません。
ランタイムエラー
WELは、入力値を処理できない場合に評価中にこれらのエラーを発生させます。すべてのランタイムエラーはキャッチ可能です。
データの形状とアクセス
データが操作で想定される形状または値を持たない場合、次のエラーが発生します。
| コード | メッセージ | 解像度 |
|---|---|---|
E200 | 未定義または不確定の算術結果 | ゼロ除算または同様の未定義操作を防ぐために、除数をガードします。 |
E201 | インデックスが範囲外です | リストが想定より短くなっています。 first、last、または|?を使用します。 |
E202 | nullのプロパティにアクセスできません | 親フィールドがnullです。 |?を使用するか、present?で確認します。 Nulls in aggregatesフラグがオフでリストにnullが含まれている場合にも、集計関数によって発生します。 |
E203 | ガード条件が失敗しました | let ... guardが入力を拒否しました。メッセージには条件の名前が示されます。 |
E204 | one!は要素が正確に1つであることを想定しています | ルックアップがゼロ件または複数のレコードに一致しました。このエラーは、関数が役割を果たしていることを示します。どのケースに該当するかを判断します。 |
E205 | nullとは連結できません | 値をラップします: presence(x) | ''。 |
E207 | 空のリストでは計算できません | 何もないavgには答えがありません。最初にリストが空でないことを確認します。 |
E211 | 値が範囲外です | メッセージには許可された範囲が示されます。 |
E217 | 必須フィールドが欠落しているか空白です | フィールドを指定するか、その欠如を処理します。 |
E231 | 未定義の名前 | この時点では名前がバインドされていません。 |
E232 | 無効な値: セット内のいずれかが想定されます | オプショントークンが許可されたセットに含まれていません。メッセージには許可されている内容が一覧表示されます。 |
解析と変換
値を想定される形式として解析できない、または想定される形式に変換できない場合、次のエラーが発生します。
| コード | メッセージ | 解像度 |
|---|---|---|
E206 | 無効またはサポートされていないエンコーディング | encodings()に照らして名前を確認します。 |
E208 | 無効なURL | 値が正しい形式のURLではありません。 |
E209 | JSONの解析エラー | 入力は有効なJSONではありません。メッセージには行と列が示されます。 |
E210 | JSONシリアライズエラー | 値をJSONで表すことはできません。 |
E212 | 無効な日付値 | 値はパーサーが受け入れる日付ではありません。 formatオプションを指定します。 |
E213 | 無効な期間値 | ISO 8601期間形式を確認します。 |
E214 | 無効な正規表現 | パターンはランタイムで構築され、コンパイルできません。補間された値にescape_for_regexを使用します。 |
E215 | 無効なタイムゾーン | Europe/LondonなどのIANA名を使用します。 |
E216 | あいまいまたは存在しない日時 | 日時が夏時間の境界に該当します。あいまいさを解決するには、on_gapまたはon_foldを設定します。 |
E230 | 無効な時刻値 | 値はパーサーが受け入れる時刻ではありません。 |
E233 | エンコーディングに対して無効なデータ | バイトは指定されたエンコーディングで有効ではありません。 |
E234 | 文字をエンコードできません | ターゲットエンコーディングではこの文字を表現できません。最初にconvertible_to_encoding?で確認します。 |
E235 | 丸めが必要ですが、モードはexactです | 値が要求された小数桁数に収まりません。丸めモードを受け入れるか、不正なデータとして扱います。 |
スキーマと構造
値の構造が宣言されたスキーマ、オプションマップ、またはパス式と一致しない場合、次のエラーが発生します。
| コード | メッセージ | 解像度 |
|---|---|---|
E218 | フィールドでのスキーマ型の不一致 | 出力が宣言されたOutputスキーマと一致しません。 |
E219 | フィールドでのスキーマアサーション失敗 | 宣言された制約が満たされませんでした。 |
E222 | 無効なマップフィールド | オプションマップ内の認識されないキーです。通常は入力ミスです。 WELはオプションを無視せずに検証するため、入力ミスは動作を静かに変更するのではなく、ここで表面化します。 |
E223 | 無効なJSONPath式 | パス構文を確認します。 |
E224 | サポートされていないJSONPath機能 | フィルター、ユニオン、関数拡張はサポートされているサブセットの範囲外です。代わりにdeep_collect_byを使用します。 |
E229 | キーの競合 | 2つのソースキーが同じ出力キーを生成しました。最後の書き込みが優先されます。このエラーは、それが発生したことを警告します。 |
制限
式、名前、リテラル、またはそれが処理するデータがサイズ制限を超えた場合、次のエラーが発生します。
| コード | メッセージ | 解像度 |
|---|---|---|
E225 | 結果が大きすぎます | 操作により、制限で許可されている数を超える要素が生成されます。展開する前にフィルターします。 |
E226 | 再帰制限を超えました | 式をフラット化します。 |
E227 | メモリ制限を超えました | データをより小さいバッチで処理します。 |
E228 | 値のネストが深すぎます | 構造が制限を超えてネストされています。さらに処理する前に値をフラット化します。 |
シリアル化
値をWELリテラルにシリアル化できない場合、次のエラーが発生します。
| コード | メッセージ | 解像度 |
|---|---|---|
E236 | HostFx値はWELリテラルにシリアル化できません | シリアル化する前に値を解決します。 |
E237 | NaNはWELリテラルにシリアル化できません | 除外します。 present?はNaNを存在しないものとして扱います。 |
E238 | Map内のSkipはWELリテラルにシリアル化できません | シリアル化する前にSkipを削除します。 |
その他
| コード | メッセージ | 解像度 |
|---|---|---|
E220 | 暗号化操作が失敗しました | メッセージには原因が示されます。一般的な原因の1つは、キーがアルゴリズムで必要な長さより短いことです。 HS256には少なくとも32バイトが必要です。 |
E221 | 一般エラー | メッセージに詳細が含まれています。 |
ホストエラー
WELは式の外部でこれらのエラーを発生させます。
| コード | メッセージ | キャッチ可能 | 解像度 |
|---|---|---|---|
E300 | 未解決のhostfx | はい | ホスト値が指定されていません。欠落した任意の値は復旧可能であるため、キャッチ可能です。 |
E301 | ホスト関数が失敗しました | いいえ | ホスト自体が失敗しており、その失敗は式内で復旧できません。 |
E302 | 無効なhostfxフィールド | いいえ | ホスト関数設定内のフィールドが無効です。設定を確認します。 |
E303 | TLVシリアライズエラー | いいえ | 値をホストのTLV形式にシリアル化できませんでした。 |
一般的なエラー
入力が式で想定される型または形状と一致しない場合、一般的に次のエラーが発生します。
| コード | 通常の意味 |
|---|---|
E100 | フィールドがStringとして到着して数値として使用されている、またはその逆です |
E104 | 任意フィールドがこのレコードに存在しません |
E102 | 値を変換できません: 数値が想定される場所に空の文字列があります |
E103 | Decimal金額が算術処理のどこかでFloatに遭遇しました |
変換の開始時に入力フィールドを想定される型に変換し、任意の値を明示的に処理することで、これらのエラーを減らします。 presence(...) | defaultは、実際に任意のフィールドに使用します。詳細は変換関数および共通関数を参照してください。
関連情報
- データ型: これらのエラーに関連するデータ型。
- 演算子:
|および|?の詳細情報。 - 変換関数: 各データ型を構築する方法。
- Transform data: 失敗した式が実行されるアクション。
最終更新日: