SQL을 사용하여 Snowflake Connector for Google Analytics Raw Data 구성하기

Google Analytics Raw Data용 Snowflake Connector에는 커넥터 약관 이 적용됩니다.

이 항목에서는 SQL을 사용한 Snowflake Connector for Google Analytics Raw Data 구성에 대한 정보를 제공합니다.

참고

Snowflake Connector for Google Analytics Raw Data 구성은 일반적으로 Snowsight 를 사용하여 수행됩니다. SQL 구성은 고급 구성 방법으로 간주되므로 커넥터 구성의 기본 세부 사항을 잘 아는 사용자만 사용해야 합니다.

SQL 문을 사용하여 커넥터를 구성하려면 다음을 수행하십시오.

참고

커넥터를 프로비저닝하고 연결을 구성하려면 커넥터 설치 데이터베이스의 인스턴스 역할을 하는 데이터베이스의 PUBLIC 스키마에 정의된 저장 프로시저를 사용해야 합니다.

이러한 저장 프로시저를 호출하기 전에 해당 데이터베이스를 세션에 사용할 데이터베이스로 선택하십시오.

예를 들어 해당 데이터베이스의 이름이 snowflake_connector_for_google_analytics_raw_data 인 경우 다음 명령을 실행합니다.

USE DATABASE snowflake_connector_for_google_analytics_raw_data;
Copy

