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

struct をフラット化

対応しているデータタイプ: バッチ、ストリーミング

struct のすべてのフィールドを取り、出力データセットの行に変換します。 変換カテゴリ: Struct

宣言された引数

  • データセット - struct 行を含むデータセット。
    テーブル
  • - フラット化される struct 行を評価する式。
    式<Struct>
  • 最大深度 - 入れ子になった struct がフラット化される深さを指定します。
    リテラル<Integer>
  • オプション 列プレフィックス - フラット化の際に作成されるすべての列にプレフィックスを追加します。
    リテラル<String>
  • オプション セパレーター - 入れ子になった struct から来るフィールド名を区切ります。
    リテラル<String>

例 1 - 基本ケース

引数の値:

  • データセット: ri.foundry.main.dataset.a
  • : raw
  • 最大深度: 2
  • 列プレフィックス: new_
  • セパレーター: null 入力: | raw | | ----- | | {
    airline: {
    id: NA,
    name: new air,
    },
    tail_no: NA-123,
    } | | {
    airline: {
    id: FA,
    name: foundry airways,
    },
    tail_no: FA-123,
    } |

出力:

new_airline_namenew_airline_idnew_tail_noraw
new airNANA-123{
airline: {
id: NA,
name: new air,
},
tail_no: NA-123,
}
foundry airwaysFAFA-123{
airline: {
id: FA,
name: foundry airways,
},
tail_no: FA-123,
}

例 2 - 基本ケース

引数の値:

  • データセット: ri.foundry.main.dataset.a
  • : raw
  • 最大深度: 2
  • 列プレフィックス: new_
  • セパレーター: #SEPARATOR# 入力: | raw | | ----- | | {
    airline: {
    id: NA,
    name: new air,
    },
    tail_no: NA-123,
    } | | {
    airline: {
    id: FA,
    name: foundry airways,
    },
    tail_no: FA-123,
    } |

出力:

new_airline#SEPARATOR#namenew_airline#SEPARATOR#idnew_tail_noraw
new airNANA-123{
airline: {
id: NA,
name: new air,
},
tail_no: NA-123,
}
foundry airwaysFAFA-123{
airline: {
id: FA,
name: foundry airways,
},
tail_no: FA-123,
}

例 3 - Null ケース

引数の値:

  • データセット: ri.foundry.main.dataset.a
  • : raw
  • 最大深度: 2
  • 列プレフィックス: new_
  • セパレーター: null 入力: | raw | | ----- | | null | | {
    airline: null,
    tail_no: NA-123,
    } | | {
    airline: {
    id: FA,
    name: null,
    },
    tail_no: FA-123,
    } |

出力:

new_airline_namenew_airline_idnew_tail_noraw
nullnullnullnull
nullnullNA-123{
airline: null,
tail_no: NA-123,
}
nullFAFA-123{
airline: {
id: FA,
name: null,
},
tail_no: FA-123,
}