Snowflake에서 PostgreSQL 데이터 보기

참고

Snowflake Connector for PostgreSQL 에는 커넥터 약관 이 적용됩니다.

커넥터는 커넥터를 설정하고 PUBLIC.ADD_DATA_SOURCE('<data_source_name>', '<dest_db>') 를 호출하는 동안 정의된 대상 데이터베이스에 데이터를 복제합니다.

데이터 테이블은 복제된 데이터를 포함하며 식별자 dest_db.schema_name.table_name 으로 제공됩니다. 여기서

  • dest_db 는 대상 데이터베이스의 이름입니다.

  • schema_name 은 원래 PostgreSQL 테이블이 있는 스키마 이름입니다.

  • table_name 은 원본 PostgreSQL 테이블의 이름입니다.

참고

dest_db, schema_name, table_name 은 이름에 대/소문자가 혼합된 경우 큰따옴표로 묶어야 합니다.

복제된 테이블에는 추가 메타데이터 열이 포함됩니다.

열 이름

데이터 타입

설명

_SNOWFLAKE_INSERTED_AT

TIMESTAMP_NTZ

행이 대상 테이블에 삽입된 시간의 타임스탬프(UTC)입니다.

_SNOWFLAKE_UPDATED_AT

TIMESTAMP_NTZ

대상 테이블에서 행이 마지막으로 업데이트된 시간의 타임스탬프(UTC)입니다.

_SNOWFLAKE_DELETED

BOOLEAN

행이 원본 테이블에서 삭제된 경우 값은 true 입니다.

복제된 데이터 타입은 Snowflake 타입과 일치하도록 매핑됩니다. 자세한 내용은 PostgreSQL을 Snowflake 데이터 타입으로 매핑 섹션을 참조하십시오.

복제된 데이터 액세스 제어

복제된 데이터에 대한 액세스를 제어하려면 DATA_READER 애플리케이션 역할을 사용합니다. 커넥터 애플리케이션 역할에 대한 자세한 내용은 Snowflake Connector for PostgreSQL 에서의 애플리케이션 역할 섹션을 참조하십시오. 특정 대상 오브젝트를 보다 세부적으로 제어하려면 ACCOUNTADMIN 역할을 사용하여 적절한 권한을 부여하거나 데이터베이스 역할을 만드십시오.

PostgreSQL을 Snowflake 데이터 타입으로 매핑

Snowflake에서는 복제된 테이블의 열 이름이 대문자로 시작되고 타입은 Snowflake 타입과 일치하도록 매핑됩니다.

다음 표에서는 PostgreSQL을 Snowflake 타입으로 매핑하는 것을 보여줍니다.

PostgreSQL 형식

Snowflake 유형

참고

BIGINT / INT8

INT

BIGSERIAL / SERIAL8

INT

BIT [(N)]

VARCHAR

BIT VARYING [(N)] / VARBIT [(n)]

VARCHAR

BOOLEAN / BOOL

BOOLEAN

BOX

VARCHAR

BYTEA

BINARY(N)

Snowflake의 최대 데이터 요소 크기(16MB)까지 지원됩니다. 최대 길이 1GB.

CHARACTER [(N)] / CHAR [(N)]

VARCHAR [N]

최대 길이 10485760 ~= 10MB

CHARACTER VARYING [(N)] / VARCHAR [(N)]

VARCHAR [N]

최대 길이 10485760 ~= 10MB

CIDR

VARCHAR

CIRCLE

VARCHAR

DATE

DATE

DOUBLE PRECISION / FLOAT8

FLOAT

INET

VARCHAR

INTEGER / INT / INT4

INT

INTERVAL [FIELDS][(P)]

VARCHAR

JSON

VARIANT

Snowflake의 최대 데이터 요소 크기(16MB)까지 지원됩니다.

JSONB

VARIANT

Snowflake의 최대 데이터 요소 크기(16MB)까지 지원됩니다.

LINE

VARCHAR

LSEG

VARCHAR

MACADDR

VARCHAR

MACADDR8

VARCHAR

MONEY

VARIANT

NUMERIC [(P, S)] / DECIMAL [(P, S)]

DECIMAL(P, S)

Snowflake 제한을 유지하면서 Snowflake 측에서 소수 자릿수와 전체 자릿수도 다시 생성됩니다.

PATH

VARCHAR

PG_LNS

VARCHAR

POINT

VARCHAR

POLYGON

VARCHAR

REAL / FLOAT4

FLOAT

SMALLINT / INT2

INT

SMALLSERIAL / SERIAL2

INT

SERIAL / SERIAL4

INT

TEXT

VARCHAR

TIME [(P)] [타임존 없음]

TIME

TIME [(P)], 타임존 포함

TIME

TIMESTAMP [(P)] [타임존 없음]

DATETIME / TIMESTAMP_NTZ

TIMESTAMP [(P)], 타임존 포함

TIMESTAMP_TZ

TSQUERY

VARCHAR

TSVECTOR

VARCHAR

UUID

VARCHAR

XML

VARCHAR

배열, ENUM, 사용자 지정 타입, 범위를 포함한 다른 모든 타입은 Snowflake의 VARCHAR 값에 매핑됩니다. 다음 표에서는 위 표에 명시적으로 언급되지 않은 타입의 처리 방식을 보여줍니다.

PostgreSQL 형식

PostgreSQL의 데이터

Snowflake의 열

ENUM

월요일

“monday”

INTEGER의 배열

{1,2,3,5}

“{1,2,3,5}”

intrange

[6,31)

“[6,31)”

사용자 지정 타입(INT4 및 TEXT의 2개 필드)

(텍스트 값,5432)

“(텍스트 값,5432)”

삭제된 열의 데이터 보기

원본 테이블에서는 열이 삭제되어도 대상 테이블에서는 삭제되지 않습니다. 대신 소프트 삭제 접근 방식을 따르고 열 이름이 <이전 이름>__SNOWFLAKE_DELETED 으로 바뀌어 이전 값을 계속 쿼리할 수 있습니다.

예를 들어, 열 A 가 삭제되면 대상 테이블에서 해당 열의 이름이 A__SNOWFLAKE_DELETED 로 바뀌고 다음과 같이 쿼리할 수 있습니다.

SELECT A__SNOWFLAKE_DELETED FROM <TABLE_NAME>;
Copy

이름이 바뀐 열의 데이터 보기

열 이름을 바꾸는 것은 열을 삭제하고 새 이름을 가진 새로운 열을 만드는 것과 같습니다. 삭제는 이전 섹션에서 설명한 소프트 삭제 접근 방식을 따릅니다.

예를 들어, 열 A 의 이름이 B 로 바뀐 경우 대상 테이블에서 AA__SNOWFLAKE_DELETED 로 이름이 바뀌고 열 B 가 새로 추가됩니다. 변경 전에 존재한 행은 전부 A__SNOWFLAKE_DELETED 열에서 해당 열의 값을 유지하는 반면, 변경 후에 새로 추가된 행에는 B 열의 값이 있습니다. 이름이 바뀐 열의 값은 다음의 간단한 쿼리를 사용해 단일 열로 볼 수 있습니다.

SELECT
     CASE WHEN B IS NULL THEN A__SNOWFLAKE_DELETED ELSE B END AS A_RENAMED_TO_B
FROM <TABLE_WITH_RENAMED_COLUMN>;
Copy

열 이름을 바꾼 후 간편하게 사용할 수 있도록 뷰를 생성할 수 있습니다.

다음 단계

이러한 절차를 완료한 후 Snowflake Connector for PostgreSQL 에서 진행 중인 작업 에서 프로세스를 검토해 보십시오.