Prophecyプロジェクトの移行
PlaidCloudはProphecyのドロップイン代替です。Prophecyのすべてのgemは、そのgemの処理を行うPlaidCloudネイティブのワークフローステップに変換されます。コンバーターはSparkパイプラインごとに1つ、SQLプロジェクトに1つのワークフローを作成し、各gemをワークフローステップ、プロジェクト変数、またはキャンバスオブジェクトにマッピングして、元のグラフを保持したうえで変換レポートを返します。変換後のワークフローがそのままでは再現しない動作は、エッジケースにまとめています。
変換が読み取るのは、指定したエクスポートだけです。Prophecyのデータセットの読み取り元や書き込み先のシステムには接続せず、プロジェクトのコードも実行しません。
変換は1回限りの操作です。同じプロジェクトをもう一度変換すると、新しいワークフローとテーブルが作成されます。PlaidCloud上で行った編集が、後のエクスポートとマージされることはありません。
PlaidCloudが作成するもの
Section titled “PlaidCloudが作成するもの”- Prophecyの各gemは、対応するワークフローステップになります。上流と下流の関係は保持されます。
- Prophecyのパラメーターはプロジェクト変数になり、gem設定内での参照はPlaidCloudの変数構文に書き換えられます。パラメーターの値は変換時に上書きできます。
- gemが読み取る各データセットは、バインド方法に応じて、インポートステップになるか、既存のテーブルまたはドキュメントを読み取ります。
- Prophecyの各ジョブまたはSQLパイプラインのスケジュールは、変換後のワークフローのスケジュール済みイベントになり、Prophecyで有効なものは有効のままになります。スケジュールを参照してください。
- スクリプト、SQL文、マクロ、その他のプロジェクトコードは、コードを保持するステップの中に取り込まれます。ステップ内のプロジェクトコードを参照してください。
- Gem Builderのgemを含むカスタムgemは、エクスポートに含まれるコードをPythonステップで実行します。ステップ内のプロジェクトコードを参照してください。
- HAVING条件や全値列を持つPivot gemも、Prophecyが提供する並べ替えやDeduplicateの種類と同様に変換されます。
- 式は、null処理、整数除算、暗黙のキャストについてSpark SQLの動作を前提に変換されます。お使いのPlaidCloudエンジンで動作が異なる箇所は、結果を確認してください。
開始する前に
Section titled “開始する前に”- Prophecyからプロジェクトを
.zipファイルとしてエクスポートします。単一のパイプライン、モデル、サブグラフの場合は.jsonファイルとしてエクスポートします。 - 読み取り可能なドキュメントアカウントにファイルをアップロードします。
- ワークフローを受け取るPlaidCloudプロジェクトを選択します。そのプロジェクトへの書き込みアクセス権が必要です。
- バインドされていないデータセットのファイルを読み取る場所を決めます。ドキュメントアカウントとベースフォルダーを選択します。
プロジェクトの変換
Section titled “プロジェクトの変換”変換は、Analyzeアプリ、REST API、またはMCPツールカタログから実行できます。3つとも同じフィールドを受け付けます。
Analyzeアプリ
Section titled “Analyzeアプリ”- Analyzeを開き、Tools → Prophecyプロジェクトをインポートを選択します。
- ターゲットプロジェクト、ドキュメントアカウントにアップロードしたProphecyプロジェクト(.zipまたは.json)、そしてバインドされていないデータセットのファイルを読み取るドキュメントアカウントとベースフォルダーであるソースファイルの場所を選択します。
- オブジェクト名とオプションで、必要に応じてワークフロー、ステップ、テーブルのプレフィックスを設定し、ワークフロータイプを選択して、未変換のコンポーネントをパススループレースホルダーとしてインポートするかどうかを選択します。
- Source Bindings and Parametersで、必要に応じてデータセット名とテーブルIDを入力してデータセットを既存のテーブルにバインドし、名前を指定してProphecyのパラメーターを上書きします。接続をバインドするには、REST APIまたはMCPツールを使用します。接続のバインドを参照してください。
- インポートを選択します。
ウィンドウには、プロジェクトの読み取り、パイプラインの解析、PlaidCloud操作へのマッピング、ワークフロー、テーブル、ステップの作成の進行状況が表示されます。完了すると、ウィンドウに変換レポートが表示されます。レポートには、信頼度別のステップ数、警告、部分的な変換、未変換のプレースホルダー、除外されたコンポーネント、アップロードするソースファイルが含まれます。
REST APIとMCPツールでは、次のフィールドを使用します。
| フィールド | 必須 | 内容 |
|---|---|---|
source_account_id |
はい | Prophecyのエクスポートを保持しているドキュメントアカウント。 |
source_file_path |
はい | そのアカウント内にある、プロジェクトの.zipファイル、または単一のパイプライン、モデル、サブグラフの.jsonファイルのパス。 |
project_id |
はい | ワークフローを作成するプロジェクト。 |
document_account_id |
はい | バインドされていないデータセットの読み取り元となるドキュメントアカウント。 |
document_account_path |
はい | バインドされていないデータセット用の、そのアカウント内のベースフォルダー。空の値または/はアカウントのルートを表し、先頭の/は無視されます。..やドットで始まるセグメント、波括弧、ドライブ文字やURLスキーム、制御文字を含むパスは拒否されます。 |
workflow_prefix |
いいえ | ワークフロー名に付けるプレフィックス。 |
step_prefix |
いいえ | ステップ名に付けるプレフィックス。 |
table_prefix |
いいえ | テーブル名に付けるプレフィックス。デフォルトはワークフロー自身の名前です。既存のテーブル名を再利用することになるプレフィックスは、何かを作成する前に拒否されます。使用されたプレフィックスは変換レポートで返されます。 |
workflow_type |
いいえ | advanced(デフォルト)はグラフをDAGキャンバス上に配置します。standardは直列のステップリストを生成します。 |
source_bindings |
いいえ | データセットと操作を既存のデータにバインドします。ソースのバインドを参照してください。 |
connection_bindings |
いいえ | プロジェクトが接続するデータベース、ファイルストア、REST API、メールを、PlaidCloudの接続とドキュメントアカウントにバインドします。接続のバインドを参照してください。 |
parameters |
いいえ | Prophecyのパラメーターを上書きします。パラメーターを参照してください。 |
allow_unconverted_placeholders |
いいえ | プレースホルダーの実行時の動作を制御します。未変換のgemのプレースホルダーを参照してください。 |
フィールドをJSONボディとして次のエンドポイントに送信します。
POST /rest/v1/analyze/prophecy/convert{ "source_account_id": "<document account id>", "source_file_path": "/prophecy/customer-360.zip", "project_id": "<project id>", "document_account_id": "<document account id>", "document_account_path": "/prophecy-inputs"}analyze.workflow.writeロールが必要です。
MCP接続のAIエージェントは、同じフィールドを指定してprophecy_convertツールを呼び出します。エージェントの接続方法はAIエージェント(MCP)を参照してください。このツールはプロジェクトを変更するため、承認する前に呼び出し内容を確認してください。
ソースのバインド
Section titled “ソースのバインド”Prophecyのエクスポートには、データの取得元は記述されていますが、データ自体も認証情報も含まれていません。source_bindingsを使用して、各データセットをPlaidCloudにすでにあるデータに接続します。キーは、変換レポートに表示されるデータセット名です。値は次のいずれかです。
- ターゲットプロジェクト内のテーブルの
analyzetable_ID。変換後のワークフローはそのテーブルを直接読み取ります。 - ドキュメントアカウントからファイルを読み取るための、
account、path、および任意でsheetを持つオブジェクト。
"source_bindings": { "customers": "analyzetable_1234", "budget": { "account": "<document account id>", "path": "/finance/budget.xlsx", "sheet": "FY27" }}読み取れないバインドは拒否されます。どのデータセットにも一致しないキーは警告として報告されます。Analyzeウィンドウではデータセットをテーブルにバインドできます。データセットをドキュメントファイルにバインドするには、REST APIまたはMCPツールを使用します。
バインドされていないデータセット
Section titled “バインドされていないデータセット”バインドのないデータセットは、まだデータのないインポートステップになり、変換レポートにその警告が表示されます。このステップは次の場所から読み取ります。
<document_account_path>/prophecy/<workflow id>/<dataset name>.csvそのパスにファイルをアップロードして、ワークフローを実行します。ファイルが配置されるまでは、インポートステップは警告付きで完了して空のテーブルを作成し、ワークフローは続行します。レポートでは、各パスがアップロードするソースファイルの下に一覧表示されます。
テーブル操作とファイル操作のバインド
Section titled “テーブル操作とファイル操作のバインド”テーブルやファイルを変更するgem(Table Operations(更新、削除、ドロップ)やFile Operation(コピー)など)は、変換によって作成されたデータに対してのみ動作します。すでに存在するデータに対して動作させるには、operation:<pipeline>/<id>という形式のキーでバインドします。<pipeline>はパイプラインの名前、<id>はgemのIDです。変換レポートには、該当する各gemのキーが記載されます。
"source_bindings": { "operation:daily_load/Operation_1": "analyzetable_5678"}破壊的なテーブル操作やファイル操作は、バインドした場合にのみ実行されます。バインドがない場合、Table Operations gemは同じプロジェクトの別のgemが書き込んだテーブルに対して動作し、それ以外の場合はそのキーを示すプレースホルダーになります。File Operationは、自身のステージングフォルダーからコピーします。バインドしない限り、変換自身のテーブルとフォルダー以外は変更されません。
接続のバインド
Section titled “接続のバインド”Prophecyプロジェクトは、接続を通じてデータベース、ファイルストア、REST API、メールサーバーに到達します。エクスポートには接続名は含まれますが認証情報は含まれないため、connection_bindingsを使用して、それぞれをすでにあるPlaidCloudの接続またはドキュメントアカウントに紐づけます。変換レポートには、バインディングの下にすべてのキーが一覧表示されます。
"connection_bindings": { "connection:warehouse_pg": "<connection id>", "connection:landing_s3": "<document account id>", "operation:daily_load/Email_1": "<connection id>"}キーは次のいずれかです。
| キー | バインド対象 | 値 |
|---|---|---|
connection:<name> |
gemまたはデータベースデータセットが指定するProphecyの接続。1つのバインドで、その接続上のすべてのgemに対応します。接続を指定しないgemはconnection:<pipeline>/<gem id>を使用し、データベースデータセットはconnection:<dataset name>を使用します。 |
PlaidCloudの接続ID。データベース接続(BigQueryとSAP HANAを含む)、MongoDBまたはApache Kafkaの接続、Salesforceの読み取りと書き込み用のSalesforce接続、Tableau gem用のTableau接続、Azure Cosmos DB、Pinecone、Power BI、およびSmartsheetとSlackの書き込み用のREST接続、またはSmartsheet、Slack、Icebergの読み取り用のSingerベースの接続。File StorageまたはDirectory gemの場合は、ドキュメントアカウントID。 |
operation:<pipeline>/<gem id> |
GET、HEAD、OPTIONS以外を送信するREST gem、およびすべてのEmail gem。 | 接続ID。RESTの場合は、認証情報を保持するREST接続。 |
バインドは、変換の外部に影響を及ぼすgemに対するユーザーの同意となります。
- APIが保持する内容を変更しうるRESTリクエストと、実在の相手に届くメールは、
operation:キーをバインドした場合にのみ動作するステップに変換されます。バインドしない場合、そのgemはキーを示すプレースホルダーになります。 - File StorageまたはDirectory gemにバインドされたドキュメントアカウントでは、そのgemのステップがそのアカウント内のファイルを書き込み、削除、移動できるようになります。
- GET、HEAD、OPTIONSリクエストは、gemが送信するとおりに送信されます。バインドしない場合は、変換後のステップでREST接続を選択するまで認証情報がありません。
バインドのないデータベースデータセットまたはExternal Table gemは、そのキーを示して接続の選択を待つステップに変換され、レポートに警告が表示されます。キーをバインドして再変換するか、ステップで接続を選択してください。gemに対して種類の合わないストアのIDや、使用できないIDのバインドは拒否されます。どれにも一致しないキーは警告として報告されます。
パラメーター
Section titled “パラメーター”parametersは、変換時にProphecyのパラメーターを上書きします。
"parameters": { "instance": "prod", "values": { "run_date": "2026-10-01", "region": "EMEA" }, "pipelines": { "daily_load": { "instance": "prod", "values": { "region": "APAC" } } }}instanceは構成インスタンスを指定します。valuesには、テキスト、数値、ブール値を指定できます。パイプラインのエントリは、そのパイプラインについてプロジェクト全体の値を上書きします。レポートには、使用されたパラメーターと、PlaidCloudの変数名に合わせて名前が変更されたパラメーターが一覧表示されます。
変換レポートの読み取り
Section titled “変換レポートの読み取り”レスポンスには変換レポートが含まれます。ワークフローを実行する前に読んでください。
| セクション | 内容 |
|---|---|
| 概要 | 高、中、低の信頼度で変換されたステップ数と、変換されなかったステップ数。 |
| 警告 | バインドされていないデータセットや、どれにも一致しなかったバインディングキーなど、コンバーターが仮定、近似、またはスキップしたすべての項目。 |
| 部分的な変換 | 変換はされるが、モードやオプションの一部でgemと異なるステップ。それぞれに確認すべき点の注記が付きます。 |
| 未変換のプレースホルダー | PlaidCloudに同等のものがないgemと、その理由。 |
| 除外されたコンポーネント | 制御フローの境界マーカーなど、それ自体は処理を持たないgemと、それぞれを吸収したステップ。 |
| アップロードするソースファイル | バインドされていない各データセットの読み取り元となるドキュメントのパス。 |
| ワークフロー | 各パイプラインに対して作成されたワークフロー(実行順)。コンバーターが拒否したパイプラインには印が付きます。 |
レポートには、使用されたテーブルのプレフィックスと適用されたパラメーターも記載されます。コンバーターが確信を持てないステップは、最も可能性の高い解釈で変換され、レポートに注記が付きます。そのようなステップは、Prophecyの出力と照らして確認してください。
ステップ内のプロジェクトコード
Section titled “ステップ内のプロジェクトコード”Prophecyプロジェクトにはコードが含まれています。Script gem、SQL文、マクロ、動的入力、ストアドプロシージャの呼び出し、カスタムgemなどです。コンバーターはそのコードを実行せず、ステップの中に配置します。
- SQLはテナントのSQL方言に変換されてSQLステップに配置され、gemの入力はクエリが読み取る名前で利用できます。
- PythonスクリプトはテーブルアクセスをPlaidCloud用に書き換えたうえでPythonステップに配置されます。Spark DataFrameのメソッドを呼び出すスクリプトは、その呼び出しを保持したままステップ内で実行されます。
- Gem Builderのgemを含むカスタムgemは、パイプラインのエクスポートに含まれるPySparkコードをPythonステップで実行します。
- 既知のdbtパッケージのマクロは、そのマクロと同じ処理を行う標準ステップになります。ご自身のプロジェクト内のマクロや、エクスポートに含まれるパッケージ内のマクロも、ifブロックやforブロック、set、フィルター、ネストされたマクロ、アダプターディスパッチを含めて読み取られ、変換されます。
- Aggregate gem内のPythonユーザー定義集計関数は、グループごとにPythonステップで実行されます。
プロジェクトコードを保持するステップにはすべて警告が付き、変換されたSQLにも警告が付きます。ワークフローを実行する前に、そのようなステップのコードを確認してください。コンバーターは、コードの文字列やコメント内にある認証情報らしきものを取り除くため、認証情報はコードではなく接続に追加してください。
未変換のgemのプレースホルダー
Section titled “未変換のgemのプレースホルダー”コンバーターが再現できないgemは、そのgemの名前を持つプレースホルダーステップとして作成されます。たとえば、コードがエクスポートに含まれていないカスタムgemや、operation:キーをバインドしていない場合の、データを変更しうるRESTリクエスト、Email、テーブル操作、ファイル操作など、変換の外部のデータを変更するgemです。接続がバインドされていないデータベースデータセットやExternal Tableはプレースホルダーではなく、接続の選択を待つステップに変換されます。デフォルトでは、プレースホルダーはワークフローがそこに到達した時点で失敗します。そのため、実際には行われていない処理について、実行が成功と報告されることはありません。
allow_unconverted_placeholdersをtrueに設定する(ウィンドウでは未変換のコンポーネントをパススループレースホルダーとしてインポート)と、各プレースホルダーが代わりにパススルーステップとしてインポートされます。この場合、実行はそのステップを越えて続行し、プレースホルダーの出力はその入力になります。レポートにはパススルーのプレースホルダーの数とそのステップが一覧表示されます。その結果が重要な場合は、ネイティブステップでその機能を作り直してください。
変換後のワークフローの実行
Section titled “変換後のワークフローの実行”- プロジェクト内の新しいワークフローを開きます。レポートには実行順に一覧表示されます。
- Prophecyのパラメーターから作成されたプロジェクト変数を設定します。
- バインドされていないデータセットのファイルを、レポートに記載されたパスにアップロードします。
- プロジェクトコードを保持するステップを確認します。
- ワークフローを実行し、各ステップの出力テーブルを確認します。
Prophecyのスケジュールから作成されたスケジュール済みイベントは、Prophecyで有効だったものは有効のままになるため、スケジュールに従って変換後のワークフローの実行を開始します。先にワークフローを確認したい場合は、スケジュール済みイベントでイベントを無効にし、準備ができたら有効にしてください。
変換される内容
Section titled “変換される内容”Prophecyのすべてのgemは、ネイティブステップ、プロジェクト変数、スケジュール済みイベント、キャンバスオブジェクトのいずれかに、そのgemが提供するオプションを含めて完全に変換されます。Prophecy変換マトリックスには、すべてのgemと、それが変換されるPlaidCloudのステップが一覧表示されています。確認すべきいくつかの動作はエッジケースにまとめており、変換レポートでは該当箇所ごとに示されます。
| 機能 | 変換方法 |
|---|---|
| 書き込みモード | ターゲットの書き込みモードはプラットフォームのステップに変換されます。対象は、チェックとタイムスタンプの方式を備えたSCD2(タイムスタンプ方式では、gemのscd2.updatedAtColumnが指定する列から各バージョンの日付を決定します)、マージ、replaceWhere、insertIntoです。マージは、一致時の更新句と不一致時の挿入句に含まれる列ごとのSET式を適用します。列を設定しない句は、すべての列を受信行から取ります。空のターゲットへの最初の実行では、dbtやDeltaと同様にすべての行が書き込まれます。最初の実行では、事前にテーブルを作成する必要はありません。自身が書き込むデータセットを読み取るパイプラインでも同様です。ただし、そのデータセットの列がエクスポートに記載されていない場合は、最初の実行の前にテーブルを作成してください。以降の実行では、増分フィルターまたはマージ条件が適用されます。errorモードとignoreモードは、テーブル存在条件でチェックします。 |
| タイムトラベル | versionAsOfまたはtimestampAsOfでテーブルの以前のバージョンを読み取るDeltaまたはカタログのテーブルソースは、バインドした接続を通じてDatabricksからそのバージョンを読み取ります。 |
| ストリーミング | ストリーミングのソースとターゲットは、スケジュールされたバッチとして実行されます。ストリーミングシンクはテーブルを追記ではなく置き換えるため、再実行しても行が重複することはありません。新しく到着したデータを取り込むには、ワークフローをスケジュールしてください。 |
| データベース | JDBC、Snowflake、Redshift、Hive、BigQuery、SAP HANA、External Tableのgemは、バインドしたPlaidCloud接続を通じて読み取りと書き込みを行います。BigQueryのデータセットはSQLのインポートステップで読み取り、BigQuery接続上のExport External Database Tablesステップで書き込みます。HANA gemのどのマージモード(SCD2と削除モードを含む)で書き込まれるSAP HANAのテーブルも、ターゲットの横にステージングされ、ターゲットの主キーまたはgemのマージ列でターゲットにマージされます。ターゲットがない場合は、先に作成されます。 |
| MongoDBとKafka | MongoDBのデータセットは、フィルターや集計パイプラインを含めてMongoDBのインポートステップで読み取り、列を宣言しない読み取りでは、Sparkコネクターと同様に最初のドキュメントから列を取得します。書き込みには、対応する書き込みモードでMongoDBのエクスポートステップを使用します。updateは一致するドキュメントのフィールドを更新するか、ドキュメントを挿入します。ignoreはコレクションにドキュメントがない間だけ書き込みます。errorはコレクションにドキュメントがある場合に実行を停止します。Kafkaソースは、開始オフセットと終了オフセットの間のトピックをKafkaのインポートステップで読み取り、Kafkaターゲットは各行をKafkaのエクスポートステップで送信します。OAUTHBEARERでサインインするKafkaデータセットは、エクスポートに認証情報が含まれないため、バインドしたKafka接続のOAuthサインインを使用します。 |
| Azure Cosmos DB | 読み取りでは、Cosmos DB認証を使用するREST接続上でRESTリクエストステップを使い、データセットのクエリを送信するか、すべてのドキュメントを読み取り、ページ間では継続ヘッダーに従います。書き込みでは、gemの書き込み戦略(上書き、追加、削除、パッチ)に従って、行ごとに1つのリクエストを送信します。ドキュメントのETagを持つ行は、そのドキュメントが変更されていない場合にのみ置換または削除されます。その理由、またはドキュメントが存在しない、もしくはすでに存在するという理由でコンテナーが拒否した行は、Sparkコネクターと同様にスキップされます。ignoreモードは、コンテナーにドキュメントがない間だけ書き込みます。 |
| Salesforce | 読み取りではSalesforce: オブジェクトのクエリステップを使用し、gemが要求した場合は削除済みレコードとアーカイブ済みレコードも含めます。書き込みでは、行ごとに1つのリクエストで挿入、更新、アップサート、削除を行います。アップサートはgemの外部IDフィールドで照合し、指定がない場合はIdで照合します。 |
| Smartsheet、Slack、Pinecone | 列を宣言した名前付きシートのSmartsheet読み取りは、REST接続を通じてシートを取得し、シートの行ごとに1行、宣言した列ごとに1列を取り込みます。それ以外のSmartsheet読み取りと、SlackおよびIcebergの読み取りにはImport Singer Sourceステップを使用します。Smartsheetの書き込みは名前付きシートに行を追加し、上書きでは先にシートの行を削除します。Slackの書き込みは行ごとに1件のメッセージを投稿し、Slackが拒否したメッセージはステップを失敗させます。Pineconeインデックスはベクトルとそのメタデータとして読み取られ、書き込みでは行がベクトルとしてアップサートされます。 |
| TableauとPower BI | TableauとTableau Writeは、バインドしたTableau接続上でPublish to Tableauステップを使用して、入力をHyperエクストラクトとして公開します。Power BI Writeは、OAuth 2.0のREST接続を通じて入力をPower BIのプッシュデータセットにプッシュし、ワークスペースを名前で検索して、データセットが新規であれば作成します。 |
| ファイル形式 | CSV、JSON、Parquet、Avro、Excel、XML、固定幅、およびORC のインポートステップによるORC。形式オプションはマッピングされるか、行に影響しない場合はニュートラルとして扱われます。たとえば、Avro読み取りの更新時刻ウィンドウ、固定幅ファイルのEBCDICエンコーディング、ヘッダーレコードとフッターレコード、改行のないレコード、Excel読み取りのシートマップとパスワード、CSV書き込みの引用符オプション、値ごとに1シートのExcel書き込みです。圧縮テキストファイルは、gzip、Deflate(zlib)、Zstandard、LZ4、Snappy、LZOで読み書きでき、圧縮ファイルは名前がそのコーデックの拡張子で終わる場合に読み取られます。暗号化されたファイルはその場で復号および暗号化されます。暗号化ファイルを参照してください。 |
| File Operation | CopyとMoveは、バインドしたフォルダーに対するドキュメント: ファイルのコピーステップまたはCopy Directoryに変換され、gemのfilenameRegexに一致する名前のファイルのみを保持します。gemが再帰処理する場合は、各ファイルのソースフォルダー以下のパスを保持します。 |
| Directory | バインドしたドキュメントフォルダーのファイルを、gemの列でディレクトリ一覧ステップにより一覧表示します。シート名オプションがオンの場合、各Excelワークブックはシートごとに1行とsheet_nameを返し、それ以外のファイルは空のsheet_nameで1行を返します。 |
| gemまたは関数 | 変換方法 |
|---|---|
| Surrogate Key | キーは、gemのキーファイルと同様に、最後に発行したキーを保持するテーブルから継続します。同じキーファイルを指定するすべてのgemがそのテーブルを共有するため、キーが重複することはありません。行のない実行ではテーブルは変更されず、実行によってキーが発行される前は、初期値からキーが始まります。 |
| Column Parser、XML Parse、JSON parsing | XMLとJSONのテキストは、XML解析ステップとJSON 解析ステップで解析され、各フィールドは要素のテキスト、属性、または子要素から読み取られます。スキーマなしで解析されたXMLでは、Sparkのschema_of_xmlと同様に、データから各フィールドの型が決まります。 |
| Business rules | 式の中で呼び出されるプロジェクトのビジネスルールは、設定する列ごとに1つのCASEで、同じ条件に変換されます。 |
| Casts | テキストからdecimalまたはlongへのキャストはSparkに正確に従います。数値の前後のスペースと制御文字は取り除かれ、decimalはスケールに合わせて四捨五入され、数値でないテキストや範囲外の値はnullになります。 |
| Dates and times | 日付と時刻の形式は、Databendを含め、お使いのワークスペースのエンジン向けに記述されます。window()は、Sparkと同じ揃え方で、各タイムスタンプをそのタンブリングウィンドウに配置します。 |
| Iterator outputs | 出力列が実行時にしか分からないTable IteratorまたはWhile Iteratorは、Prophecyが各パスを積み重ねるのと同様に、すべてのパスが収まる型に各列を広げたうえで、テーブル: 和集合(すべて)により各パスの行を位置で集めます。 |
| Data Encoder/Decoder AES | すべてのエンジンで動作します。キー、およびgemが指定する場合は初期化ベクトルと追加データは、ユーザーが設定するワークフロー変数aes_key、aes_iv、aes_aadから取得されます。 |
| Data Masking hash | Sparkのhash()と同じ値を計算します。 |
| Buffer、Simplify、Heat Map | BufferはProphecyと同じセグメント数で角を丸めて描画し、Simplifyは同じ頂点を削除します。Heat Mapは、gemの解像度でH3六角形に熱量を合計し、decimalの熱量はdecimalのままです。 |
サービスと制御
Section titled “サービスと制御”| gem | 変換方法 |
|---|---|
| Pipeline | 指定されたパイプラインを、入力行ごとに1回(入力がない場合は1回、行がない場合は実行しない)、ワークフローループで実行します。各パラメーターは、定数、行の列、またはそれに対する式から設定されます。以前の実行が失敗しても、すべての実行が進行します。gemの出力には、Prophecyが記録するのと同様に、実行ごとに1行で、ステータス、メッセージ、時刻が含まれます。 |
| Schedules | ProphecyのジョブまたはSQLパイプラインのスケジュールは、変換後のワークフローにProphecy <name>という名前のスケジュール済みイベントになり、Prophecyで無効にされていない限り有効です。Sparkジョブは、構成の上書きや実行条件なしで、変換された1つのパイプラインを実行する場合に、この方法で変換されます。 |
| Script | Pythonスクリプトは、Pythonステップに配置されます。スクリプトがConfigに設定した値は、後続のステップが読み取るワークフロー変数になり、ProphecyのConfigと同様に、各実行の開始時にパイプラインの値にリセットされます。 |
| REST API、REST API Enrich | 入力行ごとに1つのリクエストを行うRESTリクエストステップで、Prophecyと同様にエラーレスポンスを保持します。Enrichはステータス、理由、最終URLも読み取ります。非同期の結果を待つリクエストは、レスポンスが完了を示すまでポーリングします。 |
| Stored Procedure | 引数を渡すgemは、入力行ごとに1回、リモート実行: SQLでプロシージャを呼び出し、各引数はその列からパラメーターとしてバインドされます。引数のないgemは、エージェント経由で1回呼び出します。接続またはエージェントは、変換後のステップで選択します。 |
| Email、Email Data | Cc、Bcc、Reply-Toを備えたNotify Via Emailステップで、フィールドが列から読み取られる場合は行ごとに1通のメッセージを送ります。 |
| OpenAI、Bedrock、SageMaker Endpoint | ワークスペースのLLM接続上でのText: NLP (AI)ステップ。OpenAIとBedrockの埋め込みにはEmbedタスクを使用し、OpenAI互換またはAzure OpenAIの接続が必要です。Anthropic接続は拒否されます。 |
| Pinecone Lookup | 行ごとのRESTリクエスト。 |
| Data Quality Check、Deequ、Soda | チェックはウェアハウス内で実行され、結果テーブルに書き込まれます。Data Quality Checkが実行を停止するのは、gemがminFailedChecksまたはfail_pipelineのポストアクションを設定している場合のみで、それ以外は結果テーブルに失敗が一覧表示されます。DeequとSodaが実行を停止することはありません。数値列に対する最小長または最大長のチェックは、数値をテキストとして計測します。Sodaのチェックは、欠損値、無効値、有効値、統計、長さ、パーセンタイル、列をまたぐ重複、鮮度、失敗した行、独自のメトリッククエリを含め、プロジェクトのYAMLから変換されます。 |
| ToDo | 実行がそこに到達したときに、元のツールとメッセージを示すエラーを発生させます。 |
暗号化ファイル
Section titled “暗号化ファイル”暗号化されたファイルを読み取るFile Storage gemはドキュメント: ファイルを復号ステップに変換され、インポートが読み取る前にファイルを専用のフォルダーに復号します。復号されたコピーは後で削除されます。暗号化ファイルを書き込むgemは、そのフォルダーにエクスポートしてから、ドキュメント: ファイルを暗号化でファイルを暗号化して所定の場所に配置します。AESとBlowfishのファイル、およびパスワード保護されたExcelワークブックに対応しています。
エクスポートにキーは含まれないため、変換後のステップはワークフロー変数からキーを読み取ります。AESまたはBlowfishのキーにはaes_key、ワークブックのパスワードにはxlsx_passwordを使用します。ワークフローを実行する前に変数を設定し、これらのファイル専用のキーを指定してください。キーとパスワードのフィールドは変数参照のみを受け付けるため、キーをステップに直接入力することはありません。
エッジケース
Section titled “エッジケース”ここでは、変換後のワークフローがそのままでは再現しない動作を示します。変換レポートでは、該当箇所ごとにそれぞれが示されます。
- エクスポートに含まれないコードやデータ: コードがエクスポートに含まれていないGem Builderなどのカスタムgemや、エクスポートに含まれないdbtパッケージのマクロの呼び出しは、欠けているものを示すステップになります。パイプラインのコードとdbtパッケージを含めてプロジェクトをエクスポートするか、PythonまたはSQLステップでロジックを作り直してください。Ab Initio Error DetectionとMTimeのgemは、適用するルールがエクスポートに含まれていないため、入力をそのまま通過させます。プロジェクト外のファイルから読み取るSodaチェック、以前のスキャンや別のデータセットと比較するSodaチェック、Sodaが名前で指定する形式をテストするSodaチェックは、結果テーブルに行がありません。後のステップで計算してください。
- パイプラインの実行時にしか分からない結果: レスポンスをフラット化するREST API gemは、フィールド名が宣言されていない場合、レスポンス全体を1つの列に入れます。これは実行して初めて分かります。必要なフィールドは後のステップで抽出してください。dbtのコンパイル時にウェアハウスにクエリを発行するdbtマクロは、それを示すステップになります。クエリを、それが返す値に置き換えてください。SparkのStoredProcedure gemは実行されますが、OUT値は返されません。出力はパススルーの列です。
input_file_name()は、名前を付けるファイルがないテーブルまたはDeltaソースでは空文字列を返します。集計、ウィンドウ、または複数入力のgem内のhash()/xxhash64()はウェアハウスによって計算されるため、Sparkの結果と異なる場合があります。 - プロジェクトの変換時にステップへ書き込まれる値: 引用符、バックスラッシュ、波括弧を含むパラメーター値、SQLステップが読み取るパイプラインの値、および構成によりDeltaテーブル操作が指定するデータベースは、固定値としてステップに書き込まれます。そのため、ワークフロー変数を変更してもこれらは変わりません。構成が変わったときは、ステップを編集してください。
- Scalaコード: Scalaスクリプト、Scala式、Scalaのユーザー定義関数または集計関数は、それを示すステップになります。SQLまたはPythonで書き直してください。
- KafkaのKerberosサインイン: Kerberos(GSSAPI)でサインインするKafkaのソースまたはターゲットは、Kerberosのサービス名とサインインメカニズムなしで変換されます。それらはPlaidCloudの接続で設定してください。
- ストリーミング: ストリーミングのソース、ターゲット、パイプラインは、実行時に存在するデータに対するバッチワークフローとして実行されます。必要な頻度でワークフローが実行されるようにスケジュールしてください。
- ジョブのコンポーネント: Sparkジョブは、その1つのパイプラインとスケジュールが変換されます。その他のコンポーネント、実行条件、構成の上書きは変換されません。
- まれな呼び出し: ロールアップやウィンドウから呼び出されるユーザー定義集計関数と、if、for、set、一般的なフィルターを超えるJinjaを使用するdbtマクロは、そのgemを示すステップになります。関数はAggregate gemから呼び出すか、マクロをインライン化してください。