2022_07 번들

이 항목에서는 다음과 같이 그달의 동작 변경 사항(있는 경우)을 설명합니다.

  • 사용되지 않게 된 기능.

  • 활성화된 번들 변경 사항.

  • 번들로 제공되지는 않고 구현된 기타 변경 사항.

이러한 변경 사항에 대해 궁금한 점이 있으면 Snowflake 지원 에 문의하십시오.

이 달에 도입된 새로운 기능, 개선된 사항, 수정 사항에 대한 자세한 내용은 2022년 10월 문서를 참조하십시오.

중요

별도로 명시되는 경우를 제외하고, 이러한 변경 사항은 6.35 릴리스에서 기본적으로 활성화되는 2022_07 번들에 포함됩니다.

이 항목의 내용:

SQL 변경 사항 — 명령 및 함수

데이터베이스 및 스키마: 삭제 또는 교체는 그로 인해 정책과 태그에 대한 허상 참조가 발생하는 경우에는 허용되지 않음

테이블의 마스킹 정책, 태그, 보호되는 열과 관련하여 데이터베이스/스키마 삭제 또는 교체 작업의 동작이 다음과 같이 변경되었습니다.

이전:

태그와 정책이 같은 스키마에 있고 테이블은 다른 스키마에 있을 때, Snowflake는 테이블에서 보호되는 열이 다른 스키마/데이터베이스에 있을 때 태그 및 마스킹 정책이 있는 스키마/데이터베이스에서 DROP 및 REPLACE 작업을 허용했습니다.

다음 네 가지 명령에 적용되는 동작:

현재:

같은 시나리오가 지금 발생할 경우 Snowflake는 테이블에서 보호되는 열이 다른 스키마/데이터베이스에 있을 때 태그와 마스킹 정책이 포함된 스키마/데이터베이스에서 DROP 및 REPLACE 작업을 허용하지 않습니다.

결과적으로, 위에 나열된 네 명령의 동작이 변경되었습니다.

예:

  • t1 이라는 태그와 p1 이라는 마스킹 정책이 governance.tags 라는 스키마에 있습니다.

  • p1 마스킹 정책은 t1 태그에 할당됩니다(즉, 태그 기반 마스킹 정책).

  • t1 태그는 finance.accounting.customers 라는 테이블에 할당됩니다.

이전에 Snowflake에서는 t1 태그가 finance.accounting.customers 테이블에 할당된 동안 governance.tags 스키마에 대한 DROP SCHEMA 작업과 governance 데이터베이스에 대한 DROP DATABASE 작업을 허용했습니다.

이제, Snowflake에서는 t1 태그가 테이블에 할당되는 동안 둘 중 어느 작업이든 수행할 수 없습니다. 시도한 작업에 따라, Snowflake는 다음 오류 메시지 중 하나를 반환합니다.

  • DROP DATABASE 및 CREATE OR REPLACE DATABASE:

    Cannot drop or replace database because: Tag governance.tags.tag1 used by schema finance.accounting in another database

  • DROP SCHEMA 및 CREATE OR REPLACE SCHEMA:

    Cannot drop or replace schema because: Tag governance.tags.tag1 used by another schema finance.accounting

CREATE MATERIALIZED VIEW 명령: Time Travel 절이 더 이상 허용되지 않음

구체화된 뷰의 한 가지 제한 사항은 Time Travel이 지원되지 않는다는 점입니다. 하지만 CREATE MATERIALIZED VIEW 명령을 실행할 때 뷰의 기본 테이블에 대해 Time Travel 절(예: AT)을 지정할 수 있었습니다.

CREATE MATERIALIZED VIEW에서 Time Travel 절을 지정하면 지금은 오류가 발생합니다.

이전:

CREATE MATERIALIZED VIEW에서 Time Travel 절을 지정해도 오류가 발생하지 않았습니다.

예를 들어 다음 문은 어떤 오류도 없이 성공적으로 실행되었습니다.

  • 예 1:

    create or replace materialized view mv as select * from basetbl at(offset => -2);
    
    Copy
  • 예 2:

    create or replace materialized view mv as select * from basetbl at(timestamp => $ts);
    
    Copy
  • 예 3:

    create or replace materialized view mv as select * from basetbl at(statement => $uuid_dml);
    
    Copy
현재:

CREATE MATERIALIZED VIEW에서 Time Travel 절을 지정하면 지금은 다음 오류가 발생합니다.

002274 (42601): SQL compilation error: Invalid materialized view: Time travel on base table in line X at position Y.

SQL 변경 사항 — Usage 뷰 및 Information Schema 뷰/테이블 함수

