を使用した Snowflake データウェアハウスへの接続 AWS Schema Conversion Tool - AWS Schema Conversion Tool

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

を使用した Snowflake データウェアハウスへの接続 AWS Schema Conversion Tool

AWS SCT を使用して、スキーマ、コードオブジェクト、アプリケーションコードを Snowflake から Amazon Redshift に変換できます。

ソースデータベースとしての Snowflake の権限

権限を持つロールを作成し、SECURITYADMIN ロールと SECURITYADMIN セッションコンテキストを使用して、このロールにユーザーの名前を付与することができます。

次の例では、最小限の権限を作成し、min_privs ユーザーに付与しています。

create role role_name; grant role role_name to role sysadmin; grant usage on database db_name to role role_name; grant usage on schema db_name.schema_name to role role_name; grant usage on warehouse datawarehouse_name to role role_name; grant monitor on database db_name to role role_name; grant monitor on warehouse datawarehouse_name to role role_name; grant select on all tables in schema db_name.schema_name to role role_name; grant select on future tables in schema db_name.schema_name to role role_name; grant select on all views in schema db_name.schema_name to role role_name; grant select on future views in schema db_name.schema_name to role role_name; grant select on all external tables in schema db_name.schema_name to role role_name; grant select on future external tables in schema db_name.schema_name to role role_name; grant usage on all sequences in schema db_name.schema_name to role role_name; grant usage on future sequences in schema db_name.schema_name to role role_name; grant usage on all functions in schema db_name.schema_name to role role_name; grant usage on future functions in schema db_name.schema_name to role role_name; grant usage on all procedures in schema db_name.schema_name to role role_name; grant usage on future procedures in schema db_name.schema_name to role role_name; create user min_privs password='real_user_password' DEFAULT_ROLE = role_name DEFAULT_WAREHOUSE = 'datawarehouse_name'; grant role role_name to user min_privs;

上記の例で、次のプレースホルダを置き換えます。

  • 置換 role_name 読み取り専用権限を持つロールの名前。

  • db_name をソースデータベースの名前に置き換えます。

  • schema_name をソーススキーマの名前に置き換えます。

  • 置換 データウェアハウス名 必要なデータウェアハウスの名前。

  • min_privs を最小限の権限を持つユーザーの名前に置き換えます。

DEFAULT_ROLE および DEFAULT_WAREHOUSE パラメータでは大文字と小文字が区別されます。

Amazon S3 へのセキュアアクセスの設定

Amazon S3 バケットにセキュリティおよびアクセス管理ポリシーを設けることで、Snowflake は S3 バケットにアクセスし、データの読み取りおよび書き込みができるようになります。Snowflake STORAGE INTEGRATION オブジェクトタイプを使用して、プライベート Amazon S3 バケットへの安全なアクセスを設定できます。Snowflake ストレージ統合オブジェクトは、認証責任を Snowflake の ID およびアクセス管理エンティティに委任します。

詳細については、Snowflake ドキュメントにある Amazon S3 にアクセスするための Snowflake ストレージ統合の設定を参照してください。

ソースとしての Snowflake への接続

以下の手順を使用して、 ソースデータベースを AWS Schema Conversion Toolに接続します。

