# SnowflakeアクセラレータのELTパイプライン - ヒントとトラブルシューティング

# ソース

# ソースシステムのカスタマイズ

Salesforce以外の異なるソースシステムを使用したい場合は、Salesforceのレシピをモデルとして使用して開発をガイドすることができます。Salesforceではバルクアクションとトリガーを使用しています。使用するソースにバルク機能がない場合は、回避策としてWorkatoのレシピ内にページネーションを含めるようにレシピを変更することができます。

# ファイルシステムソース

ソースとしてファイルシステムを使用している場合、OPAを使用して既存のオンプレミスファイルやオンプレミスコマンドラインスクリプトを実行することができます。また、スケジューラを使用してオンプレミスネットワークファイルシステムからS3やSnowflakeの内部ファイルシステムにファイルを移動することもできます。オンプレミスファイルコネクタはファイルのフィルタリングのためのパターンマッチングも提供しています。詳細については、オンプレミスファイルおよびオンプレミスコマンドラインのドキュメントを参照してください。

# データベースソースシステム

ソースとしてデータベースを使用する場合、ELTアクセラレータではWorkatoのクラウドおよびオンプレミスコネクタを使用してSQLサーバーに接続します。この方法を使用することで、データベースに負荷をかけることなくソースとして他のデータベースを使用することができます。ELTアクセラレータのレシピを例として使用して、他のデータベースをソースとして実装することができます。コネクタの可用性と成熟度に応じて、他のデータベースをソースとして実装することができます。

# ターゲット

ターゲットテーブルは、アクセラレータが最初にソースから抽出する生のテーブルの洗練されたバージョンです。Workatoのコネクタライブラリとサンプルレシピを使用して、他のコネクタにターゲットを拡張するのに役立つことができます。コネクタの詳細を確認して、データレイク/データウェアハウスへのバルク書き込みの機能が既にコネクタの一部であるかどうかを確認してください。

Workatoがデータを抽出した後、データパイプライン、SQLコードリポジトリの管理、およびパラメータ化のサポートには、市場で利用可能な他のツールを使用することができます。これらのツールには、GIT、DBT、Dataform、LookerMLなどがあります。

# ステージング

Workatoのコネクタを使用して、複数のステージングエリアをサポートすることができます。たとえば、ユーザーはS3、Snowflake、またはオンプレミスの内部ファイルシステムレシピの組み合わせを使用することを選択することができます。さらに、このアクセラレータのELTフレームワークを使用して、ウェアハウスの洗練されたデータや統合されたテーブルをスケジュールしてディスパッチすることができます。また、SnowflakeやAWS LambdaなどのプラットフォームでSQLやLambdaを発行するようにアクセラレータを構成することもできます。

# スキーマの前処理

ソースシステムからスキーマとメタデータを保持することは、データレプリケーションに関してユーザーが直面する主要な課題の1つです。

このアクセラレータは、スキーマをソースシステム > スキーマのレプリケーションからSnowflake > LOADまで処理することで、スキーマとメタデータを保持するためのソリューションを提供しています。

# コントロールテーブル

ELTを出発点として使用することで、コントロールテーブルを拡張してタスクのチェーン化と冪等性をサポートすることができます。

ワークフローの実行中に追加のメトリクスやステータスを追跡する必要がある場合は、それらをコントロールテーブルに追加してください。

# ジョブテーブル

ELTを出発点として使用することで、ジョブテーブルを拡張してタスクのチェーン化と冪等性をサポートすることができます。

ワークフローの実行中に追加のメトリクスやステータスを追跡する必要がある場合は、それらをコントロールテーブルに追加してください。

# ディスパッチャー

ソースレシピをさらに開発し、ディスパッチャーに追加することができます。FULLおよびIncremental/Extractのジョブタイプに対してレシピを追加するために、ディスパッチャーレシピのロジックを参照してください。

より詳細な通知やエラーを定義し、ディスパッチャーに追加することができます。

ジョブをスケジュールする際には、時間枠が重ならないようにしてください。ジョブが重なると、アクセラレータはジョブをキューに追加します。これにより、ジョブの処理が遅延します。

# スケジューラー

スケジューラーは単一の同時実行性を持ち、パイプラインの失敗を回避するために常に実行される必要があります。

コントロールテーブルとジョブテーブルを使用して、スケジューラーに追加のパイプラインとジョブのメタデータを追加することができます。コントロールテーブルを使用する際には、スケジューラーをフィルタリングすることができます。

スケジューラーを使用して追加のエラーや通知をカスタマイズすることもできます。

# 通知

ELTパイプラインボットがSlackやMicrosoft Teamsに送信する通知をカスタマイズすることができます。このアクセラレータは、ユーザーがパイプラインを作成または開始したとき、およびパイプラインが完了したときに通知を送信するように事前設定されています。

通知をカスタマイズしてさらに情報を追加することができます。デフォルトでは、作成開始完了の通知はパイプラインの名前とロードタイプのみを説明しています。

また、このアクセラレータを構成して通知を渡すこともできます。

# ソース/ターゲットシステムのレイテンシと帯域幅

ソース/ターゲットシステムからの頻繁な高容量の抽出は、APIのレート制限、ダウンロードの遅さ、接続のタイムアウトの影響を受けます。

パイプラインの実行スケジュールは、業務に影響を与えない時間帯に設定する必要があります。

ソースまたはターゲットシステムに追加のリソースを追加すると、パフォーマンスが向上します。

OPAベースの抽出システムは、ターゲットのS3バケットまたはSnowflakeのネットワークと書き込みスループットに依存しています。スレッドを追加し、仮想プライベートネットワークを作成すると、抽出速度が向上します。

# ソースシステムの変更の処理

このアクセラレータをカスタマイズして、特定のスキーマの状態を保存する必要があります。

Salesforceのみがスキーマのレプリケーションと管理をサポートしています。

# CDCによる削除の処理

ソースアプリケーションが削除をサポートしている場合、最終変更日が提供されます。一部のソースアプリケーションはソフトデリートをサポートしています。この場合、レコードが退職または非アクティブ化された日付がソースに利用可能です。

トリガーを設定して削除をキャプチャし、ソースデータベースの別のテーブルにロードすることができます。これらは顧客側から設定する必要があります。

# ボット

SlackやMicrosoft TeamsからELTパイプラインを管理するために、エンタープライズボットを使用することをおすすめします。エンタープライズボットがない場合は、通常のワークボットを使用することもできます。通常のワークボットを使用する場合は、エンタープライズワークボットと同様の中央ダッシュボードではなく、コマンドを発行する必要があります。パイプラインを制御する別の方法は、ルックアップテーブルを使用することです。ただし、この方法はエラーが発生しやすく、推奨されません。


Last updated: 2024/2/22 23:17:11