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

Code Repositories でデータセットのバッチパイプラインを作成する

このガイドでは、Code Repositories アプリケーションを使った簡単なデータ変換の例を順に説明します。SQL コードの記述と編集、データセットのビルド方法を学びます。また、同僚と共同作業するためにブランチ上で作業する方法も学びます。

1. リポジトリを作成する

まず、新しいリポジトリを作成します。Foundry のプロジェクトに移動し、右上の + 新規を選択してから、コードリポジトリを選択します。

このガイドでは、SQL トランスフォームを記述します。リポジトリに名前を付け、Template の言語の下にあるドロップダウンで SQL を選択します。次に、初期化を選択します。

新規ブランチダイアログ

2. データをインポートする

作業に使う生データセットをすでにインポートしている場合は、次のステップに進めます。まだインポートしていない場合は、次のサンプルデータセットをダウンロードできます。

titanic.csv をダウンロード

このデータセットをリポジトリと同じプロジェクトにアップロードする方法については、データの手動アップロードのガイドを参照してください。

リポジトリとデータセット

3. ブランチを作成する

コードのマスターバージョンを直接編集するのではなく、個人用のブランチを作成して変更を加えることで、同僚と同じコードリポジトリで安全に共同作業できます。変更を追跡したり元に戻したりできるほか、マスターコードに変更をマージすることもできます。コードは行単位でレビューできるため、本番パイプラインへの変更についてチームメイトと簡単に議論できます。Foundry のブランチ機能については、こちらのページを参照してください。

コードリポジトリに移動すると、デフォルトでは master ブランチが表示されます。master ブランチを保護することがベストプラクティスです。保護されたブランチでは、コードを直接編集できません。保護されたブランチのファイルは読み取れますが、編集や作成はできません。

コードリポジトリに変更を加えるには、まず master ブランチのコードのコピーを含む個人用ブランチを作成する必要があります。このブランチを作成するには、現在のブランチ名の横にある new-branch アイコンをクリックします。

既存のブランチを選択し、新しいブランチに任意の名前を付けるためのダイアログが開きます。

新規ブランチダイアログ

新しいブランチを作成すると、左側に同じファイルツリーが表示されます。これは、作業を始めた master ブランチのコードのコピーを作成しただけです。これで、このブランチのファイルを編集できます。

4. コードを編集する

新しいファイルを作成する

個人用ブランチで作業できるようになったので、新しい SQL ファイルを作成します。フォルダーにカーソルを合わせたときに表示される省略記号アイコンをクリックし、新規ファイルを選択します。新規ファイルを選択すると、ファイルの種類を選択し、名前を入力するためのダイアログが表示されます。この例では、SQL トランスフォームを選択し、ファイル名を決めます(スペースや特殊文字は使わないでください)。

新しいファイルを作成

新しい SQL ファイルは、ビルド時に生成されるデータセットの配置場所に対応するファイルツリー内の位置で強調表示されます。

ファイルツリーでファイル名が緑色の場合、そのファイルはこのブランチで新規作成されたもので、作業を始めた master ブランチには存在しません。ファイル名がオレンジ色の場合、そのファイルは master に存在しますが、このブランチで変更されています。

新規作成した .sql ファイルでは、入力したファイル名に基づいて出力データセットが宣言されます。たとえば、リポジトリが /Public/Authoring 内にあり、titanicAnalysis.sql を作成した場合、新しいファイルでは出力データセット /Public/Authoring/titanicAnalysis が自動的に宣言されます。

ファイルを編集する

次に、プレースホルダーテキストを実際のデータ変換コードに置き換えます。まず、`SOURCE_DATASET_PATH` を実際の入力データセットへのパスに置き換えます。この例では、このチュートリアルのステップ (2) でインポートした titanic データセットを使います。

