注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
learn.palantir.com でも以下の内容をご覧いただけますが、アクセシビリティの観点から、ここに掲載しています。
transform()
デコレーターを使用して、複数の出力を指定することもできます。このタスクでは、flyer_status
が Platinum
である乗客だけをフィルター処理するマルチ出力トランスフォームを作成し、各優先度(高、中、低)のフライトアラート用の別々のデータセットを作成します。
この方法では、生成されたトランスフォームの for ループで見たように、毎回すべての入力をフルロジックで実行するわけではありません。Platinum
の乗客を一度フィルター処理すれば、その後はフィルター処理されたデータフレームを共有して複数の出力データセットを作成することができます。
Master
から新しいブランチを作成し、ユーザーの名前/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("/${space}/Temporary Training Artifacts/${yourName}/Data Engineering Tutorials/Transform Project: Alert Metrics/data/output/flight_alerts_platinum_high"),
medium=Output("/${space}/Temporary Training Artifacts/${yourName}/Data Engineering Tutorials/Transform Project: Alert Metrics/data/output/flight_alerts_platinum_medium"),
low=Output("/${space}/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'))
コード内の以下の行を置き換えます。
${space}
を ユーザーの スペースに${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 トランスフォームのドキュメンテーションの このセクション で、マルチ出力トランスフォームについてもう少し詳しく読んでみてください。