注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

条件に基づくプロジェクト

サポート対象: バッチ、ストリーミング

入力データセットを列の選択または列に対する関数の適用によってトランスフォームします。

トランスフォームカテゴリ: 人気

引数

  • プロジェクトする列の条件 - 入力スキーマ内のすべての列がこの条件に一致するかテストされます。一致する場合、指定された式が適用されます。
    ColumnPredicate
  • データセット - 操作を適用するデータセット。
    Table
  • 適用する式 - 条件に一致する各列に対して 1 回適用される式。
    Expression<AnyType>
  • 残りの列を保持 - データセット内でプロジェクトされていないすべての列を保持します。
    Literal<Boolean>
  • オプション 一致した列を保持 - 条件に一致した元の列を保持します。プロジェクトされた列が同じ名前を持つ場合、元の列は上書きされます。
    Literal<Boolean>

例 1: 基本ケース

説明: 正規表現に基づいて一致する列の名前を変更します。 引数の値:

  • プロジェクトする列の条件:
    columnHasType(
     type: String,
    )
  • データセット: ri.foundry.main.dataset.a
  • 適用する式:
    dynamicAlias(
     expression:
    cast(
     expression: column,
     type: Integer,
    ),
     transformer:
    columnNameRegexReplace(
     input: column,
     pattern: str,
     replace: int,
    ),
    )
  • 残りの列を保持: true
  • 一致した列を保持: false

入力:

iddistance_strfactor_str
120001265

出力:

distance_intfactor_intid
200012651

例 2: エッジケース

説明: 一致した列と残りの列の両方を保持することができます。 引数の値:

  • プロジェクトする列の条件:
    columnHasType(
     type: String,
    )
  • データセット: ri.foundry.main.dataset.a
  • 適用する式:
    dynamicAlias(
     expression:
    cast(
     expression: column,
     type: Integer,
    ),
     transformer:
    columnNameConcat(
     inputs: [column, _as_integer],
    ),
    )
  • 残りの列を保持: true
  • 一致した列を保持: true

入力:

iddistance
12000

出力:

distance_as_integeriddistance
200012000

例 3: エッジケース

説明: 条件に一致する列を保持し、新しく作成された列と一緒に保持することができます。 引数の値:

  • プロジェクトする列の条件:
    columnHasType(
     type: String,
    )
  • データセット: ri.foundry.main.dataset.a
  • 適用する式:
    dynamicAlias(
     expression:
    cast(
     expression: column,
     type: Integer,
    ),
     transformer:
    columnNameConcat(
     inputs: [column, _as_integer],
    ),
    )
  • 残りの列を保持: false
  • 一致した列を保持: true

入力:

iddistance
12000

出力:

distance_as_integerdistance
20002000

例 4: エッジケース

説明: 一致する列を保持するが、プロジェクトされた列が既存の列を上書きする場合、一致した列は保持されません。元の列を保持するには、プロジェクトされた列の名前を新しい名前に変更する必要があります。 引数の値:

  • プロジェクトする列の条件:
    columnHasType(
     type: String,
    )
  • データセット: ri.foundry.main.dataset.a
  • 適用する式:
    cast(
     expression: column,
     type: Integer,
    )
  • 残りの列を保持: false
  • 一致した列を保持: true

入力:

iddistance
12000

出力:

distance
2000

例 5: エッジケース

説明: プロジェクトされた列のみを保持することができます。 引数の値:

  • プロジェクトする列の条件:
    columnHasType(
     type: String,
    )
  • データセット: ri.foundry.main.dataset.a
  • 適用する式:
    dynamicAlias(
     expression:
    cast(
     expression: column,
     type: Integer,
    ),
     transformer:
    columnNameConcat(
     inputs: [column, _as_integer],
    ),
    )
  • 残りの列を保持: false
  • 一致した列を保持: false

入力:

iddistance
12000

出力:

distance_as_integer
2000

例 6: エッジケース

説明: 条件に一致しなかった残りの列のみを保持することができます。 引数の値:

  • プロジェクトする列の条件:
    columnHasType(
     type: String,
    )
  • データセット: ri.foundry.main.dataset.a
  • 適用する式:
    cast(
     expression: column,
     type: Integer,
    )
  • 残りの列を保持: true
  • 一致した列を保持: false

入力:

iddistance
12000

出力:

distanceid
20001