Snowflake ソースデータベースに接続するには
  1. で AWS Schema Conversion Tool、ソースの追加 を選択します。

  2. [Snowflake] を選択し、その後 [Next] (次へ) を選択します。

    [Add source] (ソースの追加) ダイアログボックスが表示されます。

  3. [接続名] にデータベースの名前を入力します。この名前が AWS SCT の左側のパネルのツリーに表示されます。

  4. からデータベース認証情報を使用するか AWS Secrets Manager 、手動で入力します。

    • Secrets Manager のデータベース認証情報を使用するには、以下の手順に従ってください。

      1. [AWS シークレット] で、シークレットの名前を選択します。

      2. [入力] を選択すると、Secrets Manager のデータベース接続ダイアログボックスにすべての値が自動的に入力されます。

      Secrets Manager のデータベース認証情報を使用する方法については、「AWS Secrets Manager での の設定 AWS Schema Conversion Tool」を参照してください。

    • Snowflake ソースデータウェアハウス接続情報を手動で入力するには、以下の手順に従います。

      パラメータ アクション
      [Server name] (サーバー名)

      ソースデータベースサーバーのドメインネームシステム (DNS) 名または IP アドレスを入力します。

      Server port

      ソースデータベースサーバーへの接続に使用するポートを入力します。

      データベース

      Snowflake データベースの名前を入力します。

      User name (ユーザー名) と [Password] (パスワード)

      データベース認証情報を入力して、ソースデータベースサーバーに接続します。

      AWS SCT は、明示的にリクエストした場合にのみ、パスワードを暗号化された形式で保存します。

      を使用する SSL

      Secure Sockets Layer (SSL) を使用してデータベースに接続する場合は、このオプションを選択します。必要に応じて、 SSLタブに次の追加情報を入力します。

      • [プライベートキーパス]:プライベートキーの場所。

      • [パスフレーズ]:プライベートキーのパスフレーズ。

      Snowflake SSLのサポートの詳細については、「接続のセキュリティオプションを設定する」を参照してください。

      Store Password

      AWS SCT は、SSL証明書とデータベースパスワードを保存するための安全なボールトを作成します。このオプションを設定すると、データベースパスワードを保存できます。これにより、パスワードを入力しなくてもデータベースにすばやく接続できるようになります。

      Snowflake ドライバパス

      ソースデータベースへの接続に使用するドライバのパスを入力します。詳細については、「のJDBCドライバーのインストール AWS Schema Conversion Tool」を参照してください。

      ドライバパスをグローバルプロジェクト設定に保存する場合、ドライバパスは接続ダイアログボックスに表示されません。詳細については、「グローバル設定でのドライバパスの保存」を参照してください。

  5. 接続のテストを選択して、 がソースデータベースに接続 AWS SCT できることを確認します。

  6. [Connect] (接続) を選択して、ソースデータベースに接続します。

Snowflake をソースとして使用する場合の制限

のソースとして Snowflake を使用する場合の制限事項は次のとおりです AWS SCT。

  • オブジェクト識別子は、オブジェクトタイプと親オブジェクトのコンテキスト内で一意である必要があります。

    データベース

    スキーマ識別子は、データベース内で一意である必要があります。

    スキーマ

    テーブルやビューなどのオブジェクト識別子は、スキーマ内で一意である必要があります。

    テーブル/ビュー

    列識別子は、テーブル内で一意である必要があります。

  • 大規模および xlarge クラスターノードタイプのテーブルの最大数は 9,900 です。8xlarge クラスターノードタイプのテーブルの最大数は 100,000 です。制限には、ユーザー定義の一時テーブルと、クエリの処理またはシステムメンテナンス中に Amazon Redshift によって作成された一時テーブルの両方が含まれます。詳細については、Amazon Redshift クラスター管理ガイドAmazon Redshift クォータを参照してください。

  • ストアドプロシージャの場合、入出力引数の最大数は 32 です。

Snowflake のソースデータ型

次に、 の使用時にサポートされる Snowflake ソースデータ型 AWS SCT と、Amazon Redshift ターゲットへのデフォルトのマッピングを示します。

Snowflake のデータ型 Amazon Redshift のデータ型

NUMBER

NUMERIC(38)

NUMBER(p)

p が =< 4 の場合、 SMALLINT

p が => 5 で =< 9 の場合、 INTEGER

p が => 10 で =< 18 の場合、 BIGINT

p が => 19 の場合、NUMERIC(p)

NUMBER(p、0)

p が =< 4 の場合、 SMALLINT

p が => 5 で =< 9 の場合、 INTEGER

p が => 10 で =< 18 の場合、 BIGINT

p が => 19 の場合: NUMERIC(p,0)