웨어하우스, 데이터 소유자 역할, 대상 데이터베이스 준비하기

  1. 커넥터 애플리케이션에 지정된 웨어하우스에 대한 사용 권한과 작업 실행 권한을 부여합니다.

    USE ROLE accountadmin;
    CREATE WAREHOUSE google_analytics_raw_data_warehouse with warehouse_size = 'X-Small';
    GRANT USAGE ON WAREHOUSE google_analytics_raw_data_warehouse TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    GRANT EXECUTE TASK ON ACCOUNT TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    GRANT EXECUTE MANAGED TASK ON ACCOUNT TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    
    Copy
  2. 데이터 소유자 역할을 생성합니다.

    USE ROLE accountadmin;
    CREATE OR REPLACE ROLE google_analytics_raw_data_resources_provider;
    GRANT CREATE DATABASE ON ACCOUNT TO ROLE google_analytics_raw_data_resources_provider;
    GRANT USAGE ON WAREHOUSE google_analytics_raw_data_warehouse TO ROLE google_analytics_raw_data_resources_provider;
    GRANT ROLE google_analytics_raw_data_resources_provider TO USER ADMIN;
    
    Copy
  3. 대상 데이터베이스 및 스키마를 만듭니다.

    특히 커넥터를 다시 설치하는 경우 기존 대상 데이터베이스 및 스키마를 사용할 수도 있습니다.

    USE ROLE google_analytics_raw_data_resources_provider;
    CREATE DATABASE google_analytics_raw_data_dest_db;
    CREATE SCHEMA google_analytics_raw_data_dest_db.google_analytics_raw_data_dest_schema;
    
    Copy
  4. 대상 데이터베이스에 필요한 권한 부여를 애플리케이션에 추가합니다.

    USE ROLE accountadmin;
    GRANT USAGE ON DATABASE google_analytics_raw_data_dest_db TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    GRANT USAGE ON SCHEMA google_analytics_raw_data_dest_db.google_analytics_raw_data_dest_schema TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    
    GRANT CREATE TABLE ON SCHEMA google_analytics_raw_data_dest_db.google_analytics_raw_data_dest_schema TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    GRANT CREATE VIEW ON SCHEMA google_analytics_raw_data_dest_db.google_analytics_raw_data_dest_schema TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    
    Copy
  5. (선택 사항) 대상 스키마의 테이블 및 뷰 소유권 이전하기

    커넥터를 다시 설치하고 이전 대상 스키마를 재사용하는 경우 대상 스키마에 있는 모든 테이블과 뷰의 소유권을 커넥터로 이전해야 합니다. 커넥터에는 스키마의 오브젝트에 대한 권한을 관리하고 수집된 테이블의 스키마가 변경될 때 평면화된 뷰를 다시 생성하기 위한 소유권 권한이 필요합니다.

    소유권을 이전하려면 SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION 함수를 호출합니다.

    USE ROLE accountadmin;
    CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<connector_app>, true, <destination_database>, <destination_schema>);
    
    Copy

    SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION 은 Snowflake가 제공하는 시스템 함수으로, 지정된 데이터베이스나 스키마의 테이블과 뷰 소유권을 애플리케이션으로 이전할 수 있습니다. 일반 테이블과 일반 뷰의 소유권만 이전됩니다. 예를 들어, 동적 테이블, 외부 테이블, 구체화된 뷰 등의 소유권은 이전되지 않습니다.

    이 함수에는 다음과 같은 서명이 있습니다.

    SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<to_app>, <should_copy_grants>, <from_database>, <from_schema>)
    
    Copy

    여기서:

    to_app

    오브젝트 소유권을 이전할 애플리케이션의 이름을 지정합니다.

    should_copy_grants

    그런 다음 TRUE 인 경우 기존 권한 부여를 복사하고, 그렇지 않으면 취소합니다. 권한 부여를 복사하려면 호출자에게 MANAGE GRANTS 권한이 필요합니다.

    from_database

    소유권을 변경해야 하는 오브젝트가 들어 있는 데이터베이스의 이름입니다.

    from_schema

    (선택 사항) 소유권을 변경해야 하는 오브젝트가 포함된 스키마의 이름입니다. 스키마가 지정되지 않으면 제공된 데이터베이스의 모든 스키마에 있는 테이블과 뷰의 소유권이 이전됩니다. 소유권 이전 중 관리되는 스키마의 오브젝트는 생략됩니다.

    함수를 실행하려면 호출자가 다음 조건 중 하나를 충족해야 합니다.

    • MANAGE GRANTS 권한(예: ACCOUNTADMIN 또는 SECURITYADMIN 역할)이 있어야 합니다. 또는

    • 여기에는 애플리케이션 인스턴스를 소유하는 역할과 소유권을 이전하기 위한 모든 오브젝트를 소유하는 역할이 포함되어 있습니다. 소유권이 없는 오브젝트는 함수에 의해 생략됩니다.

    다음과 같은 커넥터로 소유권을 이전하는 예를 들어보겠습니다.

    • snowflake_connector_for_google_analytics_raw_data 로 설치된 커넥터

    • Snowflake의 Google Analytics 데이터에 대해 dest_db.dest_schema 라는 스키마를 사용하는 커넥터

    다음 명령을 실행합니다.

    USE ROLE accountadmin;
    CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION('snowflake_connector_for_google_analytics_raw_data', true, 'dest_db', 'dest_schema');
    
    Copy

    필요한 경우, 이전에 데이터를 소유하고 있던 역할에 DATA_READER 애플리케이션 역할을 부여하여 데이터를 사용하는 기존 파이프라인의 중단을 방지합니다.

    GRANT APPLICATION ROLE <connector_app>.DATA_READER TO ROLE <previous_data_owner_role>;
    
    Copy

    DATA_READER 애플리케이션 역할은 PROVISION_CONNECTOR 프로시저가 실행될 때까지 대상 스키마의 테이블 및 뷰에 대한 권한을 갖지 못한다는 점에 유의하십시오.

커넥터 프로비저닝하기

  1. PROVISION_CONNECTOR 프로시저를 호출합니다.

    웨어하우스 이름, 대상 데이터베이스 및 스키마, 데이터 소유자 역할을 전달합니다. 이러한 값은 대/소문자를 구분합니다.

    CALL PROVISION_CONNECTOR(
        'GOOGLE_ANALYTICS_RAW_DATA_WAREHOUSE',
        'GOOGLE_ANALYTICS_RAW_DATA_DEST_DB.GOOGLE_ANALYTICS_RAW_DATA_DEST_SCHEMA',
        'GOOGLE_ANALYTICS_RAW_DATA_RESOURCES_PROVIDER'
    );
    
    Copy

