目次

Search

  1. はじめに
  2. 一括取り込みデータベース

一括取り込みデータベース

一括取り込みデータベース

Snowflakeターゲット

Snowflakeターゲット

ターゲットの準備

ターゲットの準備は、Snowflakeターゲットテーブルへのデータの高パフォーマンスストリーミングにSuperpipe機能を使用するか、中間ステージファイルにデータを書き込むかによって異なります。
Superpipeを使用
Superpipe機能を使用する場合は、次の手順を実行します。
  1. 一括取り込みユーザーを作成します。次のSQL文を使用します。
    create user INFACMI_User password 'Xxxx@xxx';
  2. 新しいユーザーロールを作成し、一括取り込みユーザーに付与します。以下のSQL文を使用します。
    create role INFACMI_superpipe; grant role INFACMI_superpipe to user INFACMI_User;
  3. Snowflake仮想ウェアハウスの使用権限を新しいロールに付与します。次のSQL文を使用します。
    grant usage on warehouse
    warehouse_name
    to role INFACMI_superpipe;
  4. Snowflakeデータベースの使用権限を新しいロールに付与します。次のSQL文を使用します。
    grant usage on database INFACMI_DB1 to role INFACMI_superpipe;
  5. 新しいスキーマを作成します。以下のSQL文を使用します。
    use database INFACMI_DB1; create schema sh_superpipe;
  6. 新しいSnowflakeスキーマに対するcreate stream、create view、およびcreate table特権を新しいロールに付与します。次のSQL文を使用します。
    grant create stream, create view, create table, usage on schema INFACMI_DB1.sh_superpipe to role INFACMI_superpipe;
  7. 新しく作成されたユーザーのデフォルトのロールを設定します。次のSQL文を使用します。
    alter user INFACMI_User set default_role=INFACMI_superpipe;
  8. ターゲットへのSnowflake Data Cloud接続を定義します。認証方法として
    [KeyPair]
    オプションを使用する必要があります。「コネクタと接続」>「Snowflake Data Cloud接続プロパティ」を参照してください。
  9. OpenSSLバージョン3.x.xとPBE-SHA1-2DESまたはPBE-SHA1-3DES暗号を使用してプライベートキーを生成します。次のopensslコマンドを使用し、プライベートキーを生成してフォーマットします。
    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -v1 PBE-SHA1-3DES -out rsa_key.p8
  10. パブリックキーを生成します。次のopensslコマンドを使用し、-inオプションで暗号化されたプライベートキーを含むファイル(rsa_key.p8)を参照します。
    openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
  11. Snowflakeで、パブリックキーをSnowflakeユーザーに割り当てます。次のSQLコマンドを使用します。
    alter user INFACMI_User set rsa_public_key='key_value’;
次の手順
: 取り込みタスクを作成するときに、タスクウィザードの
[ターゲット]
ページで
[Superpipe]
オプションを選択します。必要に応じて、変更データ行がマージされてSnowflakeターゲットテーブルに適用される頻度を制御する
[マージ頻度]
値を指定することもできます。
Superpipeを使用しない
SnowflakeターゲットにSuperpipe機能を使用しない場合は、ACCOUNTADMINユーザーとして次の手順を実行します。
  1. 一括取り込みユーザーを作成します。次のSQL文のいずれかを使用します。
    create user INFACMI_User password 'Xxxx@xxx';
    または
    replace user INFACMI_User password 'Xxxx@xxx';
  2. 新しいロールを作成し、そのロールを一括取り込みユーザーに付与します。以下のSQL文を使用します。
    create role INFA_CMI_Role; grant role INFA_CMI_Role to user INFACMI_User;
  3. Snowflake仮想ウェアハウスの使用権限を新しいロールに付与します。次のSQL文を使用します。
    grant usage on warehouse CMIWH to role INFA_CMI_Role;
  4. Snowflakeデータベースの使用権限を新しいロールに付与します。次のSQL文を使用します。
    grant usage, CREATE SCHEMA on database CMIDB to role INFA_CMI_Role;
  5. 新しく作成されたユーザーのデフォルトのロールを設定します。次のSQL文を使用します。
    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 Data Cloudターゲットにデータを移動する代替方法を提供しています。
    • 取り込みタスクを定義するときに
      [Superpipe]
      オプションを選択した場合、取り込みジョブはSnowpipe Streaming APIを使用して、短い待ち時間でデータ行をターゲットテーブルに直接ストリーミングします。この方法は、すべてのロードタイプで使用できます。
      [KeyPair]
      認証を使用する必要があります。
    • Superpipeを使用しない場合、取り込みジョブはまず、タスク定義で指定した名前を持つ内部ステージのデータファイルにデータを書き込みます。
  • Superpipeを使用せず、取り込みジョブのターゲットプロパティで指定した内部ステージが存在しない場合、一括取り込みデータベースは、次のSQLコマンドを実行してステージを自動的に作成します。
    Create stage if not exists "Schema"."Stage_Bucket"”
    コマンドを正常に実行するには、次の特権をユーザーロールに付与する必要があります。
    GRANT CREATE STAGE ON SCHEMA "Schema" TO ROLE <
    your_role
    >;
  • Snowflake Data Cloudターゲットの接続を定義するときは、
    [JDBC URLの追加パラメータ]
    フィールドに
    database=
    target_database_name
    と設定する必要があります。それ以外の場合は、
    データベース統合
    タスクウィザードでターゲットを定義しようとすると、スキーマのリストを取得できないことを示すエラーメッセージが表示されます。
  • [KeyPair]
    オプションを認証方法として使用してSnowflakeターゲットの接続を定義し、OpenSSL 3.x.xバージョンでプライベートキーを生成する場合は、プライベートキーの生成時に
    PBE-SHA1-2DES
    または
    PBE-SHA1-3DES
    の暗号を使用します。以下のコマンドのいずれかを実行します。
    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -v1 PBE-SHA1-3DES -out rsa_key.p8
    または
    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -v1 PBE-SHA1-2DES -out rsa_key.p8
    PBE-SHA1-2DES
    暗号または
    PBE-SHA1-3DES
    暗号なしで汎用コマンドを使用すると、
    データベース統合
    タスクウィザードのターゲット定義手順でターゲットスキーマを取得中に、無効またはサポート対象外のプライベートキーに関するエラーメッセージが表示されることがあります。
    OpenSSL 1.1.1を使用してプライベートキーを生成すると、エラーメッセージは表示されません。
  • データベース統合
    増分ロードジョブと、初期ロードジョブと増分ロードジョブの組み合わせにより、ターゲット上にINFORMATICA_CDC_RECOVERYという名前のリカバリテーブルが生成され、障害後に再開されたジョブが以前に処理されたデータを再度プロパゲートするのを防ぐ内部サービス情報が格納されます。このリカバリテーブルは、ターゲットテーブルと同じスキーマで生成されます。
  • Snowflakeターゲットの場合、NUMBERフィールドのスケールを変更したり、既存のフィールドのデータ型を別のデータ型に変更したりすることはできません。Snowflakeではこれらの操作がサポートされていないためです。