Openflow Connector for Google BigQuery 설정하기

참고

이 커넥터에는 `Snowflake Connector 약관<https://www.snowflake.com/legal/snowflake-connector-terms/>`_이 적용됩니다.

이 항목에서는 Openflow Connector for Google BigQuery 를 설정하는 단계에 대해 설명합니다.

전제 조건

  1. Openflow Connector for Google BigQuery 정보 섹션을 검토합니다.

  2. 런타임 배포를 설정합니다.

  3. Openflow - Snowflake Deployments 를 사용하는 경우 :doc:`필수 도메인 구성 </user-guide/data-integration/openflow/setup-openflow-spcs-sf-allow-list>`을 검토하고 커넥터에 필요한 :ref:`도메인 <label-of_bq_req_domains>`에 대한 액세스 권한을 부여했는지 확인합니다.

  4. Openflow 관리자 역할 또는 Openflow를 관리하는 데 사용하는 유사한 역할에 액세스할 수 있습니다.

  5. 커넥터를 관리하기 위해 Snowflake 서비스 사용자를 생성하는 경우 키 페어 인증을 생성한 것입니다. 자세한 내용은 키 페어 인증 섹션을 참조하세요.

필수 엔드포인트

커넥터가 작동하려면 다음 엔드포인트가 필요합니다.

  • bigquery.googleapis.com:443

  • bigquerystorage.googleapis.com:443

  • oauth2.googleapis.com:443

Openflow-BYOC를 사용하는 경우 위에 나열된 엔드포인트에 대한 TLS 443 액세스를 허용하도록 클라우드 네트워크 송신을 구성해야 합니다. Openflow - Snowflake Deployments 를 사용하는 경우 네트워크 규칙과 외부 액세스 통합(EAI)을 생성해야 합니다. 그런 다음 EAI에서 Snowflake 역할 사용 권한을 부여합니다.

BigQuery 설정

  1. Google Cloud Service 계정을 생성하고 BigQuery 데이터를 읽는 데 필요한 권한을 부여합니다. 커넥터는 이 계정을 인증에 사용합니다.

    이 계정에는 다음 권한이 있어야 합니다.

중요

BigQuery Data Editor``는 개별 데이터 세트가 아닌 **프로젝트 수준**에서 부여되어야 합니다. 커넥터는 ``{project}.{region}.INFORMATION_SCHEMA.TABLES``를 쿼리하여 구성된 모든 리전에서 테이블을 검색합니다. 이는 프로젝트 수준 액세스가 필요한 리전 범위 지정 뷰입니다. 커넥터는 ``{project}.{dataset}.INFORMATION_SCHEMA.KEY_COLUMN_USAGE``를 쿼리하여 복제된 테이블의 기본 키를 결정하기도 합니다. 프로젝트 수준 액세스 권한이 없으면 ``Access Denied 오류와 함께 쿼리가 실패하며 커넥터가 올바르게 실행되지 않습니다.

  1. 서비스 계정의 해당 JSON 키 파일을 생성하고 다운로드합니다. 커넥터 구성을 위해서는 이 파일의 전체 내용이 필요합니다.

  2. 커넥터가 증분 복제를 수행할 수 있도록 각 소스 테이블에서 변경 기록을 활성화합니다. 이 기능을 통해 BigQuery는 커넥터가 데이터를 효율적으로 동기화하기 위해 사용하는 행 수준 변경 사항(삽입, 업데이트, 삭제)을 추적합니다.

    각 테이블에 대해 BigQuery 콘솔에서 다음 쿼리를 실행합니다.

    ALTER TABLE `project.dataset.table`
    SET OPTIONS (enable_change_history = TRUE);
    

Snowflake 계정 설정

