Snowflake Data Clean Rooms 문제 해결하기

이 페이지는 클린룸을 사용할 때의 일반적인 문제 해결 가이드입니다. API를 사용하는 경우, 호출하는 모든 프로시저에 대한 참조 설명서와 사용 사례 가이드라인을 읽고 해당 문서에서 문제가 해결되는지 확인합니다.

개발자인 경우 자세한 내용은 :ref:`개발자 문제 해결 지침<label-dcr_developer_troubleshooting>`을 참조하세요

설치 문제

  • :ref:`설치 문제 해결 섹션<label-dcr_troubleshooting_installation>`을 참조하세요.

  • UI가 데이터에 액세스할 수 있도록 :ref:`네트워크 정책 업데이트<label-cleanrooms_configure_network_policy>`를 수행했는지 확인합니다.

Analysis and template issues

오류:

Failure during expansion of shared view <CLEAN ROOM VIEW NAME> as view owner: Insufficient permission to resolve external/iceberg table <TABLE_NAME> shared by application SAMOOHA_CLEANROOM_APP_<CLEAN ROOM ID>

원인:

외부 또는 Iceberg 테이블에 액세스하려고 시도하지만 공급자 및 컨슈머 계정 모두에서 외부 및 Iceberg 테이블이 활성화되어 있지 않습니다.

해결책:

공급자 계정과 컨슈머 계정 모두에 :ref:`활성화된 외부 및 Iceberg 테이블<label-cleanrooms_external_iceberg_tables>`이 있는지 확인합니다.


 

오류:

SQL compilation error: Failure during expansion of shared view '<CLEAN ROOM VIEW NAME>' as view owner: Object '<some object name>' does not exist or not authorized.

원인:

액세스하려는 데이터 세트에 클린룸 권한 부여가 더 이상 존재하지 않습니다. 이는 소스 오브젝트의 이름이 변경되거나 대체되었기 때문일 가능성이 큽니다.

해결책:
  • 테이블 이름이 변경된 경우 이름을 클린룸에 연결된 이름으로 다시 변경합니다. 오브젝트를 다시 등록해야 할 수도 있습니다.

  • 테이블이 다시 생성된 경우 클린룸에 오브젝트를 다시 등록합니다.


 

오류:

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 ...

원인:

템플릿은 열 또는 테이블 이름에 식별자가 아닌 문자열 값을 사용합니다. 이는 템플릿이 sqlsafe 필터 또는 IDENTIFIER 함수 중 하나를 사용하여 문자열 변수를 식별자로 올바르게 변환하지 않은 경우에 발생합니다.

예를 들어, ``p.col1``에서 ``my_column``으로 템플릿 :code:`SELECT {{ my_column }} …`에 전달하면 :code:`SELECT “p.col1” …`로 해석됩니다. “p.col1”은 문자열이며 유효한 식별자가 아닙니다(``p.``는 URL 접두사로 해석됨).

해결책:

IDENTIFIER 함수(기본 설정) 또는 sqlsafe 필터를 변수에 적용합니다.

  • SELECT IDENTIFIER({{ my_column }}) ... (기본 설정)

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


 

오류:

**FAILURE**: Unauthorized columns: column_name

원인:

쿼리가 클린룸에서 공동 작업자의 사용 정책에 포함되지 않는 공동 작업자 데이터 열을 사용합니다. 예를 들어, 열 정책에 없는 공동 작업자 데이터의 SELECT 열을 사용하려고 합니다.

해결책:

공동 작업자가 쿼리에서 프로젝션, 조인 또는 활성화를 위해 승인한 열을 사용합니다. consumer.view_template_definition``을 호출하여 정책 필터에 대한 템플릿을 검사한 ``consumer.view_provider_join_policy 또는 ``consumer.view_provider_column_policy``를 호출하여 공급자가 프로젝션하거나 조인할 수 있는 열을 확인합니다. 마지막으로 승인된 열을 전달하도록 쿼리를 업데이트하거나 공동 작업자에게 사용하려는 열을 포함하도록 사용 정책을 조정하도록 요청합니다.


 

오류:

**FAILURE**: Invalid aliases: P.column name' 또는 **FAILURE**: Invalid aliases: C.column name'

원인:

대문자 P 또는 C 테이블 별칭을 사용하여 열 이름의 범위를 지정하고 있습니다. 열 이름의 범위를 지정하는 경우에는 소문자 p 또는 c 별칭을 사용해야 합니다. (템플릿 자체는 별칭을 *선언*할 때 대문자 또는 소문자를 사용할 수 있습니다.)

해결책:

열의 범위를 지정할 때는 항상 소문자 별칭을 사용하세요.

예:

-- 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

원인:

항상 테이블에 대해 선언된 p 또는 c 별칭을 사용하여 열을 참조해야 합니다. 열은 전체 경로로 테이블을 참조할 수 없습니다.

유효하지 않음: SELECT hashed_email FROM mydb.mysch.t1;

해결책:

열을 참조하는 경우 p 또는 ``c``(소문자!) 테이블 별칭을 사용합니다.

유효함: 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.

원인:

내부 클린룸에 대한 요청 로그 마운트에 성공한 후 동일한 계정의 외부 클린룸에 대한 요청 로그 마운트에 실패합니다. 내부 클린룸은 외부 클린룸보다 요구 사항이 적습니다. 사용자의 설치가 내부 클린룸 사용에 대한 요구 사항을 충족했지만 외부 클린룸에 대한 요구 사항은 충족하지 않았습니다.

해결책:

이메일이 클린룸에서 검증되었는지 및 모든 :ref:`클린룸 계정 요구 사항<label-cleanroom-account-requirements>`을 충족했는지 확인합니다.

데이터 액세스 문제

데이터 액세스 문제에 대한 일반 지침

