Snowflake Data Clean Rooms のトラブルシューティング

このページは、クリーンルームを使用する際の一般的なトラブルシューティングガイドです。API を使用している場合、呼び出すプロシージャの参照ドキュメントと、ユースケースガイドラインを必ず読んで、問題がそこに含まれているかどうかを確認してください。

開発者の方は、追加情報については 開発者トラブルシューティングガイドライン をご参照ください。

インストールの問題

Analysis and template issues

エラー:

ビュー所有者としての共有ビュー <CLEAN ROOM VIEW NAME> の拡張中の失敗:アプリケーション SAMOOHA_CLEANROOM_APP_<CLEAN ROOM ID> が共有する外部/Icebergテーブル <TABLE_NAME> を解決する権限が不足しています

原因:

外部テーブルまたはIcebergテーブルにアクセスしようとしていますが、外部テーブルとIcebergテーブルがプロバイダーとコンシューマーの両方のアカウントで有効になっていません。

解決策:

プロバイダーとコンシューマーの両方のアカウントで 外部テーブルとIcebergテーブルが有効化されている ことを確認してください。


 

エラー:

SQL コンパイルエラー:ビュー所有者としての共有ビュー「 <CLEAN ROOM VIEW NAME> 」の拡張中の失敗:オブジェクト「 <some object name> 」は存在しないか、許可されていません。

原因:

クリーンルームの付与は、アクセスしようとしているデータセットに存在しなくなりました。ソースオブジェクトの名前が変更されたか、置き換えられたことが原因と考えられます。

解決策:
  • テーブルの名前が変更された場合は、名前をクリーンルームでリンクされているものに戻します。オブジェクトも再登録する必要がある場合があります。

  • テーブルが再作成された場合は、クリーンルームでオブジェクトを再度登録します。


 

エラー:

Query returns zero results and you think that's wrong.

考えられる原因とソリューション:
  • どちらの側にも、データの結合や表示を妨げる​​可能性のあるデータのマスキングポリシーがないことを確認します。

  • 結合列が同じ方法でフォーマットされていることを確認します。

  • Confirm that you are not falling below any fixed threshold settings. The audience overlap has a default threshold of five, meaning that fewer than five rows will be omitted from the results. Ask the provider what the threshold is, and confirm whether you have any overlaps greater than that number; temporarily modify the overlap specifications to guarantee large segment groups to see whether you get results then.


 

エラー:

Uncaught exception of type 'STATEMENT_ERROR' ... SQL compilation error: invalid URL prefix found ...

原因:

The template uses a string value, rather than identifier, for a column or table name. This happens when the template doesn't properly convert string variables into identifiers by using either the sqlsafe filter or the IDENTIFIER function.

For example, passing in p.col1 to my_column to the template SELECT {{ my_column }} ... resolves to SELECT "p.col1" .... "p.col1" is a string, not a valid identifier (and p. is interpreted as a URL prefix).

解決策:

Apply either the IDENTIFIER function (preferred) or the sqlsafe filter to the variable:

  • SELECT IDENTIFIER({{ my_column }}) ... (Preferred)

  • SELECT {{ my_column | sqlsafe }} ...


 

エラー:

**FAILURE**: Unauthorized columns: column_name

原因:

Your query uses a column of collaborator data that is not part of the collaborator's usage policy in the clean room. For example, you are trying to SELECT a column of collaborator data that is not in their column policy.

解決策:

Use a column that your collaborator has approved for projection, joining, or activation in your query. Inspect the template for policy filters by calling consumer.view_template_definition, then see which columns the provider allows you to project or join by calling consumer.view_provider_join_policy or consumer.view_provider_column_policy. Finally either update your query to pass in an approved column, or ask your collaborator to adjust their usage policy to include the column that you want to use.


 

エラー:

**FAILURE**: Invalid aliases: P.column name' or **FAILURE**: Invalid aliases: C.column name'

原因:

You are using uppercase P or C table aliases to scope a column name. You must use lowercase p or c aliases when scoping a column name. (The template itself can use either uppercase or lowercase when declaring the alias.)

解決策:

Always use a lowercase alias when scoping a column.

Example:

-- Always scope the column name with a lowercase alias.
-- The casing of the alias declared for the table doesn't matter.

-- These will fail.
SELECT P.hashed_email FROM mydb.mysch.t1 AS P;
SELECT P.hashed_email FROM mydb.mysch.t1 AS p;

-- These will succeed.
SELECT p.hashed_email FROM mydb.mysch.t1 AS P;
SELECT p.hashed_email FROM mydb.mysch.t1 AS p;
Copy

 

エラー:

**FAILURE**: Invalid aliases: database name.schema name.column name

原因:

You must always reference columns using the p or c alias declared for a table. Columns can't reference a table by its full path.

Invalid: SELECT hashed_email FROM mydb.mysch.t1;

解決策:

Use the p or c (lowercase!) table alias when referencing a column:

Valid: SELECT p.hashed_email FROM mydb.mysch.t1 AS p;

クロスクラウドの問題

エラー:

単一アカウントのテストクリーンルームでの Analysis Execution Failure: 'SnowparkSQLException' due to Database Listing Conflict

原因:

クロスクラウドの自動フルフィルメントは単一アカウントのテストクリーンルームではサポートされていません。

解決策:

テスト中に library.disable_laf_on_account を呼び出して、このクリーンルームアカウントでのクロスクラウドの自動フルフィルメントを無効にするか、このクリーンルームでクロスクラウドのプロシージャ呼び出しを行わないようにしてください。

クラウドデータコネクタの問題

AWS 、Azure、またはGoogle Cloud Storage用の外部データコネクタで問題が発生している場合は、 Snowflake Data Clean Rooms: 外部データコネクタのトラブルシューティング をご参照ください。

リクエストログの問題

エラー:

**Failure**: Request logs unable to be mounted. Try again.

原因:

マウントリクエストログは内部クリーンルームでは成功しましたが、同じアカウントの外部クリーンルームでは失敗しました。内部クリーンルームは、外部クリーンルームよりも要件が少なくなっています。インストールは、内部クリーンルームの使用要件を満たしていましたが、外部クリーンルームの使用要件を満たしていませんでした。

解決策:

メールがクリーンルームによって検証され、すべての クリーンルームのアカウント要件 を満たしていることを確認してください。

データアクセスの問題

General guidelines about data access issues

使用フローのいくつかの時点で、データソースにアクセスできないことを報告するエラーメッセージが表示される場合があります。

登録プロセス中にエラーが発生した場合:

  • API を使用している場合、テーブル名またはパスのスペルが間違っています。

  • これが外部テーブルまたはIcebergテーブルの場合、外部テーブルまたはIcebergテーブルを登録するための 要件と手順 を満たしていることを確認します。

  • 現在のロールに、登録されるオブジェクトに対する OWNERSHIP 権限があることを確認します。

リンクプロセス中にエラーが発生した場合:

  • API 内で間違ったロールを使用している可能性があります。

  • オブジェクトが登録されていない可能性があります。API 内で登録されていないオブジェクトをリンクしようとすると、エラーが表示されます。UI 内では、リンク可能として登録されたオブジェクトのみが表示されます。

  • SAMOOHA_APP_ROLE に、オブジェクトに対する USAGE および SELECT 権限があることを確認します。

  • 登録後にテーブルが移動されたか、名前が変更されたか、権限(またはSnowflakeポリシー権限)が変更された可能性があります。これが発生した場合、次のエラーも表示される可能性があります。 SQL アクセス制御エラー:テーブルを操作するための権限が不足しています...

データが正常に登録され、リンクされた後にエラーが発生した場合:

API を使用している場合、完全修飾テーブル名のスペルが正しいことを確認します。

Data access errors

エラー:

オブジェクト「 <some_object_name> 」は存在しないか、許可されていません

原因:

ソーステーブルは移動されているか、名前が変更されているか、権限(または、それが依存するポリシーまたは祖先オブジェクトに対する権限)が変更されている可能性があります。

解決策:

アカウント内のオブジェクトを再登録して再リンクするか、オブジェクトを元の場所に移動するか、追加された権限を元に戻してみてください。


 

エラー:

外部/Icebergテーブルを解決する権限が不足しています

原因:

クエリに外部テーブルまたはIcebergテーブルが含まれている場合、テーブルは正しく登録されませんでした。

解決策:

これらのテーブル型を使用するための要件と手順を満たしていることを確認するには、 外部テーブルと Apache Iceberg™ テーブルの有効化 をご参照ください。テーブルに対する SELECT を SAMOOHA_BY_SNOWFLAKE に明示的に付与すると解決できる場合があります。


 

エラー:

実行分析の結果としての 未承認: 許可されていない列が使用されている エラー

原因:

コラボレーターの結合または列ポリシーに対して、コラボレーターの列を結合または投影します。

解決策:

consumer.view_provider_column_policy および consumer.view_provider_join_policy を呼び出して、コラボレーターが設定した結合および列ポリシーを表示します。

CALL samooha_by_snowflake_local_db.consumer.view_provider_join_policy($cleanroom_name);
CALL samooha_by_snowflake_local_db.consumer.view_provider_column_policy($cleanroom_name);
Copy

プライバシー予算も使い果たした可能性があります。

CALL samooha_by_snowflake_local_db.consumer.view_remaining_privacy_budget($cleanroom_name);
Copy

 

エラー:

When the consumer calls any procedure that takes a clean room name and gets Application 'SAMOOHA_CLEANROOM_APP<some name>' does not exist or not authorized.

原因:

If the clean room name is reported as SAMOOHA_CLEANROOM_APP<cleanroom name> rather than SAMOOHA_CLEANROOM_APP_<cleanroom name>, (missing the underscore after SAMOOHA_CLEANROOM_APP), the provider did not install the clean rooms environment in the correct way in their account.

解決策:

Tell the provider that they should install the clean rooms environment in their account by following the instructions here: Snowflake Data Clean Rooms 環境のインストール. After that, the provider can re-create and share the clean room.

外部テーブルとIcebergテーブルの問題

エラー:

ビュー所有者としての共有ビュー <CLEAN ROOM VIEW NAME> の拡張中の失敗:アプリケーション SAMOOHA_CLEANROOM_APP_<CLEAN ROOM ID> が共有する外部/Icebergテーブル <TABLE_NAME> を解決する権限が不足しています

原因:

外部テーブルまたはIcebergテーブルは、プロバイダーアカウントとコンシューマーアカウントの両方で有効になっていません。

解決策:

プロバイダーとコンシューマーの両方のアカウントで 外部テーブルとIcebergテーブルが有効化されている ことを確認してください。


 

エラー:

コンシューマーは外部テーブルまたはIcebergテーブルにリンクするときに、 無効な制限機能「external_data」 を取得します。

原因:

プロバイダーは外部テーブルとIcebergテーブルをまだ有効にしていません。

解決策:

プロバイダーは アカウントの外部テーブルとIcebergテーブルを有効にする プロセスを完了する必要があります。これをコードで行う場合、プロバイダーはセキュリティスキャン結果をチェックし、成功した場合はデフォルトのリリースバージョンを更新する必要があります。


 

エラー:

外部テーブルまたはIcebergテーブルを含む分析を実行する際に、 外部/Icebergテーブルを解決するための権限が不足している エラーが発生します。

原因:

テーブルはプロバイダーとコンシューマーの両方によって適切に登録されなかった可能性があります。

解決策:

外部テーブルおよびIcebergテーブルの登録情報を読み、 プロバイダー側とコンシューマー側の両方ですべての指示に従ってください。