GCP에 연결하는 데 필요한 Snowflake 오브젝트 만들기

  1. 서비스 계정에 대한 보안 통합을 만듭니다.

    먼저 서비스 계정 키 파일이 필요합니다. 만드는 방법에 대한 자세한 내용은 Google Cloud Platform(GCP)에 대한 서비스 계정 인증 구성하기 섹션을 참조하십시오.

    CREATE SECURITY INTEGRATION
    google_analytics_raw_data_security_integration
    type = api_authentication
    auth_type = oauth2
    oauth_client_id = '<value of client_id from the JSON key file>'
    oauth_token_endpoint = 'https://oauth2.googleapis.com/token'
    enabled = true
    oauth_allowed_scopes = (
        'https://www.googleapis.com/auth/bigquery.readonly',
        'https://www.googleapis.com/auth/cloudplatformprojects.readonly'
    )
    oauth_assertion_issuer = '<value of client_email from the JSON key file>'
    oauth_grant='JWT_BEARER'
    oauth_client_secret = '<value of private_key from the JSON key file with no delimiters or newlines>';
    
    Copy
  2. 보안 통합을 사용하여 시크릿을 만듭니다.

    CREATE DATABASE google_analytics_raw_data_connector_secret;
    CREATE SCHEMA google_analytics_raw_data_connector_secret.oauth;
    
    USE SCHEMA google_analytics_raw_data_connector_secret.oauth;
    
    CREATE OR REPLACE SECRET google_analytics_raw_data
    type = oauth2
    api_authentication = google_analytics_raw_data_security_integration;
    
    Copy
  3. 커넥터 애플리케이션에 시크릿 관련 권한을 제공합니다.

    GRANT USAGE ON DATABASE google_analytics_raw_data_connector_secret TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    GRANT USAGE ON SCHEMA google_analytics_raw_data_connector_secret.oauth TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    GRANT READ ON SECRET google_analytics_raw_data_connector_secret.oauth.google_analytics_raw_data TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    
    Copy
  4. 외부 액세스를 구성합니다.

    allowed_authentication_secrets 에 전달된 시크릿 경로는 대/소문자를 구분한다는 점에 유의하십시오.

    USE SCHEMA google_analytics_raw_data_connector_secret.oauth;
    
    CREATE NETWORK RULE
    google_analytics_raw_data_allow_rule
    mode = EGRESS
    type = HOST_PORT
    value_list = (
        'www.googleapis.com',
        'bigquery.googleapis.com',
        'bigquerystorage.googleapis.com',
        'cloudresourcemanager.googleapis.com',
        'oauth2.googleapis.com'
    );
    
    CREATE EXTERNAL ACCESS INTEGRATION
    google_analytics_raw_data_external_access_integration
    allowed_network_rules = (google_analytics_raw_data_allow_rule)
    allowed_authentication_secrets = ('GOOGLE_ANALYTICS_RAW_DATA_CONNECTOR_SECRET.OAUTH.GOOGLE_ANALYTICS_RAW_DATA')
    enabled = true;
    
    GRANT USAGE ON INTEGRATION google_analytics_raw_data_external_access_integration TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    
    Copy

GCP와의 연결 구성하기

  1. CONFIGURE_CONNECTION 프로시저를 호출합니다.

    외부 액세스 통합의 이름, 시크릿의 전체 경로, 보안 통합의 이름을 전달합니다. 이러한 값은 대/소문자를 구분합니다.

    CALL CONFIGURE_CONNECTION(
        'GOOGLE_ANALYTICS_RAW_DATA_EXTERNAL_ACCESS_INTEGRATION',
        'GOOGLE_ANALYTICS_RAW_DATA_CONNECTOR_SECRET.OAUTH.GOOGLE_ANALYTICS_RAW_DATA',
        'GOOGLE_ANALYTICS_RAW_DATA_SECURITY_INTEGRATION'
    );
    
    Copy
  2. 연결 상태를 확인합니다.

    CALL CONNECTION_STATUS();
    
    Copy

    오류가 없으면 Snowflake Connector for Google Analytics Raw Data 의 데이터 수집 설정하기 에 따라 Google Analytics 속성을 활성화할 수 있습니다.