データベース取り込みとレプリケーション > データベース取り込みとレプリケーションターゲット - 準備と使用方法 > Snowflakeターゲット
  

Snowflakeターゲット

ターゲットの準備

ターゲットの準備は、Snowflakeターゲットテーブルへのデータの高パフォーマンスストリーミングにSuperpipe機能を使用するか、中間ステージファイルにデータを書き込むかによって異なります。
Superpipeを使用
Superpipe機能を使用する場合は、次の手順を実行します。
  1. 1データ取り込みおよびレプリケーションユーザーを作成します。次のSQL文を使用します。
  2. create user INFACMI_User password 'Xxxx@xxx';
  3. 2新しいユーザーロールを作成し、データ取り込みおよびレプリケーションユーザーに付与します。以下のSQL文を使用します。
  4. create role INFACMI_superpipe;
    grant role INFACMI_superpipe to user INFACMI_User;
  5. 3Snowflake仮想ウェアハウスの使用権限を新しいロールに付与します。次のSQL文を使用します。
  6. grant usage on warehouse warehouse_name to role INFACMI_superpipe;
  7. 4Snowflakeデータベースの使用権限を新しいロールに付与します。次のSQL文を使用します。
  8. grant usage on database INFACMI_DB1 to role INFACMI_superpipe;
  9. 5新しいスキーマを作成します。以下のSQL文を使用します。
  10. use database INFACMI_DB1;
    create schema sh_superpipe;
  11. 6新しいSnowflakeスキーマに対するcreate stream、create view、およびcreate table特権を新しいロールに付与します。次のSQL文を使用します。
  12. grant create stream, create view, create table, usage on schema INFACMI_DB1.sh_superpipe to role INFACMI_superpipe;
  13. 7新しく作成されたユーザーのデフォルトのロールを設定します。次のSQL文を使用します。
  14. alter user INFACMI_User set default_role=INFACMI_superpipe;
  15. 8ターゲットへのSnowflake Data Cloud接続を定義します。認証方法として[KeyPair]オプションを使用する必要があります。「コネクタと接続」>「Snowflake Data Cloud接続プロパティ」を参照してください。
  16. 9OpenSSLバージョン3.x.xと次のいずれかの暗号を使用してプライベートキーを生成します。
  17. 次のopensslコマンドを使用し、プライベートキーを生成してフォーマットします。
  18. openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -v1 AES-256-CBC -out rsa_key.p8
  19. 10パブリックキーを生成します。次のopensslコマンドを使用し、-inオプションで暗号化されたプライベートキーを含むファイル(rsa_key.p8)を参照します。
  20. openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
  21. 11Snowflakeで、パブリックキーをSnowflakeユーザーに割り当てます。次のSQLコマンドを使用します。
  22. alter user INFACMI_User set rsa_public_key='key_value’;
次の手順: 取り込みおよびレプリケーションタスクを作成するときに、タスクウィザードの[ターゲット]ページで[Superpipe]オプションを選択します。必要に応じて、変更データ行がマージされてSnowflakeターゲットテーブルに適用される頻度を制御する[マージ頻度]値を指定することもできます。
Superpipeを使用しない
SnowflakeターゲットにSuperpipe機能を使用しない場合は、ACCOUNTADMINユーザーとして次の手順を実行します。
  1. 1データ取り込みおよびレプリケーションユーザーを作成します。次のSQL文のいずれかを使用します。
  2. create user INFACMI_User password 'Xxxx@xxx';
    または
    replace user INFACMI_User password 'Xxxx@xxx';
  3. 2新しいロールを作成し、そのロールをデータ取り込みおよびレプリケーションユーザーに付与します。以下のSQL文を使用します。
  4. create role INFA_CMI_Role;
    grant role INFA_CMI_Role to user INFACMI_User;
  5. 3Snowflake仮想ウェアハウスの使用権限を新しいロールに付与します。次のSQL文を使用します。
  6. grant usage on warehouse CMIWH to role INFA_CMI_Role;
  7. 4Snowflakeデータベースの使用権限を新しいロールに付与します。次のSQL文を使用します。
  8. grant usage, CREATE SCHEMA on database CMIDB to role INFA_CMI_Role;
  9. 5新しく作成されたユーザーのデフォルトのロールを設定します。次のSQL文を使用します。
  10. alter user INFACMI_User set default_role=INFA_CMI_Role;
また、INFACMI_Userとして新しいスキーマを作成します。
create schema CMISchema;
注:
ユーザーのデフォルトロールが取り込みおよびレプリケーションタスクに使用され、必要な権限がない場合、実行時に次のエラーが発行されます。
SQL compilation error: Object does not exist, or operation cannot be performed.
Snowflakeで管理されるIcebergテーブルの場合
Superpipeオプションを使用するかどうかに関係なく、データとメタデータを、Snowflakeテーブルではなく、外部クラウドストレージのSnowflakeで管理されるIcebergテーブルに保存することを選択できます。Icebergテーブルの使用を準備するには、次のタスクを実行します。

使用に関する考慮事項:

Snowflakeが管理するIcebergテーブルを使用した外部クラウドストレージへのデータの保存

データベース取り込みおよびレプリケーションジョブを有効にして、データとメタデータを、Snowflakeテーブルではなく、外部クラウドの場所にあるSnowflakeが管理するIcebergテーブルに保存できます。外部の場所は、Amazon S3、Google Cloud Storage、またはAzure Storageに指定できます。
オープン形式のデータの外部ストレージには、次の利点があります。
データベース取り込みおよびレプリケーションでは、Icebergテーブルの使用が有効になっている取り込みおよびレプリケーションタスクをデプロイすると、Snowflakeが管理するIcebergテーブルが自動的に作成されます。Icebergテーブルを手動で作成する必要はありません。
Snowflakeは、Icebergテーブルのメタデータとカタログを管理します。Snowflakeは、IDおよびアクセス管理(IAM)情報を保存する外部ボリュームを使用して、外部ストレージの場所に接続します。Snowflakeでは、事前に外部ボリュームを作成して構成しておく必要があります。詳細については、「Snowflakeターゲット」の「ターゲットの準備」を参照してください。
取り込みおよびレプリケーションタスクを設定する場合は、次のターゲットカスタムプロパティを指定して、Snowflakeが管理するIcebergテーブルを使用できるようにします。
取り込みおよびレプリケーションタスクでは、任意のロードタイプ、任意の適用モード、およびスキーマドリフトを使用できます。Superpipeオプションは許可されていますが、必須ではありません。
Icebergテーブルの使用には、次の制限事項が適用されます。

Snowflakeへのプライベート接続の設定

AWSまたはAzureプライベートリンクエンドポイントを使用してSnowflakeにアクセスできます。
AWSまたはAzureプライベートリンクの設定によって、Snowflakeへの接続がAWSまたはAzure内部ネットワークを使用して確立され、パブリックインターネットを介して行われないようにします。
プライベートAWSネットワーク経由でSnowflakeアカウントに接続するには、AWS Private Link and Snowflakeを参照してください。
プライベートAzureネットワーク経由でSnowflakeアカウントに接続するには、Azure Private Link and Snowflakeを参照してください。