注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
このページでは、Foundry でプロジェクトを使用してデータパイプラインを構成し、次のことを実現するための推奨方法を説明します。
また、本番環境でパイプラインを適切に管理するために必要なロールと責任についても説明します。
ここでは、パイプラインのさまざまな段階と、それぞれの目的について概念的な概要を説明します。Foundry でこの構成を設定する方法を順を追って説明したガイドについては、プラットフォームセキュリティのドキュメントのデータ基盤を保護するを参照してください。
プロジェクトは、Foundry 内のデータとコードを整理する手段です。特定の作業範囲で共同作業を行う個人やチームのアクセスと権限を管理する主要な単位となります。また、プロジェクトには、プロジェクトのアクティビティのイベントログ、プロジェクトのドキュメントを記載するスペース、プロジェクトのリソース消費量や計算処理のメトリクスなどのメタデータを記録し、共有するための機能があります。
優れたプロジェクトの条件を考える際には、優れたマイクロサービスの条件を参考にしてください。目的が明確に定義されていること、下流の依存関係で使用される出力データセットや API が明確であること、そして、互いに効果的に連携し、プロジェクト管理の独自の基準を定められる程度の少人数で所有することが重要です。
新しいプロジェクトを作成するか、既存のプロジェクト内で開発するかを判断する際には、次の点を考慮してください。
以下の段階は、適切に整理されたパイプラインを構成するプロジェクトの論理的な区分を定義します。それぞれについて、後で詳しく説明します。

パイプラインの各段階は独立した単位であり、その出力は、下流のプロジェクトがインポートしてほかのユースケース、パイプライン開発、分析などに使用できるデータセットです。各プロジェクトでは、担当チームは変換手順を実装するだけでなく、出力の安定性と整合性を管理する必要があります。これには、ビルドスケジュールの管理、Data Health チェックの設定と監視、および必要に応じたユニットテストの作成や追加のデータ整合性テストが含まれます。
以下のセクションでは、パイプラインを通るデータの流れに沿って、下流にある各種類のプロジェクトを詳しく説明します。一方、パイプラインを設計する際には、オントロジー層から逆にたどって、接続する必要のあるソースシステムと、実装するパイプラインの変換処理を特定します。
Foundry のパイプラインを流れるデータは、通常、外部のソースシステムから取得されます。Data Connection サービスは、ソースシステムを登録する管理インターフェースを提供します。ソースシステムごとに1個以上の同期を設定し、データソースプロジェクト内の生データセットにデータを取り込みます。
ソースシステムや同期を設定する前に、通常はAgent 管理者が Data Connection の Agent を設定する必要があります。各 Agent は、Agent 管理者のみがアクセスできる専用プロジェクトに保存するべきです。
新しいデータソースへの新しい接続を管理するには、データソース所有者、Agent 管理者、データソース開発者の連携による、専門分野をまたいだ取り組みが必要です。ただし、ソースシステムから新しい環境へのデータの移動については、コンプライアンス/法務担当者の承認が必要になることがよくあります。
ただし、ソースシステムを一度設定すると、データソース開発者は独立して個々の同期を設定できます。これにより、チーム間のやり取りが大幅に減り、新しいシステムの接続に必要な作業を、少ない負担で1回限りのものにできます。
各接続で重要な検討事項は、同期のたびに現在のデータを置き換える SNAPSHOT と、同期のたびに既存のデータに累積的に追加する APPEND のどちらを選ぶかです。これらの概念と、効率的で性能の高いパイプラインを作成するうえでの影響をより詳しく理解するには、インクリメンタル(差分処理)パイプラインのセクションを参照してください。
データソースと同期の原則、アーキテクチャ、設定について詳しくは、Data Connection のドキュメントを参照してください。
接続の監視や、パイプラインに流れ込むデータが正確で想定の範囲内にあることを確認する方法について詳しくは、パイプラインを保守するのセクションを参照してください。
各ソースシステムのデータは、プラットフォーム内の対応するプロジェクトに取り込む必要があります。通常のパターンでは、各同期からのデータを可能な限り「生」の形式で取り込みます。「クリーン」なデータセットへの変換ステップは、プロジェクトの コードリポジトリ で定義します。

