Snowflake Data Clean Rooms 문제 해결
Snowflake Data Clean Rooms 문제 해결
클린룸을 사용할 때 발생하는 문제를 다루는 일반적인 문제 해결 안내예요.
본문
지원 종료(EOL) 공지
레거시 Provider 및 Consumer 데이터 클린룸은 지원이 중단되고 있어요. 날짜와 마이그레이션 지침은 지원 종료 타임라인을 참고하세요.
이 페이지는 클린룸을 사용할 때의 일반적인 문제 해결 안내예요. API를 사용한다면 호출하는 프로시저의 참조 문서와 사용 사례 지침을 꼭 읽어 자신의 문제가 거기에 나와 있는지 확인하세요.
설치 문제
- 설치 문제 해결 섹션을 참고하세요.
- UI가 데이터에 접근할 수 있도록 네트워크 정책을 업데이트했는지 확인하세요.
분석 및 템플릿 문제
오류:
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 테이블에 접근하려고 하는데, 제공자와 소비자 계정 양쪽에서 External 및 Iceberg 테이블이 활성화되어 있지 않아요.
해결 방법: 제공자와 소비자 계정 양쪽이 외부 및 Iceberg 테이블을 활성화했는지 확인하세요.
오류:
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.
원인: 접근하려는 데이터셋에 클린룸 부여(grants)가 더 이상 존재하지 않아요. 대부분 소스 객체가 이름이 바뀌거나 교체되었기 때문이에요.
해결 방법:
- 테이블이 이름이 바뀌었다면 클린룸에 링크된 이름으로 되돌리세요. 객체를 다시 등록해야 할 수도 있어요.
- 테이블이 다시 생성되었다면 클린룸에서 객체를 다시 등록하세요.
오류: 쿼리가 0개 결과를 반환하는데 그것이 잘못됐다고 생각해요.
가능한 원인과 해결 방법:
- 양쪽 어느 쪽도 조인되거나 표시되는 것을 막는 마스킹 정책이 데이터에 없는지 확인하세요.
- 조인 컬럼이 같은 방식으로 형식화되어 있는지 확인하세요.
- 고정 임계값 설정 아래로 내려가지 않았는지 확인하세요. 오디언스 중복(audience overlap)의 기본 임계값은 5라서, 5개 미만의 행은 결과에서 제외돼요. 제공자에게 임계값이 무엇인지 물어보고, 그보다 큰 중복이 있는지 확인하세요. 큰 세그먼트 그룹을 보장하도록 중복 스펙을 일시적으로 수정해 결과가 나오는지 확인해 보세요.
오류:
Uncaught exception of type 'STATEMENT_ERROR' ... SQL compilation error: invalid URL prefix found ...
원인:
템플릿이 컬럼이나 테이블 이름에 식별자 대신 문자열 값을 사용해요. 템플릿이 sqlsafe 필터나 IDENTIFIER 함수를 사용해 문자열 변수를 식별자로 제대로 변환하지 않을 때 발생해요.
예를 들어 SELECT {{ my_column }} ... 템플릿에 my_column으로 p.col1을 전달하면 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;
오류:
**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.
원인: 내부 클린룸에 대한 요청 로그 마운팅은 성공했는데, 같은 계정의 외부 클린룸에서는 실패해요. 내부 클린룸은 외부 클린룸보다 요구 사항이 적어요. 설치는 내부 클린룸 사용 요구 사항은 충족했지만 외부 클린룸 요구 사항은 충족하지 못한 거예요.
해결 방법: 이메일이 클린룸으로 검증되었는지, 그리고 모든 클린룸 계정 요구 사항을 충족하는지 확인하세요.
데이터 접근 문제
데이터 접근 문제에 대한 일반 지침
사용 흐름의 여러 지점에서 데이터 소스에 접근할 수 없다는 오류 메시지를 받을 수 있어요:
등록 과정 중 오류가 발생했다면:
- API를 사용한다면 테이블 이름이나 경로를 잘못 입력했을 수 있어요.
- 외부 또는 Iceberg 테이블이라면 외부 또는 Iceberg 테이블 등록의 요구 사항과 절차를 충족했는지 확인하세요.
- 현재 역할이 등록 중인 객체에 REFERENCE_USAGE 권한이 있는지 확인하세요.
링크 과정 중 오류가 발생했다면:
- API에서 잘못된 역할을 사용하고 있을 수 있어요.
- 객체가 등록되지 않았을 수 있어요. API에서 등록되지 않은 객체를 링크하려 하면 오류가 보여요. UI에서는 링크에 사용할 수 있는 것으로 등록된 객체만 보여요.
- SAMOOHA_APP_ROLE이 객체에 USAGE 및 SELECT 권한이 있는지 확인하세요.
- 테이블이 등록 이후 이동·이름 변경·권한(또는 Snowflake 정책 권한) 변경되었을 수 있어요. 이 경우
SQL access control error: Insufficient privileges to operate on table…오류도 볼 수 있어요.
데이터가 성공적으로 등록되고 링크된 후 오류가 발생했다면: API를 사용한다면 전체 이름의 테이블 이름을 올바르게 입력했는지 확인하세요.
데이터 접근 오류
오류: Object '<some_object_name>' does not exist or not authorized
원인: 소스 테이블이 이동·이름 변경되었거나 권한(또는 그것이 의존하는 정책 또는 상위 객체의 권한)이 변경되었을 수 있어요.
해결 방법: 계정에서 객체를 다시 등록하고 다시 링크하거나, 객체를 이전 위치로 되돌리거나, 추가된 권한을 되돌리세요.
오류: Insufficient permission to resolve external/iceberg table
원인: 쿼리에 외부 또는 Iceberg 테이블이 관련되어 있다면, 테이블이 제대로 등록되지 않은 거예요.
해결 방법: 외부 및 Apache Iceberg™ 테이블 활성화를 참고해 이 테이블 유형을 사용하기 위한 요구 사항과 절차를 충족하세요. 때로는 SAMOOHA_BY_SNOWFLAKE에 테이블에 대한 SELECT를 명시적으로 부여하면 해결될 수 있어요.
오류: run analysis 결과로 not approved:unauthorized columns used error
원인: 콜라보레이터의 조인 또는 컬럼 정책에 반해 콜라보레이터의 컬럼을 조인하거나 프로젝션하고 있어요.
해결 방법:
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);
프라이버시 예산을 모두 소진했을 수도 있어요:
CALL samooha_by_snowflake_local_db.consumer.view_remaining_privacy_budget($cleanroom_name);
오류:
소비자가 클린룸 이름을 받는 어떤 프로시저를 호출할 때 Application 'SAMOOHA_CLEANROOM_APP<some name>' does not exist or not authorized.를 받아요.
원인:
클린룸 이름이 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 테이블이 활성화되어 있지 않아요.
해결 방법: 제공자와 소비자 계정 양쪽이 외부 및 Iceberg 테이블을 활성화했는지 확인하세요.
오류: 소비자가 외부 또는 Iceberg 테이블을 링크할 때 Invalid restricted feature 'external_data'를 받아요.
원인: 제공자가 아직 외부 및 Iceberg 테이블을 활성화하지 않았어요.
해결 방법: 제공자가 계정에 외부 및 Iceberg 테이블을 활성화하는 과정을 완료해야 해요. 코드로 수행 중이라면 제공자가 보안 스캔 결과를 확인하고, 성공하면 기본 릴리스 버전을 업데이트해야 해요.
오류: 외부 또는 Iceberg 테이블과 관련된 분석을 실행할 때 Insufficient permission to resolve external/iceberg table 오류.
원인: 테이블이 제공자와 소비자 양쪽에서 제대로 등록되지 않았을 수 있어요.
해결 방법: 외부 및 Iceberg 테이블 등록 정보를 읽고 제공자·소비자 양쪽에서 모든 지침을 따르세요.