GRANT_TO_ROLES 뷰(Account Usage): 뷰 변경 사항

ACCOUNT_USAGE.GRANTS_TO_ROLES 뷰에 다음 변경 사항이 도입되었습니다.

이전:

뷰의 출력에 임시 테이블에 대한 역할에 부여된 권한이 포함되었습니다.

현재:

뷰의 출력에 임시 테이블에 대한 역할에 부여된 권한이 포함되지 않습니다.

데이터 레이크 변경 사항

CREATE EXTERNAL TABLE 명령: 사용자가 지정한 파티션과 자동으로 새로 고쳐진 메타데이터

외부 테이블에 있는 파티션을 사용자 지정으로 정의한다는 것은 식과 일치하는 외부 저장소 위치에 있는 모든 새 파일의 파티션을 자동으로 추가하기보다는 파티션을 선택적으로 추가 및 제거한다는 것을 의미합니다. 외부 테이블을 만들 때 PARTITION_TYPE = USER_SPECIFIED 매개 변수를 포함함으로써 이 파티션 유형을 지정합니다. 사용자 지정 분할은 외부 테이블 메타데이터의 자동 새로 고침을 지원하지 않습니다.

PARTITION_TYPE = USER_SPECIFIEDAUTO_REFRESH = TRUE 매개 변수가 모두 설정된 상태에서 CREATE EXTERNAL TABLE 문을 실행할 때 동작이 다음과 같이 변경되었습니다.

이전:

CREATE EXTERNAL TABLE 문이 성공했지만, 외부 테이블에 대해 클라우드 저장소에서 수신된 모든 이벤트 알림(예: “새 오브젝트” 메시지)은 오류를 생성했습니다.

현재:

CREATE EXTERNAL TABLE 문은 사용자 오류를 반환합니다.

GET_DDL 함수: Delta Lake의 외부 테이블에 대한 TABLE_FORMAT 매개 변수를 반환함

GET_DDL 함수에 대한 입력이 Delta Lake 테이블을 참조하는 외부 테이블일 때 함수에서 반환된 CREATE EXTERNAL TABLE 문이 다음과 같이 변경되었습니다.

이전:

이 문은 Delta Lake 테이블을 참조하는 것으로 외부 테이블을 식별하는 TABLE_FORMAT = DELTA 매개 변수를 생략했습니다.

현재:

이 문은 TABLE_FORMAT = DELTA 매개 변수를 포함합니다.

확장성 변경 사항

Python용 Snowpark: 유효하지 않은 패키지를 추가할 때 더 일찍 오류를 반환함

Python 패키지를 Python Snowpark 세션에 추가할 때 Snowflake에서 그 패키지나 패키지의 지정된 버전을 지원하지 않으면 사용자에게 오류 메시지가 표시됩니다.

오류 메시지가 수신된 시간이 이전으로 변경되었습니다.

이전:

사용자가 UDF 또는 저장 프로시저를 등록하려고 할 때만 오류가 수신되었습니다.

현재:

add_packages를 사용하여 Python 패키지를 추가할 때는 오류가 더 일찍 발생합니다.

예를 들어, "session.add_packages('numpy==21.21.21')" 을 호출하면 패키지 버전이 유효하지 않으므로 "ValueError" 가 됩니다.

Scala 및 Java용 Snowpark: DeleteResult, MergeResult, UpdateResult에 있는 멤버의 유형 변경

Snowpark Scala 및 Java API에서 DeleteResult, MergeResultUpdateResult 클래스는 삽입, 업데이트, 삭제된 행의 수를 반환하는 값 멤버 및 getter 메서드를 제공합니다.

  • Snowpark Scala API에서 이러한 값 멤버의 이름이 다음으로 지정됩니다.

    • rowsInserted

    • multiJoinedRowsUpdated

    • rowsUpdated

    • rowsDeleted

  • Snowpark Java API에서 이러한 getter 메서드의 이름이 다음으로 지정됩니다.

    • getRowsInserted

    • getMultiJoinedRowsUpdated

    • getRowsUpdated

    • getRowsDeleted

Scala 및 Java용 Snowpark 라이브러리의 1.7.0 릴리스에서 이러한 값 멤버의 유형과 이러한 getter 메서드의 반환 유형이 변경되었습니다.

1.7.0 이전:
  • Scala API에서 유형은 Int 입니다.

  • Java API에서 유형은 int 입니다.

1.7.0부터 시작:
  • Scala API에서 유형은 Long 입니다.

  • Java API에서 유형은 long 입니다.