メインコンテンツまでスキップ

クエリベースのコネクタのトラブルシューティング

備考

プレビュー

クエリベースのコネクタはパブリックプレビュー版として提供されています。アクセスをリクエストするには、Databricksのアカウントチームにお問い合わせください。

無効なカーソル列

症状: パイプラインがエラーINVALID_CURSOR_COLUMNSで失敗します。

原因: カーソル列の設定が正しくありません。最も一般的な原因は、カーソル列を複数指定することです。クエリベースのコネクタには、カーソル列が正確に1つ必要です。

解決:

  1. パイプライン構成ファイルを開きます(バンドルYAMLまたはCLI JSON)。
  2. cursor_columnフィールド (外部接続取り込み) またはcursor_columnsリスト (フォーリンカタログ取り込み) を確認してください。
  3. 列名が正確に1つだけ指定されていることを確認してください。余分な項目はすべて削除してください。
  4. 指定した列がソーステーブルに存在し、その値が単調増加していることを確認してください。
  5. パイプラインを再デプロイまたは更新し、新しい実行をトリガーします。

接続障害

症状: パイプラインがソースデータベースに接続できない、または接続テストでエラーが返される。

解決:

  1. Unity Catalog接続オブジェクトが有効であることを確認してください。

    • Databricksワークスペースで、 [カタログ] > [接続] に移動し、接続が存在し、資格情報が最新であることを確認します。
    • 認証情報が期限切れまたは変更された場合は、新しい値で接続を更新してください。
  2. サーバレス コンピュートからソース データベースへのネットワーク接続を確認します。

    • サーバレス コンピュート ネットワークからデータベース ホストに到達できることを確認します。
    • ファイアウォール ルール、セキュリティ グループ設定、またはVPC /VNet ピアリングにより、サーバレス コンピュート IP 範囲からデータベース ポートへのトラフィックが許可されていることを確認してください。
    • オンプレミスデータベースの場合は、ネットワークパス(AWS Direct ConnectやAzure ExpressRouteなど)がアクティブであることを確認してください。
  3. フォーリンカタログを取り込む場合は、 Unity Catalogフォーリンカタログにアクセスできることを確認します。

    • Databricksワークスペースで、 カタログ に移動し、フォーリンカタログが表示され、クエリ可能であることを確認します。
    • フォーリンカタログのテーブルに対して単純なSELECT実行して、レイクハウスフェデレーション接続が機能していることを確認してください。

パイプラインが新しい行を取り込んでいません

症状: パイプラインは正常に実行されるが、ソースに新しいデータが存在するにもかかわらず、宛先テーブルに新しい行が取り込まれない。

考えられる原因と解決策:

  • カーソルの列の値が更新されません。 ソースのカーソル列が、行が変更されたときに更新されているかどうかを確認してください。行が変更されても列の値が変更されない場合、コネクタはその変更を検出しません。書き込みごとに更新されるタイムスタンプ(例: last_modifiedなど、別の列を使用することを検討してください。
  • NULLカーソル値。 カーソル列がNULLの行は、データ取り込みから除外されます。カーソル列にNULL値を持つ行が多数ある場合、それらの行は取り込まれません。取り込むすべての行について、カーソル列にデータが入力されていることを確認してください。
  • 到着データの遅延、または時刻のずれ。 行が未来のタイムスタンプで書き込まれた場合、データがパイプラインのスケジュールに対して遅れて到着した場合、またはソースでクロックのずれが大きい場合、それらの行のカーソル値は現在の最高値を超える可能性がありますが、次の実行ではまだ表示されません。ほとんどの場合、これは次回の実行時に自動的に解決されます。
  • 全面的な更新が必要です。 カーソル列を変更した場合、またはソースデータをリセットした場合は、完全な更新を実行して最初からデータを再取り込みしてください。対象テーブルの完全更新を参照してください。

削除追跡が機能していません

症状: ソースでソフト削除された行が、パイプライン実行後も宛先テーブルに残っている。

原因: 論理的な削除の追跡には、パイプライン構成にdeletion_condition問題が必要です。 この問題は、 APIを使用してのみ設定可能です。

解決:

  1. deletion_condition問題がパイプライン構成に設定されていること、およびそのSQL式が論理的に削除された行を正しく識別していることを確認してください。 例えば:

    JSON
    "deletion_condition": "deleted_at IS NOT NULL"
  2. 式がソーステーブルの実際のデータに対して正しく評価されることを確認してください。同等のクエリをソースに対して直接実行し、削除されるはずの行が返されることを確認してください。

  3. 最近deletion_conditionを既存のパイプラインに追加した場合は、パイプラインの実行をトリガーし、実行完了後に宛先テーブルに削除が反映されていることを確認してください。

deletion_conditionの参照構文については、 「削除条件」を参照してください。