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

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

Odysseyという製造会社で働いています。Odysseyは世界中に製造工場を持ち、電子ユニットを生産しています。世界的な供給チェーンの混乱と需要の急変により、会社はあらゆる瞬間にクライアントに電子ユニットを提供できる状態がどの程度整っているかを理解することが重要になっています。つまり、彼らは自身の準備状況を理解したいのです。

コンテキスト

Odysseyでは、その生産を説明するために ユニットパーツアセンブリコンポーネントという用語を使用しています:

  • 工場は電子ユニットが生産される製造現場です。
  • ユニットは工場にある物理的なオブジェクトで、次のいずれかであることができます。
    • コンポーネント:サプライヤーから購入したもの、または
    • アセンブリ:コンポーネントから構成され、工場で生産され、注文を通じてクライアントに届けられるもの。
  • パーツはユニットの種類です。例えば、パーツはすべての23インチボルトのクラスであり、ユニットは特定の実世界の23インチボルトに対応します。パーツはアセンブリパーツまたはコンポーネントパーツのどちらかです。

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

ユースケース:工場の準備状況

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

  • 利用可能なユニット数:既に使用中でない工場に存在するユニット。
  • 作成可能なユニット数:工場に存在する利用可能なコンポーネントユニットから生産できるアセンブリユニット数

パーツの 準備状況 は、目標に基づいて準備状況の数によって決まります:

  • 目標未達 - 準備状況の数が目標に達しない場合
  • 低目標達成 - 準備状況の数が低目標に達し、高目標には達していない場合
  • 高目標達成 - 準備状況の数が高目標に達した場合

二つの入力目標に基づき、マネージャーは工場の各パーツの準備状況を見ることができます。

ワークフロー

ユーザーのタスクは、入力目標に基づいて各パーツの準備状況の数と準備状況を計算するパイプラインを構築することです。以下の図の円で囲まれた部分はプロジェクトの主な成果物を表しています。

データ

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(長)
  • high_target(長)

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

  • 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の場合、このパーツは 高目標達成 の準備状況になります。