NUMBER(p、s)

If p is => 1 and =< 38, and if s is => 1 and =< 37, then

NUMERIC(p,s)

FLOAT

FLOAT

TEXT

16,777,216 バイトまでの Unicode 文字。1 文字あたり最大 4 バイト。

VARCHAR(MAX)

TEXT(p)

65,535 バイトまでの Unicode 文字。1 文字あたり最大 4 バイト。

p が =< 65,535 の場合、VARCHAR(p)

TEXT(p)

16,777,216 バイトまでの Unicode 文字。1 文字あたり最大 4 バイト。

p が => 65,535 で =< 16,777,216 の場合、 VARCHAR(MAX)

BINARY

8 388,608 バイトまでのシングルバイト文字、1 文字あたり 1 バイト。

VARCHAR(MAX)

BINARY(p)

65,535 バイトまでのシングルバイト文字、1 文字あたり 1 バイト。

VARCHAR(p)

BINARY(p)

8 388,608 バイトまでのシングルバイト文字、1 文字あたり 1 バイト。

VARCHAR(MAX)

BOOLEAN

BOOLEAN

DATE

DATE

TIME

00:00:00 から 23:59:59.999999999 の間の時間値。

VARCHAR(18)

TIME(f)

00:00:00 から 23:59:59.9(f) の間の時間値。

VARCHAR(n) – 9 + dt-attr-1

TIMESTAMP_NTZ

TIMESTAMP

TIMESTAMP_TZ

TIMESTAMPTZ

Snowflake から Amazon Redshift への変換設定

Snowflake から Amazon Redshift への変換設定を編集するには、「」で「設定」を選択し AWS SCT、「変換設定」を選択します。上部のリストから Snowflake を選択し、Snowflake – Amazon Redshift を選択します。Snowflake から Amazon Redshift への変換に使用できるすべての設定 AWS SCT を表示します。

の Snowflake から Amazon Redshift への変換設定 AWS SCT には、以下のオプションが含まれています。

  • 変換されたコード内のアクション項目に関するコメントの数を制限する。

    選択した重要度以上のアクションアイテムの変換されたコードにコメントを追加する で、アクションアイテムの重要度を選択します。選択した重要度以上のアクションアイテムの変換されたコードにコメント AWS SCT を追加します。

    たとえば、変換したコード内のコメントの数を最小限に抑えるには、[エラーのみ] を選択します。変換したコードのすべてのアクション項目にコメントを含めるには、[すべてのメッセージ] を選択します。

  • ターゲット Amazon Redshift クラスターに適用 AWS SCT できるテーブルの最大数を設定するには。

    ターゲット Amazon Redshift クラスター のテーブルの最大数で、Amazon Redshift クラスターに適用 AWS SCT できるテーブルの数を選択します。

    Amazon Redshift には、クラスターノードタイプの使用を制限するクォータがあります。Auto を選択した場合、 AWS SCT はノードタイプに応じて、ターゲット Amazon Redshift クラスターに適用するテーブルの数を決定します。オプションで、値を手動で選択します。詳細については、「Amazon Redshift 管理ガイド」の「Amazon Redshift のクォータと制限」を参照してください。

    AWS SCT は、Amazon Redshift クラスターが保存できる数よりも多い場合でも、すべてのソーステーブルを変換します。 は変換 AWS SCT されたコードをプロジェクトに保存し、ターゲットデータベースに適用しません。変換したコードを適用したときにテーブルの Amazon Redshift クラスターのクォータに達すると、 AWS SCT に警告メッセージが表示されます。また、テーブル数が制限に達するまで、 はターゲット Amazon Redshift クラスターにテーブル AWS SCT を適用します。

  • Amazon Redshift テーブルの列に圧縮を適用します。そのためには、[圧縮エンコードを使用] を選択します。

    AWS SCT は、デフォルトの Amazon Redshift アルゴリズムを使用して、圧縮エンコーディングを列に自動的に割り当てます。詳細については、『Amazon Redshift データベースデベロッパーガイド』の「圧縮エンコード」を参照してください。

    デフォルトでは、Amazon Redshift はソートキーと分散キーとして定義されている列に圧縮を適用しません。この動作を変更したり、これらの列に圧縮を適用したりできます。これを行うには、KEY列 の圧縮エンコードを使用する を選択します。このオプションは、[圧縮エンコードを使用] オプションを選択した場合にのみ選択できます。