Openflow 관리자로 다음 작업을 수행하여 Snowflake 계정을 설정합니다.

  1. Snowflake 서비스 사용자를 생성합니다.

    USE ROLE USERADMIN;
    CREATE USER <openflow_service_user>
      TYPE=SERVICE
      COMMENT='Service user for Openflow automation';
    
  2. 커넥터의 구성에 제공할 파일에 사용자의 개인 키를 저장합니다. 자세한 내용은 키 페어 인증 섹션을 참조하세요.

    ALTER USER <openflow_service_user> SET RSA_PUBLIC_KEY = '<pubkey>';
    
  3. 복제된 데이터를 저장하는 데이터베이스를 생성하고, USAGE 및 CREATE SCHEMA 권한을 부여하여 해당 데이터베이스에 오브젝트를 생성할 수 있도록 Snowflake 사용자에게 권한을 설정합니다.

    USE ROLE ACCOUNTADMIN;
    CREATE DATABASE IF NOT EXISTS <destination_database>;
    GRANT USAGE ON DATABASE <destination_database> TO USER <openflow_service_user>;
    GRANT CREATE SCHEMA ON DATABASE <destination_database> TO USER <openflow_service_user>;
    
  4. 새 웨어하우스를 생성하거나 커넥터에 기존 웨어하우스를 사용합니다.

    새 웨어하우스를 생성하려면 다음을 수행합니다.

    CREATE WAREHOUSE <openflow_warehouse>
    WITH
       WAREHOUSE_SIZE = 'MEDIUM'
       AUTO_SUSPEND = 300
       AUTO_RESUME = TRUE;
    GRANT USAGE, OPERATE ON WAREHOUSE <openflow_warehouse> TO USER <openflow_service_user>;
    

    MEDIUM 웨어하우스 크기로 시작한 다음, 복제되는 테이블 수와 전송되는 데이터의 양에 따라 크기를 실험합니다.

    크기를 늘려야 할지 판단하려면 데이터 복제가 진행되는 동안 커넥터와 데이터베이스를 모니터링합니다. 증분 복제 중에 상당한 지연이 발생하면 더 큰 웨어하우스 크기로 실험합니다. 그러나 대규모 테이블 수는 일반적으로 웨어하우스 크기를 늘리는 대신 :doc:`멀티 클러스터 웨어하우스 </user-guide/warehouses-multicluster>`를 사용하여 확장하는 것이 좋습니다.

  5. 외부 액세스 통합을 생성하여 Snowflake 외부에서 네트워크 액세스를 활성화합니다.

    조심

    런타임이 Openflow-BYOC에서 실행되는 경우 외부 액세스 통합(EAI)을 생성할 필요가 없습니다. 대신, 아래에 나열된 엔드포인트에 대한 TLS 443 액세스를 허용하도록 클라우드 네트워크 송신을 구성합니다.

    필수 host:port 엔드포인트는 :ref:`label-of_bq_req_domains`에 나열되어 있습니다.

    커넥터가 Snowflake 호스팅 런타임에서 필수 Google APIs를 호출하도록 허용하려면 네트워크 규칙과 외부 액세스 통합(EAI)을 생성해야 합니다. 그런 다음 EAI에서 Snowflake 역할 사용 권한을 부여합니다.

    외부 액세스 통합 및 네트워크 규칙을 생성하고 액세스 권한을 부여하려면 다음 단계를 수행합니다.

    1. 커넥터가 필수 Google APIs에 액세스할 수 있도록 허용하는 네트워크 규칙을 생성합니다.

      USE ROLE ACCOUNTADMIN;
      USE DATABASE <openflow_network_db>;
      
      CREATE OR REPLACE NETWORK RULE openflow_<runtime_name>_network_rule
        TYPE = HOST_PORT
        MODE = EGRESS
        VALUE_LIST = (
          'bigquery.googleapis.com:443',
          'bigquerystorage.googleapis.com:443',
          'oauth2.googleapis.com:443'
        );
      
    2. 네트워크 규칙을 참조하는 외부 액세스 통합을 생성합니다.

      CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION openflow_<runtime_name>_eai
        ALLOWED_NETWORK_RULES = (openflow_<runtime_name>_network_rule)
        ENABLED = TRUE;
      
    3. 통합에 대한 Snowflake 역할 USAGE 권한을 부여합니다.

      GRANT USAGE ON INTEGRATION openflow_<runtime_name>_eai
        TO ROLE openflow_runtime_role_<runtime_name>;
      

커넥터 설치하기

