SQL を使用した Snowflake Connector for Google Analytics Raw Data の構成¶
Snowflake connector for Google Analytics Raw Dataは、 コネクタ規約 に従うものとします。
このトピックでは、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;
ウェアハウス、データ所有者ロール、保存先データベースの準備¶
指定したウェアハウスでの使用権限とタスク実行権限をコネクタアプリケーションに付与します。
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;
データ所有者ロールを作成します。
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;
宛先データベースとスキーマを作成します。
特にコネクタを再インストールする場合は、既存のインストール先データベースとスキーマを使用することもできます。
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;
宛先データベースの必要なグラントをアプリケーションに追加します。
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;
(オプション)宛先スキーマのテーブルとビューの所有権の譲渡
コネクタが再インストールされ、以前の宛先スキーマが再利用される場合、宛先スキーマのすべてのテーブルとビューの所有権をコネクタに譲渡する必要があります。スキーマ内のオブジェクトに対する許可の付与を管理し、インジェストされたテーブルのスキーマが変更されたときにフラット化されたビューを再作成するためには、コネクタに所有者権限が必要です。
所有権を譲渡するには、
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION
関数を呼び出します。USE ROLE accountadmin; CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<connector_app>, true, <destination_database>, <destination_schema>);
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION
は、Snowflakeが提供するシステム関数で、指定したデータベースやスキーマのテーブルやビューの所有権をアプリケーションに譲渡することができます。譲渡されるのは、通常のテーブルと通常のビューの所有権のみです。たとえば、動的テーブル、外部テーブル、マテリアライズドビューなどの所有権は譲渡されません。この関数の署名は以下のとおりです。
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<to_app>, <should_copy_grants>, <from_database>, <from_schema>)
条件:
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');
必要であれば、
DATA_READER
アプリケーションロールを以前データを所有していたロールに付与し、データを使用する既存のパイプラインの中断を防ぎます。GRANT APPLICATION ROLE <connector_app>.DATA_READER TO ROLE <previous_data_owner_role>;
PROVISION_CONNECTOR
プロシージャが実行されるまでは、DATA_READER
アプリケーションロールには宛先スキーマのテーブルとビューに対して権限の付与がないことに注意してください。
コネクタの用意¶
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' );
GCP に接続するために必要なSnowflakeオブジェクトを作成します。¶
サービスアカウントのセキュリティ統合を作成します。
まず、サービスアカウントのキーファイルが必要です。作成方法の詳細については 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>';
セキュリティ統合を使用してシークレットを作成します。
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;
コネクタアプリケーションにシークレット関連のアクセス権を付与します。
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;
外部アクセスを構成します。
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;
GCP との接続の構成¶
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' );
接続ステータスを確認します。
CALL CONNECTION_STATUS();
エラーがなければ、 Snowflake Connector for Google Analytics Raw Data のデータインジェスチョンの設定 に従ってGoogleアナリティクスのプロパティを有効にします。