Google BigQuery용 Openflow 커넥터 설정
Google BigQuery용 Openflow 커넥터 설정
Snowflake 커넥터는 Snowflake Openflow를 사용할 수 있는 모든 리전에서 지원돼요.
Openflow Snowflake 배포는 AWS, Azure, GCP 상용 리전의 모든 계정에서 사용할 수 있어요.
BYOC 배포의 Snowflake Openflow는 AWS 상용 리전(상용 리전)의 모든 계정에서만 사용할 수 있어요.
참고
이 커넥터는 Snowflake 커넥터 약관의 적용을 받아요.
이 항목에서는 Google BigQuery용 Openflow 커넥터를 설정하는 단계를 설명해요.
사전 요구 사항
- Google BigQuery용 Openflow 커넥터 소개를 검토하세요.
- 런타임 배포를 설정하세요.
- Openflow - Snowflake 배포를 사용하는 경우 필수 도메인 구성을 검토했고, BigQuery 커넥터의 필수 도메인에 접근 권한을 부여했는지 확인하세요.
- Openflow 관리 역할 또는 Openflow를 관리하는 데 사용하는 유사한 역할에 접근할 수 있어야 해요.
- Openflow - BYOC 배포에 배포하고
KEY_PAIR인증 전략을 사용한다면 키 페어 인증을 생성했는지 확인하세요. 자세한 내용은 키 페어 인증을 참조하세요.
BigQuery 설정
-
Google Cloud 서비스 계정을 만들고 BigQuery 데이터를 읽는 데 필요한 권한을 부여하세요. 커넥터는 이 계정을 인증에 사용해요. 이 계정에는 다음 권한이 있어야 해요.
중요
BigQuery Data Editor는 개별 데이터셋이 아니라 프로젝트 수준에서 부여해야 해요. 커넥터는{project}.{region}.INFORMATION_SCHEMA.TABLES를 쿼리해 구성된 모든 리전의 테이블을 발견하는데, 이는 프로젝트 수준 접근이 필요한 리전 범위 뷰예요. 커넥터는 또한{project}.{dataset}.INFORMATION_SCHEMA.KEY_COLUMN_USAGE를 쿼리해 복제된 각 테이블의 기본 키를 결정해요. 프로젝트 수준 접근이 없으면 쿼리가Access Denied오류로 실패하고 커넥터가 올바르게 실행되지 않아요. -
서비스 계정에 대한 해당 JSON 키 파일을 생성·다운로드하세요. 커넥터 구성에 이 파일의 전체 내용이 필요해요.
-
각 소스 테이블에서 변경 기록을 활성화해 커넥터가 증분 복제를 수행할 수 있게 하세요. 이 기능을 통해 BigQuery가 행 수준 변경(삽입, 업데이트, 삭제)을 추적하며, 커넥터가 이를 사용해 데이터를 효율적으로 동기화해요.
각 테이블에 대해 BigQuery 콘솔에서 다음 쿼리를 실행하세요.
ALTER TABLE `project.dataset.table`
SET OPTIONS (enable_change_history = TRUE);
Snowflake 계정 설정
Openflow 관리자로서 이 커넥터에 대해 다음 작업을 수행하세요. 기본 SNOWFLAKE_MANAGED 인증 전략에서는 런타임의 execute-as 역할이 커넥터가 Snowflake에 접근할 때 사용하는 ID이므로 이 역할에 다음 권한을 부여하세요.
참고
Openflow - BYOC 배포에 커넥터를 배포하고, 권장되는
SNOWFLAKE_MANAGED대신KEY_PAIR인증 전략을 사용한다면 런타임의 관리 토큰에 의존하는 대신 동일한 execute-as 역할을 서비스 사용자에게도 부여해야 해요. 서비스 사용자를 만들려면 Openflow - BYOC 배포의 키 페어 인증 설정을 참조하세요.
- 복제된 데이터를 저장할 데이터베이스를 만들고 execute-as 역할에 USAGE 및 CREATE SCHEMA를 부여하세요. 커넥터는 대상 스키마를 자동으로 만들어요. Snowflake는 다른 커넥터를 포함한 다른 데이터 소스와의 충돌을 피하기 위해 커넥터마다 전용 대상 데이터베이스를 권장해요.
이 대상 데이터베이스를 런타임, 커넥터, 비밀 같은 Openflow 인프라 객체를 보유한 데이터베이스와 분리해 두세요. 커넥터는 소스 스키마와 테이블 이름을 기반으로 대상 객체를 만들므로 그러한 이름은 사용자 통제 범위 밖이며 소스가 변경됨에 따라 바뀔 수 있어요.
CREATE DATABASE IF NOT EXISTS <destination_database>;
GRANT USAGE ON DATABASE <destination_database> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
GRANT CREATE SCHEMA ON DATABASE <destination_database> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
- 커넥터가 사용할 웨어하우스를 지정하고 execute-as 역할에 USAGE와 OPERATE를 부여하세요.
XSMALL웨어하우스 크기로 시작한 다음, 복제되는 테이블 수와 전송되는 데이터 양에 따라 크기를 실험해 보세요. 테이블 수가 많으면 일반적으로 웨어하우스 크기보다 멀티 클러스터 웨어하우스가 더 잘 확장돼요.
CREATE WAREHOUSE <ingest_warehouse>
WITH
WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 300
AUTO_RESUME = TRUE;
GRANT USAGE, OPERATE ON WAREHOUSE <ingest_warehouse> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
- Snowflake 배포 전용: 이 커넥터의 소스 호스트와 포트가 런타임의 외부 접근 통합(EAI)이 허용하는 네트워크 규칙에 의해 허용되는지 확인하세요.
EAI 자체는 이 커넥터가 아니라 런타임에 속해요. 한 번 만들어 런타임에 연결하고 execute-as 역할에 USAGE를 부여해요. 해당 단계는 네트워크 규칙 및 외부 접근 통합 만들기를 참조하세요. 이 커넥터에 특화된 것은 소스 호스트를 EAI가 참조하는 규칙에 넣는 것이에요.
규칙은 소스의 호스트와 포트를 단일 값(예: db.example.com:<port>)으로 취해요. 이는 커넥터 연결 URL의 호스트와 포트로, jdbc: 스킴, 드라이버 이름, 데이터베이스 경로는 제외한 값이에요.
BYOC 배포는 클라우드 환경에서 아웃바운드 연결을 처리하며 EAI나 네트워크 규칙을 사용하지 않아요.
커넥터 설치
데이터 엔지니어로서 커넥터를 설치하려면 다음을 수행하세요.
- Openflow의 커넥터 라이브러리(Connector library) 탭으로 이동해요.
- Openflow 커넥터 페이지에서 커넥터를 찾아 설치(Install) 를 선택해요.
- 런타임 선택(Select runtime) 대화상자에서 사용 가능한 런타임(Available runtimes) 드롭다운 목록에서 런타임을 선택하고 설치를 클릭해요.
참고
커넥터를 설치하기 전에 커넥터가 수집한 데이터를 저장할 데이터베이스와 스키마를 Snowflake에 만들어 두었는지 확인하세요.
- Snowflake 계정 자격 증명으로 배포에 인증하고, 런타임 애플리케이션이 Snowflake 계정에 접근하도록 허용하라는 메시지가 표시되면 허용(Allow) 을 선택해요. 커넥터 설치 프로세스는 완료하는 데 몇 분 걸려요.
- Snowflake 계정 자격 증명으로 런타임에 인증해요.
커넥터 프로세스 그룹이 추가된 Openflow 캔버스가 나타나요.
커넥터 구성
커넥터를 구성하려면 다음 단계를 수행하세요.
- 추가된 런타임을 오른쪽 클릭하고 매개변수(Parameters) 를 선택해요.
- 플로우 매개변수 지정에 설명된 대로 필수 매개변수 값을 입력해요.
플로우 매개변수 지정
이 절에서는 다음 매개변수 컨텍스트에 따라 구성할 수 있는 플로우 매개변수를 설명해요.
- BigQuery 소스 매개변수: BigQuery에서 데이터를 읽는 구성을 정의하는 데 사용해요.
- BigQuery 대상 매개변수: Snowflake와 연결을 설정하는 데 사용해요.
- BigQuery 수집 매개변수: 복제할 테이블과 뷰를 지정하는 데 사용해요.
BigQuery 소스 매개변수
| 매개변수 | 설명 |
|---|---|
| BigQuery Project Name | BigQuery 데이터셋과 테이블이 포함된 Google Cloud 프로젝트의 고유 식별자. 찾는 방법: BigQuery Studio를 열고(Google Cloud Console > BigQuery) 왼쪽 Explorer 창에서 프로젝트 위에 마우스를 올려 Project ID를 확인하세요. 예: example-team-gcp |
| GCP Service Account JSON | 인증에 사용되는 Google Cloud Platform 서비스 계정의 JSON 키 파일 전체 내용. 서비스 계정에 BigQuery 작업을 수행하는 데 필요한 IAM 권한(BigQuery Job User, BigQuery Data Viewer 역할 등)이 있는지 확인하세요. 얻는 방법: Google Cloud Console > IAM & Admin > Service Accounts > 서비스 계정 선택 > Keys 탭 > Add key > Create new key > JSON. .json 파일이 다운로드되면 열어 전체 파일 내용(중괄호 포함)을 이 필드에 붙여넣으세요. |
BigQuery 대상 매개변수
| 매개변수 | 설명 |
|---|---|
| Snowflake Authentication Strategy | Openflow - Snowflake 배포와 Openflow - BYOC 배포 모두에서 Authentication Strategy 값으로 SNOWFLAKE_MANAGED를 사용하세요. 대안으로 Openflow - BYOC 배포에 배포한다면 KEY_PAIR를 사용할 수 있어요. 예: SNOWFLAKE_MANAGED |
| Snowflake Account Identifier | 사용 시: SNOWFLAKE_MANAGED 인증 전략: 비워 두어야 해요. KEY_PAIR: 데이터가 저장될 Snowflake 계정 이름. |
| Destination Database | 복제할 대상 데이터베이스의 이름. 대소문자 혼용이 지원돼요. |
| Snowflake Private Key File | 사용 시: SNOWFLAKE_MANAGED 인증 전략: 프라이빗 키 파일은 비워 두어야 해요. KEY_PAIR: PKCS8 표준에 따라 형식화되고 표준 PEM 헤더·푸터를 포함하는, Snowflake에 인증하는 데 사용되는 RSA 프라이빗 키가 들어 있는 파일을 업로드해요. 헤더 줄은 -----BEGIN PRIVATE로 시작해요. Reference asset 확인란을 선택해 업로드하세요. |
| Snowflake Private Key Password | 사용 시: SNOWFLAKE_MANAGED 인증 전략: 비워 두어야 해요. KEY_PAIR: Snowflake Private Key File과 연결된 비밀번호를 제공해요. |
| Snowflake Role | 사용 시: SNOWFLAKE_MANAGED 인증 전략: 런타임의 execute-as 역할(또는 그에 부여된 하위 역할)을 사용해요. Openflow UI의 런타임에 대한 View Details로 이동해 찾을 수 있어요. KEY_PAIR 인증 전략: 서비스 사용자에 대해 구성된 유효한 역할을 사용해요. |
| Snowflake Username | 사용 시: SNOWFLAKE_MANAGED 인증 전략: 비워 두어야 해요. KEY_PAIR: Snowflake 인스턴스에 연결하는 데 사용되는 사용자 이름을 제공해요. |
| Snowflake Warehouse | 커넥터가 사용할 웨어하우스의 이름. |
BigQuery 수집 매개변수
| 매개변수 | 설명 |
|---|---|
| BigQuery Regions | BigQuery 데이터셋을 쿼리할 위치의 쉼표로 구분된 목록. 같은 목록에서 리전 및 멀티 리전 위치를 결합할 수 있어요. 예: us,eu,us-west1 |
| Included Dataset Names | 복제할 데이터셋의 쉼표로 구분된 목록(선택한 모든 리전에서 쿼리). 예: sales_data,marketing_leads |
| Included Dataset Names Regex | 복제할 데이터셋 이름을 지정하는 정규식(선택한 모든 리전에서 쿼리). Included Dataset Names와 결합해 일치하는 데이터셋을 포함. 참고: REGEXP 표현식은 Google의 RE2 구문과 일치해야 해요. 예: ^sales_.* |
| Included Table Names | 데이터셋 전반에 걸쳐 복제할 테이블의 쉼표로 구분된 목록. 예: transactions,customers |
| Included Table Names Regex | 데이터셋 전반에 걸쳐 복제할 테이블 이름을 지정하는 정규식. Included Table Names와 결합해 일치하는 테이블을 포함. 참고: REGEXP 표현식은 Google의 RE2 구문과 일치해야 해요. 예: ^revenue_.* |
| Included View Names | 데이터셋 전반에 걸쳐 복제할 뷰의 쉼표로 구분된 목록. 예: customer_summary,revenue_report |
| Included View Names Regex | 데이터셋 전반에 걸쳐 복제할 뷰 이름을 지정하는 정규식. Included View Names와 결합해 일치하는 뷰를 포함. 참고: REGEXP 표현식은 Google의 RE2 구문과 일치해야 해요. 예: ^report_.* |
| Incremental Sync Frequency | 커넥터가 각 테이블에 대해 증분 동기화를 실행하는 빈도. 주기가 구성된 간격보다 오래 걸리면 실행이 겹치지 않고 다음 실행이 이전 실행이 끝날 때까지 기다려요. BigQuery가 창 최대 크기를 24시간으로 제한하므로 일정은 이 값보다 더 빈번해야 해요. 예: 10m |
| View Sync Frequency | 커넥터가 각 뷰에 대해 동기화를 실행하는 빈도. 주기가 구성된 간격보다 오래 걸리면 실행이 겹치지 않아요. 뷰 수집은 CDC를 지원하지 않고 잘라내기 및 로드만 지원해요. 예: 1h |
| Temporary Table Dataset | CDC 저널 테이블이나 뷰 수집용 임시 테이블 같은 필요한 임시 테이블이 생성되는 데이터셋. Snowflake는 임시 테이블에 별도 데이터셋을 사용하고 수집된 데이터셋을 이 용도로 사용하지 않는 것을 권장해요. 예: openflow_temp |
플로우 실행
- 캔버스를 오른쪽 클릭하고 모든 컨트롤러 서비스 활성화(Enable all Controller Services) 를 선택해요.
- 가져온 프로세스 그룹을 오른쪽 클릭하고 시작(Start) 을 선택해요. 커넥터가 데이터 수집을 시작해요.