커넥터를 설치하려면 데이터 엔지니어로서 다음을 수행합니다.

  1. Openflow 개요 페이지로 이동합니다. Featured connectors 섹션에서 View more connectors 을 선택합니다.

  2. Openflow Connector 페이지에서 커넥터를 찾아 Add to runtime 을 선택합니다.

  3. Select runtime 대화 상자의 Available runtimes 드롭다운 목록에서 런타임을 선택하고 :ui:`Add`를 클릭합니다.

    참고

    커넥터를 설치하기 전에 커넥터가 수집한 데이터를 저장할 수 있도록 Snowflake에서 데이터베이스와 스키마를 생성했는지 확인하십시오.

  4. Snowflake 계정 자격 증명으로 배포를 인증하고 런타임 애플리케이션이 Snowflake 계정에 액세스할 수 있도록 허용할지 묻는 메시지가 표시되면 Allow 를 선택합니다. 커넥터 설치 프로세스를 완료하는 데 몇 분 정도 걸립니다.

  5. Snowflake 계정 자격 증명으로 런타임에 인증합니다.

커넥터 프로세스 그룹이 추가된 Openflow 캔버스가 표시됩니다.

커넥터 구성

커넥터를 구성하려면 다음 단계를 수행합니다.

  1. 추가된 런타임을 마우스 오른쪽 버튼으로 클릭하고 :ui:`Parameters`를 선택합니다.

  2. :ref:`label-specify-bq-connector-flow-parameters`에 설명된 대로 필수 매개 변수 값을 채웁니다.

흐름 매개 변수 지정

이 섹션에서는 다음 매개 변수 컨텍스트에 따라 구성할 수 있는 플로우 매개 변수에 대해 설명합니다.

BigQuery 소스 매개 변수

매개 변수

설명

BigQuery 프로젝트 이름

BigQuery 데이터 세트 및 테이블을 포함하는 Google Cloud 프로젝트의 고유 식별자입니다.

찾을 수 있는 위치: BigQuery Studio(Google Cloud Console > BigQuery)를 열고 왼쪽 탐색기 창에서 프로젝트를 마우스로 가리키면 프로젝트 ID가 표시됩니다.

예: example-team-gcp

GCP 서비스 계정 JSON

인증에 사용되는 Google Cloud Platform 서비스 계정의 JSON 키 파일에 대한 전체 내용입니다. 서비스 계정에 BigQuery 작업 사용자 및 BigQuery 데이터 뷰어 역할 등 BigQuery 작업을 수행하는 데 필요한 IAM 권한이 있는지 확인합니다.

다운로드 위치: Google Cloud Console > IAM 및 관리자 > 서비스 계정 > 서비스 계정 선택 > 키 탭 > 키 추가 > 새 키 생성 > JSON. 그러면 .json 파일이 다운로드됩니다. 파일을 열고 전체 파일 내용(중괄호 포함)을 이 필드에 붙여넣습니다.

BigQuery 대상 매개 변수

매개 변수

설명

Snowflake Authentication Strategy

SPCS 사용 시 SNOWFLAKE_SESSION_TOKEN을 인증 전략의 값으로 사용합니다. BYOC 사용 시 KEY_PAIR을 인증 전략의 값으로 사용합니다.

예: KEY_PAIR

Snowflake 계정 식별자

사용하는 경우:

  • Session Token Authentication Strategy: 비워 두어야 합니다.

  • KEY_PAIR: 데이터가 유지될 Snowflake 계정 이름입니다.

대상 데이터베이스

복제할 대상 데이터베이스의 이름입니다. 대소문자 혼합이 지원됩니다.

Snowflake 개인 키 파일

사용하는 경우:

  • Session token authentication strategy: 개인 키 파일은 비워 두어야 합니다.

  • KEY_PAIR: PKCS8 표준에 따라 형식이 지정되고 표준 PEM 헤더와 푸터가 있는 Snowflake 인증에 사용되는 RSA 개인 키가 포함된 파일을 업로드합니다. 헤더 라인은 ``—–BEGIN PRIVATE``으로 시작합니다. 개인 키 파일을 업로드하려면 참조 자산 확인란을 선택합니다.

Snowflake 개인 키 비밀번호

사용하는 경우:

  • Session Token Authentication Strategy: 비워 두어야 합니다.

  • KEY_PAIR: Snowflake 개인 키 파일과 연결된 비밀번호를 입력합니다.

Snowflake 역할

