Warning

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

ミニプロジェクト - データエンジニアリングチャレンジ!

learn.palantir.com でも以下の内容をご覧いただけますが、アクセシビリティの観点から、ここに掲載しています。

Odyssey という製造会社で働いています。Odyssey は世界中に電子ユニットを生産する製造工場を持っています。世界的なサプライチェーンの混乱と需要の急変により、同社はある時点でクライアントに電子ユニットを届ける能力がどれだけ整っているかを把握することが重要になっています。つまり、彼らは自分たちの準備状況を理解したいのです。

背景

Odyssey では、生産に関して ユニットパーツアセンブリ、および コンポーネント という用語を使用しています。

  • プラント は、電子ユニットが生産される製造拠点です。
  • ユニット は、プラントでの物理的なオブジェクトであり、以下のいずれかです。
    • 供給業者から購入される コンポーネント、または
    • コンポーネントから構成され、プラントで生産され、オーダーを介してクライアントに届けられる アセンブリ
  • パーツ はユニットの種類です。例えば、パーツはすべての23インチのボルトのクラスであり、ユニットは実際の23インチのボルトに対応します。パーツはアセンブリパーツまたはコンポーネントパーツのいずれかです。

下の図は、関係を示しています。パートブルーは2つのコンポーネントパーツグリーンと1つのコンポーネントパーツイエローで構成されるアセンブリパーツです。パーツはユニットの設計図と考えることができます。右側では、パートブルーの3つのアセンブリユニットが示されています。それぞれが、パートグリーンの2つとパートイエローの1つのコンポーネントユニットで構成されています。

ユースケース:プラントの準備状況

プラントの準備状況を判断するために、プラントマネージャーは、ローターゲットハイターゲット の2つの目標を入力できるシンプルなワークフローを求めています。これらの数値は、それぞれ、プラントが各パーツのアセンブリユニットを届けるべき最小数と好ましい数を指定しています。 あるパーツからあるプラントの 準備カウント は、そのパーツタイプの現在配送できるユニット数です。コンポーネントユニットの場合、利用可能なユニット数です。アセンブリの場合は、以下の合計に基づいて計算する必要があります。

  • 利用可能なユニット数:既に使用されていないプラントにある既存のユニット。
  • 組み立て可能なユニット数:プラントにある既存の利用可能なコンポーネントユニットから生産できるアセンブリユニット数

パーツの 準備状況 は、準備カウントに基づいて目標に応じて決定されます。

  • ターゲット以下 - 準備カウントがどの目標にも達していない場合
  • ローターゲットで - 準備カウントがローターゲットに達しているが、ハイターゲットには達していない場合
  • ハイターゲットで - 準備カウントがハイターゲットに達している場合

2つの入力目標に基づいて、マネージャーはプラントの各パーツの準備状況を確認したいと考えています。

ワークフロー

入力目標に基づいて、各パーツの準備カウントと準備状況を計算するパイプラインを構築することが、あなたの仕事です。下の図の丸で囲まれた部分が、プロジェクトの主な成果物を表しています。

データ

以下の生データセットが Odyssey のソースシステムから利用できます:Part、PartInventory、PartMapping、Plant。データがどのように組み合わさっているかを理解するためにデータを調査する必要がありますが、以下の情報が役立ちます。

  • アセンブリでもコンポーネントでも指定されていないパーツは無視できます。
  • PartMapping データセットは、アセンブリパーツ(parent_part_id)を構成要素であるコンポーネントパーツ(child_part_id)にマッピングし、各タイプの数(child_part_count)を示しています。
  • PartInventory データセットは、各パーツの利用可能なユニット数を示しています(オーダーにアタッチされていないアセンブリユニットや、アセンブリユニットに組み込まれていないコンポーネントユニットなど)。パーツがこのデータセットに含まれていない場合、利用可能なユニット数は 0 です。

入力

パイプラインは以下の入力を受け取る必要があります。

  • Odyssey のソースシステムからの生データセット
  • Pipeline Builder でプラントマネージャーによって指定された準備目標の手動入力

プラントマネージャーがデータを手動で入力できるようにするには、Pipeline Builder の手動データ入力機能 を参照してください。手動入力テーブルは以下の3つの列で構成されるべきです。

  • plant_id(文字列、主キー)
  • low_target(long)
  • high_target(long)

実装をテストするために、手動入力テーブルの最初の行に初期値を入力してください。

  • plant_id: "1234"
  • low_target: 10
  • high_target: 50

テーブルは以下の例のようになるはずです。

出力

パイプラインは、オントロジーオブジェクトタイプをバックアップできるデータセットを出力する必要があります。各データセットには、オブジェクトタイプの主キー(PK)およびタイトルプロパティになる列が含まれている必要があります。サポートする必要がある3つのオブジェクトタイプは次のとおりです。

  • アセンブリパーツ:このオブジェクトタイプは、アセンブリパーツを表します。
  • コンポーネントパーツ:このオブジェクトタイプは、コンポーネントパーツを表します。
  • パーツの準備状況:このオブジェクトタイプは、各パーツ(アセンブリまたはコンポーネント)の各プラントの準備情報を表します。つまり、パーツごとにプラントごとに1行あるべきです。PK とタイトルのほかに、データセットには以下のオントロジープロパティをバックアップできる列が含まれている必要があります。
    • 準備状況:アセンブリパーツの「ターゲット以下」、「ローターゲットで」、または「ハイターゲットで」(コンポーネントの場合は null)。
    • 準備カウント:配送可能なユニット数(アセンブリ)または利用可能なユニット数(コンポーネント)。
    • 組み立て可能なユニット数:既存の利用可能なコンポーネントユニットに基づいて組み立てられるアセンブリユニット数(コンポーネントの場合は null)。
    • 利用可能なユニット数

データセットはオブジェクトとしてリンク可能である必要があります。出力は、1-1 外部キー、1-多外部キー、または多-多ジョインデータセットを使用したリンクを可能にする必要があります。これは、データセット間の関係に応じて異なります。

準備カウントの例

パート ABC-720-CB050940 を見てみましょう。

  • 1つのユニットは、パート ABC-000064 REV 00C-x の2つのユニットと、パート ABC-000080 Rev 00A-x の1つのユニットから組み立てられます。

  • 関与する各パーツの利用可能なユニット数は次のとおりです。

    • ABC-720-CB050940(アセンブリ):9
    • ABC-000064 REV 00C-x(コンポーネント、2x 必要):3686
    • ABC-000080 Rev 00A-x(コンポーネント、1x 必要):813
  • パート ABC-720-CB050940 で組み立てられる最大のユニット数は 813 であり、ABC-000080 Rev 00A-x ユニットの数に制限されています。ABC-720-CB050940 の準備カウントは、したがって 9 + 813 = 822 ユニットです。

  • ローターゲットが 10 でハイターゲットが 50 の場合、このパーツは準備状況が ハイターゲットで になります。