スノーフレークから Amazon Redshift への変換最適化設定

Snowflake から Amazon Redshift への変換最適化設定を編集するには、「」で「設定」を選択し AWS SCT、「変換設定」を選択します。上のリストから [Snowflake] を選択し、次に [Snowflake – Amazon Redshift] を選択します。左側のペインで、最適化戦略 を選択します。Snowflake から Amazon Redshift への変換の最適化設定 AWS SCT を表示します。

の Snowflake から Amazon Redshift への変換最適化設定 AWS SCT には、以下のオプションが含まれています。

  • 自動テーブル最適化を使用するには。そのためには、[Amazon Redshift の自動テーブルチューニングを使用する] を選択します。

    自動テーブル最適化は、テーブルの設計を自動的に最適化する Amazon Redshift の自己調整プロセスです。詳細については、『Amazon Redshift データベース開発者ガイド』の「自動テーブル最適化の操作」を参照してください。

    自動テーブル最適化のみを利用するには、[初期キー選択戦略] で [なし] を選択します。

  • 戦略を使用してソートキーと分散キーを選択するには。

    Amazon Redshift メタデータ、統計情報、またはこれらのオプションの両方を使用して、ソートキーと配布キーを選択できます。[最適化戦略] タブの [初期キー選択戦略] では、以下のいずれかのオプションを選択します。

    • メタデータを使用し、統計情報は無視する

    • メタデータを無視し、統計情報を使用する

    • メタデータと統計情報を使用する

    選択したオプションに応じて、最適化戦略を選択できます。次に、各戦略について、値 (0~100) を入力します。これらの値は各戦略の重みを定義します。これらの重み値を使用して、 AWS SCT は各ルールがディストリビューションキーとソートキーの選択にどのように影響するかを定義します。デフォルト値は、 AWS 移行のベストプラクティスに基づいています。

    [小さいテーブルを検索] 戦略の小さいテーブルのサイズを定義できます。最小テーブル行数最大テーブル行数 では、テーブル内の最小行数と最大行数を入力して、それを小さなテーブルとして定義します。 AWS SCT はALL分散スタイルを小さなテーブルに適用します。この場合は、テーブル全体のコピーがすべてのノードに分散されます。

  • 戦略の詳細を設定するには。

    各最適化戦略の重みを定義することに加えて、最適化設定を構成できます。そのためには、[変換の最適化] を選択します。

    • [ソートキー列の制限] には、ソートキーの列の最大数を入力します。

    • 歪んだしきい値 には、列の歪んだ値の割合 (0~100) を入力します。分散キーの候補リストから、歪んだ値がしきい値より大きい列 AWS SCT を除外します。 は、最も一般的な値の発生回数とレコードの合計数の比率として、列の歪んだ値 AWS SCT を定義します。

    • [クエリ履歴テーブルの上位 N 件のクエリ] には、分析対象として最も頻繁に使用されるクエリの数 (1 ~ 100) を入力します。

    • [統計ユーザーを選択] では、クエリ統計を分析したいデータベースユーザーを選択します。

    また、[最適化戦略」タブでは、[小さいテーブルを検索] 戦略の小さいテーブルのサイズを定義できます。最小テーブル行数最大テーブル行数 には、テーブル内の最小行数と最大行数を入力して、それを小さなテーブルと見なします。 AWS SCT はALL分散スタイルを小さなテーブルに適用します。この場合は、テーブル全体のコピーがすべてのノードに分散されます。