사용하는 경우:

  • Session Token Authentication Strategy: Snowflake 역할을 사용합니다. 런타임에 대한 세부 정보 보기로 이동하여 Openflow UI에서 Snowflake 역할을 찾을 수 있습니다.

  • KEY_PAIR Authentication Strategy: 서비스 사용자에 대해 구성된 유효한 역할을 사용합니다.

Snowflake 사용자 이름

사용하는 경우:

  • Session Token Authentication Strategy: 비워 두어야 합니다.

  • KEY_PAIR: Snowflake 인스턴스에 연결하는 데 사용되는 사용자 이름을 입력합니다.

Snowflake 웨어하우스

커넥터에서 사용할 웨어하우스의 이름입니다.

BigQuery 수집 매개 변수

매개 변수

설명

BigQuery 리전

BigQuery 데이터 세트를 쿼리할 위치의 쉼표로 구분된 목록을 지정합니다. 동일한 목록에서 리전 위치와 다중 리전 위치를 모두 결합할 수 있습니다.

예: us,eu,us-west1

포함된 데이터 세트 이름

복제할 데이터 세트의 쉼표로 구분된 목록입니다(선택한 모든 리전에서 쿼리됨).

예: sales_data,marketing_leads

포함된 데이터 세트 이름 정규식

복제할 데이터 세트 이름을 지정하기 위한 정규식입니다(선택한 모든 리전에서 쿼리됨). 포함된 데이터 세트 이름과 결합하여 일치하는 데이터 세트를 모두 포함합니다. 참고: REGEXP 식은 Google의 RE2 구문과 일치해야 합니다.

예: ^sales_.*

포함된 테이블 이름

데이터 세트 간에 복제할 테이블의 쉼표로 구분된 목록입니다.

예: transactions,customers

포함된 테이블 이름 Regex

데이터 세트 간에 복제할 테이블 이름을 지정하기 위한 정규식입니다. 포함된 테이블 이름과 결합하여 일치하는 테이블을 모두 포함합니다. 참고: REGEXP 식은 Google의 RE2 구문과 일치해야 합니다.

예: ^revenue_.*

포함된 뷰 이름

데이터 세트 간에 복제할 뷰의 쉼표로 구분된 목록입니다.

예: customer_summary,revenue_report

포함된 뷰 이름 정규식

데이터 세트 간에 복제할 뷰 이름을 지정하기 위한 정규식입니다. 포함된 뷰 이름과 결합하여 일치하는 뷰를 포함합니다. 참고: REGEXP 식은 Google의 RE2 구문과 일치해야 합니다.

예: ^report_.*

증분 동기화 빈도

커넥터가 각 테이블에 대해 증분 동기화를 실행하는 빈도입니다. 실행은 겹치지 않으며, 주기가 구성된 간격보다 오래 걸리는 경우 다음 실행은 이전 실행이 완료될 때까지 기다립니다. BigQuery는 기간의 최대 크기를 24시간으로 제한하므로, 일정은 이 값보다 더 자주 실행해야 합니다.

예: 10m

뷰 동기화 빈도

커넥터가 각 뷰에 대해 동기화를 실행하는 빈도입니다. 실행은 겹치지 않으며, 주기가 구성된 간격보다 오래 걸리는 경우 다음 실행은 이전 실행이 완료될 때까지 기다립니다. 뷰 수집은 자르기 및 로드만 지원하며, CDC는 지원하지 않습니다.

예: 1h

임시 테이블 데이터 세트

필요한 임시 테이블이 생성되는 데이터 세트(예: 뷰 수집을 위한 CDC 저널 테이블 또는 임시 테이블)입니다. 임시 테이블에는 별도의 데이터 세트를 사용하고 수집된 데이터 세트는 이 목적으로 사용하지 않는 것이 좋습니다.

예: openflow_temp

플로우 실행

  1. 평면을 마우스 오른쪽 버튼으로 클릭하고 Enable all Controller Services 를 선택합니다.

  2. 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Start 를 선택합니다. 커넥터가 데이터 수집을 시작합니다.

다음 단계

  • 커넥터를 설치한 후 수행할 수 있는 작업에 대한 자세한 내용은 :doc:`커넥터 사용 <use>`을 참조하세요.

  • 흐름 모니터링에 대한 자세한 내용은 :doc:`흐름 모니터링 </user-guide/data-integration/openflow/monitor>`을 참조하세요.