バッククォートを入力し始めると、オートコンプリートによって、使用できるデータセットの一覧を含む対話型メニューが表示されます。一覧からデータセットを選択すると、データセットの参照がそのデータセットの一意の ID に置き換えられます。これにより、後でデータセットが移動されても、データ変換コードは引き続き動作します。

バッククォート内にプロジェクト名を入力し、titanic データセットを見つけてメニューから選択します。

データセットを選択

引き続き、データを加工する SQL コードを記述します。SQL 関数を入力すると、さまざまなヘルプダイアログが表示されます。たとえば、「titanic」データセットの乗客の性別を1文字の略語で表す新しい列を作成したいとします。SUBSTRING 関数の使い方に関する情報を表示できます。

関数のオートコンプリート

次に進む前に、「Name」、「Age」、「Survived」、「Ticket」の列と、「Gender」という派生列を選択するデータ変換コードを完成させてください。「Gender」列は乗客の性別の略語を表します。この列を作成するには、「Sex」列に対して SUBSTRING 関数を呼び出します。

完成したコード

SQL で作成する派生列には、必ずエイリアスを定義する必要があります。SQL によるデータ変換の記述については、Spark SQL 言語リファレンスを参照してください。

5. 変更をテストする

データ変換コードを書いたら、このブランチで行った変更をテストします。変更を master ブランチにマージする前に、コードが期待どおりに動作することを確認するため、変更をテストすることが重要です。

Foundry では、コードと同様にデータセットもブランチを作成できます。これは、複数ステップのデータパイプラインの設計をテストするのに役立ちます。たとえば、このブランチに依存していないユーザーの下流の依存関係を壊すことなく、データパイプラインの一部に対する変更を個別にテストできます。

プレビューを使って変更を繰り返し改善する

コードを書きながら、プレビュー機能を使って開発サイクルを短縮し、変更をすばやく繰り返し改善できます。プレビューでは、変更のコミット、チェックの実行、Foundry でのデータセットの実体化を行うことなく、サンプリングした入力に対してコードを実行し、サンプル出力を生成します。サンプル出力はビルドの結果を代表するものではない場合もありますが、コードが動作し、期待される結果を生成していることを確認する手段になります。

使用するには、ヘッダーのプレビューをクリックするか、Code Editor の下部バーにあるプレビューヘルパーを開きます。ファイルベースのデータセットや、スキーマを持つデータセットをプレビューできます。

スキーマを持つデータセットの場合、編集したい入力の設定アイコンをクリックすると、変更のプレビュー時に使用する入力をカスタマイズできます。選択肢は次のとおりです。

  • 元の入力: 元の入力のサンプルを使用します。
  • 前回のプレビュー: 同じリポジトリで生成されたデータセットの場合、プレビューした変更を連鎖させ、データセットのプレビューを自身のプレビューへの入力として使用できます。
  • カスタムフィルターを適用: サポートされている列にフィルターを適用し、入力の特定のサブセットで変更をテストします。たとえば、「指定した期間内のタイムスタンプを持つすべての行」や「指定した文字列値を持つすべての行」などです。
  • 別のデータセットを選択: コードが必要とするすべての列を持つ別のデータセットを選択し、特定のケースをテストしたり、ほかの任意のカスタムサンプルを入力として指定したりします。

ファイルを含むデータセットで初めてプレビューを実行する場合は、サンプル内で使用するファイルを設定する必要があります。サンプルファイルを選択した後は、該当する入力を選択して再設定できます。設定を保存すると、選択したファイルのサンプルに対してプレビューがコードを実行します。

プレビューを再度実行する際は、入力ファイルを再設定する必要はありません。プレビューの実行後、サンプル出力を行またはファイルとして表示できます。必要な権限がある場合は、出力ファイルをダウンロードすることもできます。

変更をコミットする

新しいコードを書いた後、変更をコミットできます。Code Repositories では、行った作業にラベルを付けたいときに変更をコミットします。コミットする前でも、デフォルトでは作業内容が自動保存されます。コミットは、作業が一区切りついた時点の変更に明示的にラベルを付けます。

