注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
transform()
デコレータを使用して、複数の出力を指定することもできます。このタスクでは、flyer_status
が Platinum
である乗客のみをフィルター処理する複数の出力を持つトランスフォームを作成し、各優先度(高、中、低)のフライトアラート用の別々のデータセットを作成します。
この方法では、generated transform の for ループ で見たように、全体の入力を一度にすべてのロジックで処理することはありません。まず Platinum
の乗客を1回だけフィルター処理し、その後、フィルター処理されたデータフレームを共有して複数の出力データセットを作成します。
Master
から新しいブランチを作成し、yourName/feature/multi_output
と命名します。
リポジトリの Files 内の /output
フォルダーを右クリックし、新しいファイル flight_alerts_by_priority.py
を追加します。
新しい Python トランスフォームファイルのデフォルトのコードを、以下のコードブロックに置き換えます。
from transforms.api import transform, Input, Output
# Pass multiple Output specifications to the transform() decorator to split the input:
@transform(
source_df=Input("${flight_alerts_joined_passengers_RID}"),
high=Output("/${namespace}/Temporary Training Artifacts/${yourName}/Data Engineering Tutorials/Transform Project: Alert Metrics/data/output/flight_alerts_platinum_high"),
medium=Output("/${namespace}/Temporary Training Artifacts/${yourName}/Data Engineering Tutorials/Transform Project: Alert Metrics/data/output/flight_alerts_platinum_medium"),
low=Output("/${namespace}/Temporary Training Artifacts/${yourName}/Data Engineering Tutorials/Transform Project: Alert Metrics/data/output/flight_alerts_platinum_low"),
)
def alerts_by_priority(source_df, high, medium, low):
# filter the source dataframe to just those records where the passenger status is "Platinum"
platinum_df = source_df.dataframe().filter(source_df.dataframe().flyer_status == 'Platinum')
# Call the write_dataframe() function on each output to write the dataframe out to a dataset for each filtered priority
high.write_dataframe(platinum_df.filter(platinum_df.priority == 'High'))
medium.write_dataframe(platinum_df.filter(platinum_df.priority == 'Medium'))
low.write_dataframe(platinum_df.filter(platinum_df.priority == 'Low'))
コード内の以下の行を置き換えます。
${namespace}
を あなたの ネームスペースに${yourName}
を あなたの /Tutorial Practice Artifacts
フォルダー名に${flight_alerts_joined_passengers_RID}
を flight_alerts_joined_passengers.py
の 変換済み 出力の RID に置き換えます。Preview ボタンをクリックします。プレビューウィンドウには、それぞれの出力(高、中、低)に対応する3つのタブが表示されます。
結果が期待通りである場合(つまり、Platinum
にフィルター処理され、指定された priority
が適用されている場合)、ブランチ上でコードをコミットしてビルドします。
ビルドが成功した場合(つまり、データセットが期待通りにマテリアライズされた場合)、入力/出力パスを RID に更新し、コミットを検討します。この操作では、ブラウザの更新が必要になることがあります。"Replace paths with RIDs" リンクが表示されるようにするために。
PR プロセスを完了し、ブランチを Master
にマージします(マージ後にブランチを削除してもかまいません)。
Master
ブランチでコードをビルドします。
Python トランスフォームのドキュメントの このセクション で、複数の出力を持つトランスフォームについてもう少し読んでみてください。