사용 흐름의 여러 지점에서 데이터 소스에 액세스할 수 없다고 보고하는 오류 메시지가 표시될 수 있습니다.

등록 프로세스 중에 오류가 발생한 경우:

  • API를 사용하는 경우 테이블 이름 또는 경로의 철자를 잘못 입력했습니다.

  • 외부 테이블 또는 Iceberg 테이블인 경우 외부 테이블 또는 Iceberg 테이블을 등록하기 위한 :ref:`요구 사항 및 절차<label-cleanrooms_external_iceberg_tables>`를 충족했는지 확인합니다.

  • 현재 역할에 등록 중인 오브젝트에 대한 OWNERSHIP 권한이 있는지 확인합니다.

연결 프로세스 중에 오류가 발생한 경우:

  • API에서 잘못된 역할을 사용 중일 수 있습니다.

  • 오브젝트가 등록되지 않았을 수 있습니다. API에서 등록되지 않은 오브젝트를 연결하려고 시도하면 오류가 표시됩니다. UI에서 연결할 수 있는 오브젝트로 등록된 오브젝트만 표시됩니다.

  • SAMOOHA_APP_ROLE에 오브젝트에 대한 USAGE 및 SELECT 권한이 있는지 확인합니다.

  • 등록 이후 테이블이 이동하거나 이름이 변경되었거나 테이블의 권한(또는 모든 Snowflake 정책 권한)이 변경되었을 수 있습니다. 이 경우 SQL access control error: Insufficient privileges to operate on table... 오류가 표시될 수도 있습니다.

데이터가 성공적으로 등록되고 연결된 후 오류가 발생한 경우:

API를 사용하는 경우 정규화된 테이블 이름의 철자가 올바른지 확인합니다.

Data access errors

오류:

Object '<some_object_name>' does not exist or not authorized

원인:

소스 테이블이 이동하거나 이름이 변경되거나 권한(또는 이 테이블이 종속된 정책 또는 상위 오브젝트에 대한 권한)이 변경되었을 수 있습니다.

해결책:

계정에서 오브젝트를 다시 등록하고 다시 연결하거나 오브젝트를 이전 위치로 다시 이동하거나 추가된 권한을 되돌립니다.


 

오류:

Insufficient permission to resolve external/iceberg table

원인:

쿼리에 외부 테이블 또는 Iceberg 테이블이 포함된 경우 테이블이 올바르게 등록되지 않은 것입니다.

해결책:

이러한 테이블 유형을 사용하기 위한 요구 사항과 절차를 충족하는지 확인하려면 외부 테이블 및 Apache Iceberg™ 테이블 활성화하기 섹션을 참조하세요. 경우에 따라 SAMOOHA_BY_SNOWFLAKE에 테이블에 대한 SELECT 권한을 명시적으로 부여하여 이를 해결할 수 있습니다.


 

오류:

not approved:unauthorized columns used error as a result of run analysis

원인:

공동 작업자의 조인 또는 열 정책에 따라 공동 작업자의 열을 조인하거나 프로젝션하는 중입니다.

해결책:

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

 

오류:

컨슈머가 클린룸 이름을 가져오는 프로시저를 호출하고 ``Application ‘SAMOOHA_CLEANROOM_APP<some name>’ does not exist or not authorized.``가 표시된 경우

원인:

클린룸 이름이 SAMOOHA_CLEANROOM_APP_<cleanroom name> 대신 SAMOOHA_CLEANROOM_APP<cleanroom name>`(``SAMOOHA_CLEANROOM_APP` 뒤에 밑줄 누락 )로 보고되는 경우는, *공급자*가 계정에 올바른 방식으로 클린룸 환경을 설치하지 않은 것입니다.

해결책:

공급자에게 Snowflake Data Clean Rooms 환경 설치하기 지침에 따라 계정에 클린룸 환경을 설치해야 한다고 알립니다. 그 후에 공급자는 클린룸을 다시 만들고 공유할 수 있습니다.

외부 테이블 및 Iceberg 테이블 문제

오류:

Failure during expansion of shared view <CLEAN ROOM VIEW NAME> as view owner: Insufficient permission to resolve external/iceberg table <TABLE_NAME> shared by application SAMOOHA_CLEANROOM_APP_<CLEAN ROOM ID>

원인:

외부 테이블 또는 Iceberg 테이블은 공급자 계정과 컨슈머 계정 모두에서 활성화되지 않습니다.

해결책:

공급자 계정과 컨슈머 계정 모두에 :ref:`활성화된 외부 및 Iceberg 테이블<label-cleanrooms_external_iceberg_tables>`이 있는지 확인합니다.


 

오류:

컨슈머는 외부 테이블 또는 Iceberg 테이블에 연결할 때 `Invalid restricted feature ‘external_data’`를 수신합니다.

원인:

공급자가 아직 외부 테이블과 Iceberg 테이블을 활성화하지 않았습니다.

해결책:

공급자는 계정에 대해 외부 테이블 및 Iceberg 테이블 활성화 프로세스를 완료해야 합니다. 코드에서 이 작업을 수행하는 경우 공급자는 보안 검사 결과를 확인해야 하며, 성공하면 기본 릴리스 버전을 업데이트해야 합니다.


 

오류:

외부 테이블 또는 Iceberg 테이블과 관련된 분석을 실행할 때 Insufficient permission to resolve external/iceberg table 오류가 발생했습니다.

원인:

공급자와 컨슈머가 모두 테이블을 올바르게 등록하지 않았을 수 있습니다.

해결책:

:ref:`외부 테이블 및 Iceberg 테이블 등록 정보 읽기<label-cleanrooms_external_iceberg_tables>`를 수행하고 공급자 측과 컨슈머 측 모두 모든 지침을 따라야 합니다.