Salesforce の取り込みのトラブルシューティング
このページでは、 Databricks LakeFlow Connect の Salesforce インジェスト コネクタに関する一般的な問題とその解決方法について説明します。
一般的なパイプラインのトラブルシューティング
実行中にパイプラインが失敗した場合は、失敗したステップをクリックし、エラー メッセージにエラーの性質に関する十分な情報が含まれているかどうかを確認します。
また、右側のパネルで [Update details] をクリックし、[Logs] をクリックして、パイプラインの詳細ページからクラスター ログを確認してダウンロードすることもできます。 ログをスキャンしてエラーまたは例外を探します。
ファイアウォールと仮想ネットワークの設定により、ストレージ サービスへのアクセスがブロックされます
Firewalls and virtual networks' settings may be blocking access to storage services. Please verify your Azure storage credentials or firewall exception settings
この問題は、ネットワーク設定に起因します。トラブルシューティングを行うには、次の操作を試してください。
LIMIT_EXCEEDED
[SAAS_CONNECTOR_SOURCE_API_ERROR] An error occurred in the Salesforce API call. Source API type: CREATE_BULK_QUERY_JOB. Error code: LIMIT_EXCEEDED.
Try refreshing the destination table. If the issue persists, please file a ticket.
これは、Salesforce アカウントで API の制限に達した場合に発生します。最初のステップとして、API の制限がリセットされるのを待ってから、宛先テーブルを更新します。問題が解決しない場合は、チケットを提出してください。このエラーの蔓延を制限するには、スケジュールまたはインジェスト量を減らします。
INVALID_USER
[SAAS_CONNECTOR_SOURCE_API_ERROR] An error occurred in the Salesforce API call. Source API type: CREATE_BULK_QUERY_JOB. Error code: INVALID_USER.
Try refreshing the destination table. If the issue persists, please file a ticket.
Salesforce の開発者向けドキュメントには、このエラーには次の 2 つの理由があることが示されています。
- インジェスト パイプラインを実行しているユーザーに適切なアクセス許可がありません
- ジョブが、現在実行しているユーザーとは異なるユーザーによって作成されました
したがって、次のようにトラブルシューティングできます。
- 接続の資格情報が正しいことを確認します。これは、資格情報を修正することで解決できます。
- 接続の使用を開始した当初からユーザーが変更されているかどうかを確認します。これは、パイプラインを完全に更新することで解決できます。
問題が解決しない場合は、サポート チケットを提出してください。
STREAM_FAILED
STREAM_FAILED: Terminated with exception: Ingestion for object XYZ is incomplete because the Salesforce API query job took too long, failed, or was manually cancelled. To try again, you can either re-run the entire pipeline or refresh this specific destination table. If the error persists, file a ticket. SQLSTATE: XXKST
コネクタが Salesforce から取り込む場合、Salesforce クエリはエラーを返す可能性があります。これにはさまざまな理由があります (時間がかかりすぎる、失敗する、手動でキャンセルされるなど)。
このエラーは一時的なものになる可能性があるため、パイプラインを再試行することから始める必要があります。それでも問題が解決しない場合は、サポート チケットを提出してください。
コピー先テーブルの行数がソース テーブルより少ない
The destination table has fewer rows than the source table.
コネクタは、ソース テーブルからすべての一意の行を取り込むことを目的としています。
まず、接続がテーブル内のすべてのローにアクセスできることを確認します。そこから、ソース テーブルに重複する行があるかどうかを確認します。これらは摂取されません。これらの問題のいずれも根本原因でない場合は、サポート チケットを提出してください。
テーブルは 1 つのパイプラインによってのみ所有できます
ExtendedAnalysisException: Table XYZ is already managed by pipeline ABC. A table can only be owned by one pipeline. Concurrent pipeline operations such as maintenance full refresh with conflict with each other. Please rename the table XYZ to proceed.
各宛先テーブルは、1 つのインジェスト パイプラインにマップされます。"XYZ" という名前のテーブルが既に含まれている送信先スキーマに "XYZ" という名前のテーブルを書き込むパイプラインを作成しようとすると、パイプラインは失敗します。別の宛先スキーマに書き込むことができます。
新しく追加された列の Null 値
テーブルに新しい列が表示されるのは、次のいずれかの理由です。
- 新しい列がテーブルに追加されました。
- 列は常にテーブルに存在していましたが、ユーザーがアクセスできるようになったのはごく最近のことです。
- 列は常にソースに存在していましたが、以前はインジェストから除外されていましたが、ユーザーが最近含めました。
この問題は、2 番目のシナリオで発生します。既に取り込まれている行の場合、新しい列のデータは NULL になります。このデータをバックフィルするには、テーブルの完全更新を実行します。
(最初のシナリオでは、列は完全にバックフィルされます。3 番目のシナリオでは、この変更を行った後にパイプラインが失敗します。完全更新を実行してデータをリセットし、パイプラインの実行を続行できます)。
テーブルまたは列がありません
次の理由により、ソース-製品名-short オブジェクトまたは列が見つからない場合があります。
-
オブジェクトまたは列にアクセスするための十分なソース-製品名-short アクセス許可がありません。
-
欠落している列は、次のものを表しています。
- 複合ソース-製品名-short オブジェクト フィールド (例: address, location)
- base64 バイナリ フィールド
-
ソース-製品名-short のテーブル名は、指定したテーブル名とは異なります。 オブジェクト名では大文字と小文字が区別され、顧客オブジェクトには
__c
サフィックスが付きます。
OAuth を使用して Salesforce 接続を作成できませんでした
OAuthを使用してソース-製品名-shortへの接続を作成しようとするとエラーが表示される場合(たとえば、「トークンの無効な付与」):
- OAuth 資格情報が正しいことを確認します。
- ソース-製品名-short のサンドボックスインスタンスに接続しようとしている場合は、[ Is サンドボックス ] を選択していることを確認します。
Salesforce 一括クエリ ジョブの失敗
ソース-製品名-shortから大量のデータを取り込むと、コネクタは一括クエリジョブをソース-製品名-shortサーバーに送信してデータを取得します。 次のようなエラーが表示される場合があります。
Ingestion for object `<object-name>` is incomplete because the Salesforce API query job took too long, failed, or was manually canceled. To try again, you can either re-run the entire pipeline or refresh this specific destination table. If the error persists, file a ticket. Job ID: 750TU00000DEdbWYAT. Job status: <Failed|Aborted|NOT_FOUND>.
この例では、一括クエリ ジョブが失敗したか、キャンセルされたか、ソース-product-name-short 側で削除されました。 クエリが失敗した理由を調査するには、ソース-製品名-short UIの 一括データロードジョブ ページにアクセスします。
https://<your-url>/lightning/setup/AsyncApiJobStatus/home
パイプラインを再試行すると、問題が解決する場合があります。
コネクタが予想よりも少ない行を取り込む
オブジェクト内のすべての行にアクセスできることを確認します。
新しい列に null 値があるのはなぜですか?
次の場合に、新しい列に null 値が表示されることがあります。
- パイプラインは、元のバージョンのテーブルで実行します。
- 列がデータソースに追加されます。
- パイプラインは、新しい列を含む新しいバージョンのテーブルで実行します。
Databricks 列の選択またはソースの更新により、初期読み込み後に新しい列が自動的に追加される場合、コネクタは以前のカーソル値から行をバックフィルします。ただし、新しい列へのアクセスを受け取った場合、コネクタはバックフィルされません。
これを解決するには、テーブルの完全更新を実行します。