ビルドでも変更がコミットされます

コミットボタンをクリックすると、変更がコミットされ、コードの自動チェックが実行されます。Build ボタンをクリックしても変更がコミットされます。具体的には、Build をクリックすると、コードの自動チェックが実行され、出力データセットのビルドが開始されます。データセットをビルドせずに変更をすばやくテストし、コードがコードチェックに合格することを確認したい場合は、コミットをクリックします。それ以外の場合は、データセットをビルドするに進めます。

行った変更をコミットするには、右上隅の commit ボタンをクリックし、変更の概要を入力します。変更をコミットすると、コードの自動チェックが実行されます。右上隅のアイコンは、これらのチェックのステータスを示します。アイコンにカーソルを合わせると、詳細が表示されます。

チェックのステータス

このブランチでデータセットをビルドする

変更をテストするには、画面上部の build-button ボタンをクリックします。

ビルドボタンをクリックすると、コードの自動チェックと、出力データセットのビルドという2つの処理が開始されます。この間に、このブランチのコードから新しい出力データセットが作成されるか、既存の出力データセットが変更を反映するように更新されます。実行中のタスクの進行状況は、Build ヘルパーで確認できます。タスクが完了すると、checks-passed アイコンが各タスクの正常な完了を示します。代わりに checks-failed アイコンが表示された場合は、Build ヘルパーの詳細ボタンをクリックして、問題の詳細を確認します。チェックタブが開き、エラーメッセージを確認したり、ビルドを再実行したりできます。

変更のテストとデータセットのビルドに関する重要な情報は次のとおりです。

  • 右上隅の Build ボタンをクリックすることは、Code Repositories インターフェースの下部にある Build ヘルパーの Build ボタンをクリックすることと同じです。
  • ビルドボタンをクリックしてチェックを実行し、出力データセットのビルドを開始するには、まずデータ変換ロジックを含むファイルを選択する必要があります。
  • このブランチでビルドを実行するたびに、すでに実行中の既存のビルドの後ろにキューイングされます。

データセットをプレビューする

タスクが正常に完了し、データセットがビルドされたら、Build ヘルパーでビルド済みデータセットをプレビューできます。

データセットのプレビュー

Build ヘルパーにあるデータセットへのリンクをクリックすると、データセット全体が開きます。

これで、ご自身のブランチでデータセットをビルドできました。このガイドの残りを読み進めて、データ変換コードを master ブランチにマージする方法を確認してください。

6. 変更をレビューに向けて提案する

ここまでで、次の作業が完了しています。

  • 変更を加えるための専用のブランチを作成
  • データ変換コードを含む新しい SQL ファイルを作成
  • 変更をテストし、このブランチでデータセットをビルド
  • ビルドした出力データセットをプレビュー

次に、チームメンバーにレビューしてもらうために変更を提案します。変更をテストし、出力データセットの結果に問題がなければ、チームメンバーにレビューを依頼できます。

所有者はプルリクエストの自動マージを有効にできます

所有者権限を持つユーザーは、_プルリクエスト_を作成するときに「変更を自動的にマージ」オプションを有効にできます。このオプションは、リポジトリのブランチに必須チェックが1つ以上設定されており、そのチェックに合格している場合にのみ利用可能です。「変更を自動的にマージ」オプションを有効にすると、_プルリクエスト_は作成後にメインコードに自動的にマージされます。このブランチの変更がメインコードにマージされると、このブランチも自動的に削除されます。

新しいプルリクエストを作成するには、右上にある propose-changes ボタンをクリックします。「新規プルリクエスト」ページが開くので、変更の説明を入力してプルリクエストを作成するボタンをクリックします。

pr-page

