Google Sheets용 Openflow 커넥터 설정
Google Sheets용 Openflow 커넥터 설정
이 주제는 Openflow Connector for Google Sheets를 설정하는 단계를 설명해요.
출처: Snowflake 문서
본문
참고: 이 커넥터는 Snowflake Connector Terms가 적용돼요.
이 주제는 Openflow Connector for Google Sheets를 설정하는 단계를 설명해요.
전제 조건(Prerequisites)
- About Openflow Connector for Google Sheets을 검토했는지 확인해요.
- Set up Openflow - Snowflake Deployments 또는 Set up Openflow - BYOC를 설정했는지 확인해요.
- Openflow - Snowflake Deployments를 사용한다면 configuring required domains을 검토하고, Google Sheets 커넥터에 필요한 도메인에 대한 액세스를 부여했는지 확인해요.
Google Cloud 자격 증명을 가져오고 Google Cloud 프로젝트 설정하기
Google Cloud 관리자로서 다음 작업을 수행해요:
- 다음을 갖추고 있는지 확인해요:
- 서비스 계정 키 생성을 활성화해요. Google은 기본적으로 서비스 계정 키 생성을 비활성화해요. Snowflake Openflow가 서비스 계정 JSON을 사용하려면 이 키 생성 정책을 꺼야 해요. 서비스 계정 키 생성을 활성화하려면:
- Organizational Policy Admin 역할이 있는 슈퍼 관리자 계정으로 Google Cloud Console에 로그인해요.
- 조직과 연결된 프로젝트에 있는지 확인해요(조직 안의 프로젝트가 아니라).
- Organization Policies를 선택해요.
- Disable service account key creation 정책을 선택해요.
- Manage Policy를 선택하고 강제 적용(enforcement)을 꺼요.
- Set Policy를 선택해요.
- 서비스 계정과 키를 만들어요.
- Google Sheets 스프레드시트를 서비스 계정 이메일 주소와 공유해요. 이메일 주소는 서비스 계정 JSON 파일의 client_email 필드에서 찾을 수 있어요. 공유 권한을 Viewer로 설정해요.
- Google Cloud 프로젝트에 대해 Google Sheets API를 활성화해요. 자세한 내용은 Enable the Google Sheets API를 참고해요.
Snowflake 계정 설정하기
Openflow 관리자로서 Snowflake 계정을 설정하려면 다음 작업을 수행해요. 기본 SNOWFLAKE_MANAGED 인증 전략을 사용하면 런타임의 execute-as 역할이 커넥터가 Snowflake에 접근할 때 사용하는 신원이 되므로, 그 역할에 다음 권한을 부여해요.
참고: Openflow - BYOC Deployments에 커넥터를 배포하고 권장하는
SNOWFLAKE_MANAGED대신KEY_PAIR인증 전략을 사용한다면, 런타임의 관리 토큰에 의존하는 대신 이 같은 execute-as 역할을 서비스 사용자에게 부여해요. 서비스 사용자를 만들려면 Set up key-pair authentication for Openflow - BYOC Deployments을 참고해요.
데이터베이스, 스키마, 웨어하우스 만들기
- 대상 데이터베이스를 만들어요:
USE ROLE OPENFLOW_ADMIN; CREATE DATABASE IF NOT EXISTS <destination_database>; - 대상 스키마를 만들어요:
CREATE SCHEMA IF NOT EXISTS <destination_database>.<destination_schema>; - 런타임의 execute-as 역할에 필요한 권한을 부여해요:
GRANT USAGE ON DATABASE <destination_database> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL; GRANT USAGE ON SCHEMA <destination_database>.<destination_schema> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL; GRANT CREATE TABLE ON SCHEMA <destination_database>.<destination_schema> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL; - 웨어하우스를 만들거나(기존 것을 사용하거나) 사용 권한을 부여해요:
CREATE WAREHOUSE IF NOT EXISTS <openflow_warehouse> WITH WAREHOUSE_SIZE = 'XSMALL' AUTO_SUSPEND = 300 AUTO_RESUME = TRUE; GRANT USAGE, OPERATE ON WAREHOUSE <openflow_warehouse> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL; - 커넥터가 수집한 테이블에 액세스가 필요한 다른 Snowflake 사용자가 있다면(예: Snowflake에서 커스텀 처리), 그 사용자에게 execute-as 역할을 부여해요.
커넥터 설정하기
데이터 엔지니어로서 커넥터를 설치하고 구성하려면 다음 작업을 수행해요:
커넥터 설치하기
데이터 엔지니어로서 커넥터를 설치하려면:
- Openflow의 Connector library 탭으로 이동해요.
- Openflow 커넥터 페이지에서 커넥터를 찾고 Install을 선택해요.
- Select runtime 대화상자에서 Available runtimes 드롭다운 목록에서 런타임을 선택하고 Install을 클릭해요.
참고: 커넥터를 설치하기 전에, 수집된 데이터를 저장할 Snowflake에 데이터베이스와 스키마를 만들었는지 확인해요.
- Snowflake 계정 자격 증명으로 배포에 인증하고, 런타임 애플리케이션이 Snowflake 계정에 접근하는 것을 허용하라는 프롬프트가 나오면 Allow를 선택해요. 커넥터 설치 과정은 완료되는 데 몇 분이 걸려요.
- Snowflake 계정 자격 증명으로 런타임에 인증해요. Openflow 캔버스에 커넥터 프로세스 그룹이 추가된 상태로 나타나요.
커넥터 구성하기
- 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Parameters를 선택해요.
- Flow parameters에 설명된 대로 필수 파라미터 값을 채워요.
Flow parameters
커넥터 정의의 구성은 세 개의 파라미터 컨텍스트로 나뉘어요:
- Google Sheets Source Parameters: Google Sheets와의 연결을 설정하는 데 사용
- Google Sheets Destination Parameters: Snowflake와의 연결을 설정하는 데 사용
- Google Sheets Ingestion Parameters: Google Sheets에서 다운로드한 데이터의 구성을 정의하는 데 사용
참고: Google Sheets Ingestion Parameters 파라미터 컨텍스트에는 스프레드시트별 세부 정보가 포함되므로, 각 새 스프레드시트와 프로세스 그룹마다 새 파라미터 컨텍스트를 만들어야 해요. 새 파라미터 컨텍스트를 만들려면 Openflow Canvas 메뉴로 가서 Parameter Contexts를 선택하고 새 파라미터 컨텍스트를 추가해요. 이 컨텍스트는 Google Sheets Destination Parameters와 Google Sheets Source Parameters 파라미터 컨텍스트 모두에서 파라미터를 상속받아요.
다음 표들은 파라미터 컨텍스트에 따라 구성할 수 있는 플로우 파라미터를 설명해요:
Google Sheets Destination Parameters
| 파라미터 | 설명 | 필수 |
|---|---|---|
| Destination Database | 데이터가 저장될 데이터베이스. Snowflake에 이미 존재해야 함. 이름은 대소문자를 구분함. 인용되지 않은 식별자는 대문자로 제공 | |
| Destination Schema | 데이터가 저장될 스키마. Snowflake에 이미 존재해야 함. 이름은 대소문자를 구분함. 인용되지 않은 식별자는 대문자로 제공. 예: CREATE SCHEMA SCHEMA_NAME 또는 CREATE SCHEMA schema_name: SCHEMA_NAME 사용. CREATE SCHEMA "schema_name" 또는 CREATE SCHEMA "SCHEMA_NAME": 각각 schema_name 또는 SCHEMA_NAME 사용 |
예 |
| Snowflake Authentication Strategy | 다음 중 하나: Snowflake Openflow Deployment 또는 BYOC: SNOWFLAKE_MANAGED 사용(이 토큰은 Snowflake가 자동 관리함). BYOC 배포는 SNOWFLAKE_MANAGED를 사용하려면 이전에 execute-as roles을 구성해야 함. BYOC: 대안으로 BYOC는 인증 전략 값으로 KEY_PAIR를 사용할 수 있음 | 예 |
| Snowflake Account Identifier | 다음 중 하나: SNOWFLAKE_MANAGED 인증 전략: 비어 있어야 함. KEY_PAIR: [organization-name]-[account-name] 형식의 Snowflake 계정 이름 | 예 |
| Snowflake Private Key | 다음 중 하나: SNOWFLAKE_MANAGED 인증 전략: 비어 있어야 함. KEY_PAIR: PKCS8 표준에 따라 형식화되고 표준 PEM 헤더·푸터를 포함하는 인증용 RSA 개인 키. Snowflake Private Key File 또는 Snowflake Private Key 중 하나는 정의해야 함 | 아니요 |
| Snowflake Private Key File | 다음 중 하나: SNOWFLAKE_MANAGED 인증 전략: 개인 키 파일은 비어 있어야 함. KEY_PAIR: PKCS8 표준에 따라 형식화되고 표준 PEM 헤더·푸터를 포함하는 인증용 RSA 개인 키가 들어 있는 파일을 업로드. 헤더 줄은 -----BEGIN PRIVATE로 시작함. 개인 키 파일을 업로드하려면 Reference asset 체크박스를 선택 |
아니요 |
| Snowflake Private Key Password | 다음 중 하나: SNOWFLAKE_MANAGED 인증 전략: 비어 있어야 함. KEY_PAIR: Snowflake 개인 키 파일과 연결된 비밀번호 제공 | 아니요 |
| Snowflake Role | 다음 중 하나: SNOWFLAKE_MANAGED 인증 전략: 런타임의 execute-as 역할(또는 그 역할에 부여된 하위 역할) 사용. execute-as 역할은 Openflow UI에서 런타임의 View Details로 이동해 찾을 수 있음. KEY_PAIR: 서비스 사용자에 대해 구성된 유효한 역할 사용 | 예 |
| Snowflake Username | 다음 중 하나: SNOWFLAKE_MANAGED 인증 전략: 비어 있어야 함. KEY_PAIR: Snowflake 인스턴스에 연결하는 데 사용되는 사용자 이름 제공 | 예 |
| Snowflake Warehouse | 쿼리를 실행하는 데 사용되는 Snowflake 웨어하우스 | 예 |
Google Sheets Source Parameters
| 파라미터 | 설명 |
|---|---|
| Service Account JSON | client_id, client_email, private_key 같은 서비스 계정 자격 증명이 들어 있는 파일의 내용. 파일 전체 내용을 복사 |
Google Sheets Ingestion Parameters
다음 표는 다른 파라미터 컨텍스트에서 상속되지 않은 파라미터만 나열해요.
| 파라미터 | 설명 |
|---|---|
| Date Time Render Option | 출력에서 날짜가 렌더링되는 방식을 결정함. SERIAL_NUMBER와 FORMATTED_STRING 중 하나를 선택할 수 있음. Value Render Option 파라미터가 UNFORMATTED_VALUE로 설정된 경우에만 SERIAL_NUMBER를 선택해요. 자세한 내용은 DateTimeRenderOption 참고 |
| Destination Database | 대상 테이블이 생성되는 대상 데이터베이스 |
| Destination Schema | 대상 테이블이 생성되는 대상 스키마 |
| Destination Table Prefix | Google Sheets에서 가져온 보고서 데이터가 저장되는 대상 테이블 접두사. 커넥터는 각 범위(range)에 대해 대상 테이블 하나를 만듬. 범위가 제공되지 않으면 시트 이름이 테이블 식별자로 사용됨. 시트의 첫 번째 행은 대상 테이블의 컬럼 이름을 나타냄 |
| Ranges | 스프레드시트에서 검색할 범위 목록. 범위가 지정되지 않으면 지정된 스프레드시트의 모든 시트가 다운로드됨. 각 범위를 A1 또는 R1C1 표기법으로 쉼표로 구분해 제공. 예: Sheet1!A1:B2,Sheet2!D4:E5,Sheet3 |
| Run Schedule | Google Sheets에서 데이터를 검색해 Snowflake에 저장하는 실행 일정. 기본적으로 타이머 기반 스케줄링 전략이 사용되고 여기서 사용자는 간격(예: 8h)을 지정함 |
| Spreadsheet ID | 스프레드시트의 고유 식별자. 스프레드시트의 URL에서 찾을 수 있음 |
| Value Render Option | 출력에서 값이 렌더링되는 방식을 결정함. FORMATTED_VALUE와 UNFORMATTED_VALUE 중 하나를 선택할 수 있음. FORMATTED_VALUE를 선택하면 대상 테이블의 모든 컬럼이 VARCHAR 타입이 됨. 자세한 내용은 ValueRenderOption 참고 |
참고: 대상 테이블 식별자는 대상 테이블 접두사와 범위 이름의 조합이며 고유해야 해요. 여러 스프레드시트나 단일 시트에서 데이터를 다운로드하고 범위 이름이 고유하지 않다면, 각 플로우에 대해 고유한 대상 테이블 접두사를 지정해야 해요. 대상 테이블 이름이 고유하지 않으면 커넥터가 실패하거나 기존 대상 테이블을 덮어쓸 수 있어요.
플로우 실행하기
- 평면(plane)을 마우스 오른쪽 버튼으로 클릭하고 Enable all Controller Services를 선택해요.
- 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Start를 선택해요. 커넥터가 데이터 수집을 시작해요.
참고: 가져온 .xlsx 파일은 Google Sheets 형식이어야 해요. 파일을 가져온다면 플로우를 실행하기 전에 파일이 Google Sheets 형식으로 변환되었는지 확인해요. Google Sheets가 아닌 다른 형식의 스프레드시트는 읽을 수 없어요. 자세한 내용은 Convert files to Google Sheets format을 참고해요.