5B. [Repositories] Code Repositories での共有ライブラリの公開と使用13 - クリーンな「乗客」出力データセットの作成、パート 2

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

13 - クリーンな「乗客」出力データセットの作成、パート 2

🔨 タスクの説明

  1. 新しい clean フォルダーに passengers_clean.py という新しいPythonファイルを追加し、以下のコードブロックでデフォルトの内容を置き換えます。

    from transforms.api import transform_df, Input, Output
    from pyspark.sql import functions as F
    from cleaning_functions import type_utils as types, cleaning_utils as clean
    
    
    @transform_df(
        Output("/${namespace}/Temporary Training Artifacts/${yourName}/Data Engineering Tutorials/Datasource Project: Passengers/data/clean/passengers_clean"),
        source_df=Input("${passengers_preprocessed_RID}"),
    )
    def compute(source_df):
    
        # define string columns to be normalized
        normalize_string_columns = [
            'first_name',
            'last_name',
            'flyer_status',
        ]
    
        # define columns to be cast to dates
        cast_date_columns = [
            'dob',
        ]
    
        # cast columns to appropriate types using functions from our utils files
        typed_df = types.cast_to_date(source_df, cast_date_columns, "MM/dd/yy")
    
        # normalize strings and column names using functions from our utils files
        normalized_df = clean.normalize_strings(typed_df, normalize_string_columns)
        normalized_df = clean.normalize_column_names(normalized_df)
    
        # select columns in the order we want and rename where appropriate
        normalized_df = normalized_df.select(
            'passenger_id',
            'first_name',
            'last_name',
            'country',
            F.col('dob').alias('date_of_birth'),
            'flyer_status',
        )
    
        return normalized_df
    
  2. 以下の項目を置き換えます:

    • ${namespace} をユーザーの名前空間に置き換えます。

    • ${yourName} をユーザーの /Tutorial Practice Artifacts フォルダー名に置き換えます。

    • ${passengers_preprocessed_RID}passengers_preprocessed.py で定義された出力のRIDに置き換えます。

      ℹ️ コードアシストがインポートステートメントを赤で下線で引いている場合は、リポジトリの meta.yml ファイルを開き、エディタの上部にある Refresh Code Assist dependencies リンクを選択してください。

  3. プレビュー ボタンを使用して、ユーザーの変換のサンプル出力を確認します。

    ℹ️ プレビューヘルパーでは、INPUTS ブロックと OUTPUTS ブロックを交互にクリックすることで、入力のサンプルと出力のサンプルを素早く切り替えて比較することができます。

  4. /datasets フォルダーに passenger_flight_alerts_clean.py という新しいファイルを作成し、デフォルトのコードを以下のコードブロックに置き換えます。

    from transforms.api import transform_df, Input, Output
    from cleaning_functions import cleaning_utils as clean
    
    
    @transform_df(
        Output("/${namespace}/Temporary Training Artifacts/${yourName}/Data Engineering Tutorials/Datasource Project: Passengers/data/clean/passenger_flight_alerts_clean"),
        source_df=Input("${passenger_flight_alerts_preprocessed_RID}"),
    )
    def compute(source_df):
    
        # normalize column names using functions from our utils files
        normalized_df = clean.normalize_column_names(source_df)
    
        return normalized_df
    
  5. passenger_flight_alerts_clean.py 変換ファイルについても、手順 2 と 3 を繰り返します。{$passenger_flight_alerts_preprocessed_RID} プレースホルダーについては、リポジトリの passenger_flight_alerts_preprocessed.py 変換ファイルを参照して出力RIDを取得します。

  6. 新しいコードを意味のあるメッセージ(例えば、「feature: add clean outputs」)でブランチにコミットします。

  7. ブランチ上でクリーンなデータセットをビルドし、データが正規化され、適切にフォーマットされていることを確認します。例えば、Master 上の passengers_preprocessed データセットとブランチ上の passengers_clean を比較することができます。

  8. コードファイル内の Input パスを Replace paths with RIDs リンクを使用してRIDに置き換えることを検討してみてください。これはコードの変更であるため、新たなコミットが必要となります。

  9. ブランチ上でビルドが成功した場合は、PRを作成してブランチを Master にマージします。

  10. Master ブランチ上でクリーンな出力をビルドします。