これにより、提案した変更を含む新しいプルリクエストが作成されます。プルリクエストページには、提案した変更がデータパイプラインにどのような影響を与えるかをレビューするためのさまざまなツールがあります。

  • 変更されたファイルタブでは、チームメンバーがコードを行単位でレビューできます
  • 変更の影響タブには、データセットのスキーマやヘルスチェックの変更を含め、このブランチで影響を受けるデータセットがどのように変わったかが表示されます
  • パイプラインレビュータブには、データパイプラインのグラフが表示され、このプルリクエストの変更がパイプラインに与える影響が視覚的に強調表示されます。

プルリクエストの変更による影響の把握について、詳しくはこちら。

一般に、変更を master ブランチにマージする前に、ほかのユーザーにレビューを依頼することが重要です。ユーザーはファイル単位で承認または拒否できるため、プルリクエストをマージする前に、どのファイルにまだ修正が必要かを把握できます。特定のファイルをすでに承認または拒否したユーザーを確認するには、対応するインジケーターアイコンにカーソルを合わせます。

個別のファイルレビューボタンの使用は任意ですが、1つのファイルを拒否すると、プルリクエストも自動的に拒否されます。同様に、プルリクエストを承認すると、個別のファイルもすべて承認されます。

7. 変更を master ブランチにマージする

変更を確定する

変更がレビューされたら、適切な権限を持つユーザー(デフォルトでは所有者と編集者)が、プルリクエストの変更を_マージ_して master に統合できます。

このチュートリアルでは、画面右下のコミットをまとめてマージボタンを選択し、確認ダイアログでもう一度コミットをまとめてマージを選択して進めます。

リポジトリには、変更をマージする前に満たす必要がある別のポリシーが設定されている場合があります。ポリシーは、リポジトリの所有者がブランチ設定ページで定義し、プルリクエストページでコード作成者に表示されます。

変更が master に反映されていることを確認する

提案した変更が受け入れられたら、このブランチで加えた変更が master ブランチに反映されていることを確認します。そのためには、コードタブをクリックし、master ブランチを選択して、ファイルの一覧を見ます。このブランチで加えた変更が表示されていることを確認してください。

このブランチを削除する

ほかのユーザーのブランチを削除すると、そのユーザーの作業内容が失われる可能性があります

ご自身で作成していないブランチは削除しないでください。同じコードリポジトリで作業しているほかのユーザーの作業内容が失われる可能性があります。

これで、このチュートリアルの冒頭で作成したブランチを削除して整理できます。変更は master ブランチにマージされているため、このブランチを保持する必要はありません。ブランチタブに移動し、「個人ブランチ」を確認します。trash アイコンをクリックして、作成したブランチを削除します。

delete-branch

プルリクエストページには、ブランチをすばやく整理するためのマージ後にブランチを削除オプションがあります。このオプションは保護されたブランチでは利用できません。

保護されたブランチを削除するには、まず保護を解除してから、上記の手順を実行する必要があります。

8. master ブランチでデータセットをビルドする

最後のステップは、master ブランチで新しいデータセットをビルドすることです。このブランチでのデータセットのビルドと同様に、SQL コードファイルを選択した状態で、画面上部の build ボタンをクリックします。

タスクが正常に完了し、データセットがビルドされたら、Build ヘルパーのデータセットへのリンクをクリックして、データセット全体を開くことができます。

お疲れ様でした!Code Repositories を使って新しいデータ変換を作成し、変更を公開できました。さらに学習を進めるための次のステップとして、次のようなものがあります。

9. 変更を元に戻す

master ブランチにすでにマージしたコードの変更に問題が見つかった場合は、その変更を簡単に元に戻せます。master ブランチのコミット履歴から特定のコミットを見つけて、元に戻すことができます。リポジトリのブランチタブで master をクリックすると、すべてのコミットの一覧が時系列で表示されます。

commit-history

コミットハッシュをクリックすると、そのコミットのコード変更を表示できます。元に戻したいコミットが見つかったら、元に戻すをクリックします。これにより、master ブランチへのプルリクエストが開き、レビューしてマージできます。