このようなデータソースごとにプロジェクトを設けるモデルには、次のような利点があります。
各データソースプロジェクトの目標は、同期されたデータを、組織全体のさまざまなユーザー、ユースケース、パイプラインで利用できるように準備することです。
出力データセットとそのスキーマは API として捉える必要があります。つまり、データソースプロジェクトの出力データセットは、すべての下流の作業の基盤となるため、論理的に整理され、長期にわたって安定していることが目標です。出力はソースのテーブルまたはファイルと1対1で対応している必要があります。データセットの各行には、ソースシステム内に直接対応する行が存在している必要があります。
この目的を達成するため、生データからクリーンデータへの変換では、一般的に次のことを目指します。
プライバシー保護のベストプラクティスとして、この早い段階で機密性の高いフィールドを特定します。利用が広がってからアクセスを修正するよりも、不要なデータが共有出力に含まれないようにする方が安全なためです。Sensitive Data Scanner はその検出を支援できます。また、プライバシーと市民的自由の実践では、データの最小化と難読化をパイプライン設計に適用する方法を説明しています。
ソースシステムが列のデータ型情報を提供している場合でも、値を STRING 型として取り込む必要があることがあります。ソースシステムで非標準の形式で表現されることが多い DATE、DATETIME、TIMESTAMP 型や、ときどき問題が生じる数値型には、特に注意してください。ソースシステムから取得するこれらのデータ型の形式が信頼できない場合は、STRING 型としてインポートすることで、より堅牢なパース処理を実装し、不正な値を処理したり、使用できない行や重複した行を削除したりするロジックを定義できます。
これらのプログラムによる処理に加えて、クリーンなデータセットについては、ドキュメントを厳密に整備する必要があります。データセットの定性的な説明、ソースシステムの来歴、適切な連絡先と管理手順、および必要に応じてデータの特徴を説明する列ごとのメタデータを記載することで、将来の開発者がデータを適切に利用できるようになります。
データソースにはそれぞれ固有の特徴がありますが、ソースシステムのクレンジングや準備には、生の文字列値を指定のデータ型にパースする処理やエラー処理など、共通するステップがあることがよくあります。データソースに類似したクレンジングのトランスフォームがいくつもある場合は、Python でライブラリを定義し、一貫したツールを提供してコードの重複を減らすことがベストプラクティスです。
/raw:データ接続の同期から取得したデータセット用です。/processed(任意):テーブル形式ではないファイルからテーブル形式のデータを作成する、ファイル単位の変換用です。/clean:/raw 内のデータセットと1対1で対応し、クレンジングのステップを適用したデータセット用です。/analysis:クレンジングのトランスフォームをテストまたは文書化し、データの形式を示すために作成したリソース用です。/scratchpad:クレンジングのトランスフォームを構築またはテストする過程で作成した一時的なリソース用です。/documentation:クレンジングのパイプラインステップを示す Data Lineage のグラフと、Foundry Notepad で作成した追加のドキュメント(プロジェクトの最上位の README 以外)用です。トランスフォームプロジェクトの目標は、意味的にまとまりのある共有データをグループ化してカプセル化し、オントロジー層に渡す標準的なビューを作成することです。
これらのプロジェクトでは、1個以上のデータソースプロジェクトからクレンジング済みのデータセットをインポートし、参照用データセットと結合して値を拡充したり、関係を正規化または非正規化してオブジェクト中心または時間中心のデータセットを作成したり、データを集計して標準的な共有メトリクスを作成したりします。
/data
/transformed(任意):トランスフォームプロジェクトの中間ステップから出力されるデータセットです。/output:トランスフォームプロジェクトの「出力」となるデータセットです。下流のオントロジープロジェクトでは、このデータセットだけを利用対象とする必要があります。/analysis:クレンジングのトランスフォームをテストまたは文書化し、データの形式を示すために作成したリソース用です。/scratchpad:クレンジングのトランスフォームを構築またはテストする過程で作成した一時的なリソース用です。/documentation:クレンジングのパイプラインステップを示す Data Lineage のグラフと、Notepad で作成した追加のドキュメント(プロジェクトの最上位の README 以外)用です。オントロジーは Foundry 全体で共通のコミュニケーションレイヤーを確立します。整理され、体系的で、安定したオントロジーを維持することは、共通状況図を充実させながら、価値のある幅広いプロジェクトを同時に進められるようにするための最重要目標です。オントロジーの設計と管理に関する概念や実務について詳しくは、オントロジーの概念に関するドキュメントを参照してください。
オントロジープロジェクトは、あらゆるパイプラインの中心であり、オントロジーで定義された単一のオブジェクトまたは関連するオブジェクトグループの定義に準拠するデータセットを生成するために必要な、最終的な変換を担います。また、これらのプロジェクトは、それとは別に、Object Explorer のビューの元データとなるよう同期されるデータセットも生成します。
オントロジーのデータセットは、それが表す業務上のオブジェクトについての正規の信頼できる情報を表すため、すべての「利用側」プロジェクトの出発点となります。上流のクレンジングやパイプラインのステップの来歴と変換ロジックは閲覧できますが、オントロジープロジェクトのデータのみを利用するプロジェクト開発者、AIP Analyst、データサイエンティスト、業務ユーザーにとって、これらのステップや中間データセットは、概念上はブラックボックスとして扱うこともできます。この意味で、オントロジーレイヤーは業務上のオブジェクトの API として機能します。
データソースプロジェクトと同様に、オントロジープロジェクトを維持するうえで不可欠な要素は次のとおりです。
これらについては、パイプラインの維持セクションと、以下のプロジェクトのドキュメント化に関するコールアウトで詳しく説明しています。
さらに、オントロジーがより堅牢になり、より多くのチームがオントロジーレイヤーに貢献するようになるにつれて、データセットの「API」の整合性を維持することがいっそう重要になります。このため、提案された変更によって出力データセットのスキーマの整合性が保たれることを確認する、追加のチェックの実装を検討してください。これについては、近日公開予定の追加ドキュメントでさらに詳しく説明します。
/data
/transformed(任意):これらのデータセットは、オントロジープロジェクトの中間ステップから出力されます。/ontology:これらのデータセットは、オントロジープロジェクトの「出力」であり、下流のユースケースプロジェクトやワークフロープロジェクトで依存先として使用すべき唯一のデータセットです。/analysis:クレンジングのトランスフォームをテストまたはドキュメント化し、データの形式を示すために作成されたリソースです。/scratchpad:クレンジングのトランスフォームを作成またはテストする過程で作成された一時的なリソースです。/documentation:クレンジングのパイプラインステップを示す Data Lineage グラフと、レポートに記述された追加ドキュメント(プロジェクトの最上位の README 以外)です。ワークフロープロジェクトは、ユースケースプロジェクトとも呼ばれ、その場の状況に合わせて柔軟に設計する必要があります。ただし、通常は単一のプロジェクトまたはチームを中心に構成し、効果的な共同作業の単位を形成するとともに、責任とアクセスの範囲を明確にします。
一般に、ワークフロープロジェクトではオントロジープロジェクトのデータを参照し、業務ワークフロー、ビジネスインテリジェンス分析、アプリケーションプロジェクトがすべて、現実世界に対する共通の認識を共有できるようにする必要があります。ワークフロープロジェクトの開発中に、オントロジーレイヤーで利用可能なデータソースだけではソースとして不十分である場合は、オントロジーを充実させ、拡張する必要があることを示しています。パイプラインのそれより前(または後)の段階のデータを参照することは避けてください。特定の種類のデータについて、信頼できる情報源が分散する可能性があります。
各プロジェクトは、開発プロセス全体を通じて十分にドキュメント化する必要があります。一般的なパターンとベストプラクティスをいくつか紹介します。
ワークフロープロジェクトの構造は、ほかの種類のプロジェクトよりも多様になります。主要なリソースにすぐにアクセスでき、そのドキュメントが十分に整備されていることを重視する必要があります。
/data
/transformed(任意):これらのデータセットは、ワークフロープロジェクトの中間ステップから出力されます。/analysis(任意):これらのデータセットは、分析ワークフローから出力されます。/model_output(任意):これらのデータセットは、モデルワークフローからの出力であり、その後、モデルの適合度を判断するために分析できます。/user_data(任意):ワークフローでユーザーが独自のデータの「スライス」を作成できる場合は、ここにあるユーザー別のフォルダーに保存します。/analysis:意思決定とフィードバックループを促進するために作成されたリソースとレポートです。/models:作成したモデルはここに保存する必要があります。
/templates:プロジェクト固有の用途向けに共有される Code Workbook テンプレートはここに保存する必要があります。/applications:追加のワークフローアプリケーションまたはサブアプリケーションはここに保存します。主要なアプリケーションは、目につきやすくアクセスしやすいよう、プロジェクトのルートに保存する必要があります。
/develop:開発中のアプリケーション、新しい機能、テンプレートはここに保存します。/scratchpad:クレンジングのトランスフォームを作成またはテストする過程で作成された一時的なリソースです。/documentation:クレンジングのパイプラインステップを示す Data Lineage グラフと、レポートに記述された追加ドキュメント(プロジェクトの最上位の README 以外)です。以下のロールは、Foundry のパイプラインのスコープ策定、設計、実装、管理に一般的に関わる担当者の例です。特にプラットフォーム開発の初期段階では、状況によってはすべてのロールが必要とは限らず、1人が同時に複数のロールを担う場合もあります。ただし、これらのロールの説明と相互の連携を全般的に検討することで、適切に組織された効果的なチームを作ることができます。
以下の図は、主要なロールと、そのロールが最もよく活動するパイプラインの区間との関係を示しています。
