翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
を使用した Teradata データウェアハウスへの接続 AWS Schema Conversion Tool
AWS SCT を使用して、スキーマ、コードオブジェクト、アプリケーションコードを Teradata から Amazon Redshift または Amazon Redshift に変換し、組み合わせて AWS Glue 使用できます。
ソースとしての Teradata の権限
ソースとして Teradata を使用するのに必要な権限を以下に示します。
-
SELECT ON DBC
-
SELECT オン SYSUDTLIB
-
SELECT オン SYSLIB
-
SELECT オン
<source_database>
-
CREATE PROCEDURE オン
<source_database>
前の例では、<source_database>
ソースデータベースの名前を持つ プレースホルダー。
AWS SCT には、ソースデータベースのすべてのプロシージャHELPPROCEDUREに対して を実行するCREATEPROCEDURE権限が必要です。この権限を使用してソース Teradata データベースに新しいオブジェクトを作成 AWS SCT しないでください。
ソースとしての Teradata への接続
以下の手順を使用して、Teradata ソースデータベースを AWS Schema Conversion Toolに接続します。
Teradata ソースデータベースに接続するには
-
で AWS Schema Conversion Tool、ソースの追加 を選択します。
-
[Teradata] を選択し、その後 [Next] (次へ) を選択します。
[Add source] (ソースの追加) ダイアログボックスが表示されます。
-
[接続名] にデータベースの名前を入力します。この名前が AWS SCT の左側のパネルのツリーに表示されます。
-
からデータベース認証情報を使用するか AWS Secrets Manager 、手動で入力します。
-
Secrets Manager のデータベース認証情報を使用するには、以下の手順に従ってください。
-
[AWS シークレット] で、シークレットの名前を選択します。
-
[入力] を選択すると、Secrets Manager のデータベース接続ダイアログボックスにすべての値が自動的に入力されます。
Secrets Manager のデータベース認証情報を使用する方法については、「AWS Secrets Manager での の設定 AWS Schema Conversion Tool」を参照してください。
-
-
Teradata ソースデータベースの接続情報を手動で入力するには、以下の手順に従ってください。
パラメータ アクション 接続名 データベースの名前を入力します。左側のパネルのツリーにこの名前 AWS SCT が表示されます。
[Server name] (サーバー名) ソースデータベースサーバーのドメインネームシステム (DNS) 名または IP アドレスを入力します。
Server port ソースデータベースサーバーへの接続に使用するポートを入力します。
データベース Teradata データベースの名前を入力します。
User name (ユーザー名) と [Password] (パスワード) データベース認証情報を入力して、ソースデータベースサーバーに接続します。
AWS SCT は、プロジェクト内のデータベースに接続する場合にのみ、パスワードを使用してソースデータベースに接続します。ソースデータベースのパスワードの漏洩を防ぐため、デフォルトで AWS SCT にパスワードは保存されません。 AWS SCT プロジェクトを閉じて再び開いた場合は、必要に応じて、ソースデータベースへの接続に使用するパスワードの入力を求められます。
Store Password AWS SCT は、SSL証明書とデータベースパスワードを保存するための安全なボールトを作成します。このオプションをオンにすると、データベースのパスワードが保存されるため、パスワードを入力しなくてもデータベースにすばやく接続できます。
[データの暗号化] データベースと交換するデータを暗号化する場合は、このオプションを選択します。このオプションを選択した場合、ポート番号 443 を使用して、 AWS SCT と Teradata データベース間で暗号化されたデータを転送します。
[Teradata ドライバーバス] ソースデータベースへの接続に使用するドライバのパスを入力します。詳細については、「のJDBCドライバーのインストール AWS Schema Conversion Tool」を参照してください。
ドライバパスをグローバルプロジェクト設定に保存する場合、ドライバパスは接続ダイアログボックスに表示されません。詳細については、「グローバル設定でのドライバパスの保存」を参照してください。
-
-
接続のテストを選択して、 がソースデータベースに接続 AWS SCT できることを確認します。
-
[Connect] (接続) を選択して、ソースデータベースに接続します。
Teradata ソースでのLDAP認証の使用
Windows で Microsoft Active Directory を実行する Teradata ユーザーの Lightweight Directory Access Protocol (LDAP) 認証を設定するには、次の手順を使用します。
以下の手順では、アクティブディレクトリドメインは test.local.com
です。Windows サーバーは DC
で、デフォルト設定で構成されています。以下のスクリプトは test_ldap
Active Directory を作成し、このアカウントはパスワード test_ldap
を使用します。
Windows で Microsoft Active Directory を実行する Teradata ユーザーのLDAP認証を設定するには
/opt/teradata/tdat/tdgss/site
ディレクトリで、ファイルTdgssUserConfigFile.xml
を編集します。LDAP セクションを次のように変更します。AuthorizationSupported="no" LdapServerName="DC.test.local.com" LdapServerPort="389" LdapServerRealm="test.local.com" LdapSystemFQDN="dc= test, dc= local, dc=com" LdapBaseFQDN="dc=test, dc=local, dc=com"
-
次のように設定を実行して変更を適用します。
#cd /opt/teradata/tdgss/bin #./run_tdgssconfig
次のコマンドを使用して設定をテストします。
# /opt/teradata/tdat/tdgss/14.10.03.01/bin/tdsbind -u test_ldap -w test_ldap
出力は以下のようになります。
LdapGroupBaseFQDN: dc=Test, dc=local, dc=com LdapUserBaseFQDN: dc=Test, dc=local, dc=com LdapSystemFQDN: dc= test, dc= local, dc=com LdapServerName: DC.test.local.com LdapServerPort: 389 LdapServerRealm: test.local.com LdapClientUseTls: no LdapClientTlsReqCert: never LdapClientMechanism: SASL/DIGEST-MD5 LdapServiceBindRequired: no LdapClientTlsCRLCheck: none LdapAllowUnsafeServerConnect: yes UseLdapConfig: no AuthorizationSupported: no FQDN: CN=test, CN=Users, DC=Anthem, DC=local, DC=com AuthUser: ldap://DC.test.local.com:389/CN=test1,CN=Users,DC=test,DC=local,DC=com DatabaseName: test Service: tdsbind
次のコマンドを使用して、TPA を再起動します。
#tpareset -f "use updated TDGSSCONFIG GDO"
次に示すように、Active Directory と同じユーザーを Teradata データベースに作成します。
CREATE USER test_ldap AS PERM=1000, PASSWORD=test_ldap; GRANT LOGON ON ALL TO test WITH NULL PASSWORD;
LDAP ユーザーの Active Directory でユーザーパスワードを変更する場合は、Teradata への LDAPモードでの接続中にこの新しいパスワードを指定します。DEFAULT モードでは、LDAPユーザー名とパスワードを使用して Teradata に接続します。
ソース Teradata データウェアハウスでの統計収集の設定
ソース Teradata データウェアハウスを変換するには、 は統計 AWS SCT を使用して変換された Amazon Redshift データウェアハウスを最適化します。 AWS SCT で統計を収集することも、統計ファイルをアップロードすることもできます。詳細については、「統計の収集またはアップロード」を参照してください。
AWS SCT がデータウェアハウスから統計を収集できるようにするには、次の前提条件タスクを完了します。
Teradata データウェアハウスから統計を収集するには
-
次のクエリを実行して、データウェアハウス内のすべてのテーブルの統計情報を収集します。
collect summary statistics on
table_name
;前の例では、
table_name
ソーステーブルの名前を入力します。変換するテーブルごとにこのクエリを繰り返します。 -
次のクエリを実行して、データウェアハウスの変換に使用するユーザーのアカウント文字列を決定します。
select * from dbc.accountinfo where username ='
user_name
' -
前の例のアカウント文字列を使用して、特定のユーザーのクエリロギングを有効にします。
BEGIN QUERY LOGGING WITH OBJECTS, SQL ON ALL ACCOUNT=('$M$BUSI$S$D$H');
または、すべてのデータベースユーザーのクエリログを有効にします。
BEGIN QUERY LOGGING WITH SQL, OBJECTS LIMIT SQLTEXT=0 ON ALL;
データウェアハウス統計の収集が完了したら、クエリログをオフにします。以下のコード例を使用してこれを行うことができます。
end query logging with explain, objects, sql on all account=(' $M$BUSI$S$D$H');
ソース Teradata データウェアハウスからオフラインモードで統計を収集します。
Teradata データウェアハウスで統計収集を設定したら、 AWS SCT プロジェクトの統計を収集できます。または、ベーシックテラデータクエリ (BTEQ) スクリプトを使用して、オフラインモードで統計を収集することもできます。その後、収集した統計を含むファイルを AWS SCT プロジェクトにアップロードできます。詳細については、「統計の収集またはアップロード」を参照してください。
Teradata データウェアハウスからオフラインモードで統計情報を収集するには
-
次の内容で、
off-line_stats.bteq
スクリプトを作成します。.OS IF EXIST column-stats-tera.csv del /F column-stats-tera.csv .OS IF EXIST table-stats-tera.csv del /F table-stats-tera.csv .OS IF EXIST column-skew-script-tera.csv del /F column-skew-script-tera.csv .OS IF EXIST column-skew-stats-tera.csv del /F column-skew-stats-tera.csv .OS IF EXIST query-stats-tera.csv del /F query-stats-tera.csv .LOGON your_teradata_server/your_login, your_password .EXPORT REPORT FILE = table-stats-tera.csv .SET TITLEDASHES OFF .SET WIDTH 10000 SELECT '"' || OREPLACE(COALESCE(c.DatabaseName, ''), '"', '""') || '";' || '"' || OREPLACE(COALESCE(c.TableName, ''), '"', '""') || '";' || '"' || TRIM(COALESCE(s.reference_count, '0')) || '";' || '"' || TRIM(COALESCE(CAST(p.RowCount AS BIGINT), '0')) || '";' || '"' || CAST(CAST(w.size_in_mb AS DECIMAL (38,1) FORMAT 'Z9.9') AS VARCHAR(38)) || '";' || '"' || TRIM(COALESCE(r.stat_fk_dep_count, '0')) || '";' || '"' || CAST(CAST(current_timestamp(0) as timestamp(0) format 'YYYY-MM-DDBHH:MI:SS') as VARCHAR(19)) || '"' (TITLE '"database_name";"table_name";"reference_count";"row_count";"size_in_mb";"stat_fk_dep_count";"current_ts"') FROM (select databasename, tablename from DBC.tablesv where tablekind IN ('T','O') and databasename = 'your_database_name' ) c left join (select DatabaseName, TableName, max(RowCount) RowCount from dbc.tableStatsv group by 1,2)p on p.databasename = c.databasename and p.tablename = c.tablename left join (SELECT r.ChildDB as DatabaseName, r.ChildTable as TableName, COUNT(DISTINCT r.ParentTable) reference_count FROM DBC.All_RI_ChildrenV r GROUP BY r.ChildDB, r.ChildTable) s on s.databasename = c.databasename and s.tablename = c.tablename left join (SELECT r.ParentDB as DatabaseName, r.ParentTable as TableName, COUNT(DISTINCT r.ChildTable) stat_fk_dep_count FROM DBC.All_RI_ParentsV r GROUP BY r.ParentDB, r.ParentTable) r on r.databasename = c.databasename and r.tablename = c.tablename left join (select databasename, tablename, sum(currentperm)/1024/1024 as size_in_mb from dbc.TableSizeV group by 1,2) w on w.databasename = c.databasename and w.tablename = c.tablename WHERE COALESCE(r.stat_fk_dep_count,0) + COALESCE(CAST(p.RowCount AS BIGINT),0) + COALESCE(s.reference_count,0) > 0; .EXPORT RESET .EXPORT REPORT FILE = column-stats-tera.csv .SET TITLEDASHES OFF .SET WIDTH 10000 '"' || TRIM(COALESCE(CAST(t2.card AS BIGINT), '0')) || '";' || SELECT '"' || OREPLACE(COALESCE(trim(tv.DatabaseName), ''), '"', '""') || '";' || '"' || OREPLACE(COALESCE(trim(tv.TableName), ''), '"', '""') || '";' || '"' || OREPLACE(COALESCE(trim(tv.columnname), ''), '"', '""') || '";' || '"' || TRIM(COALESCE(CAST(t2.card AS BIGINT), '0')) || '";' || '"' || CAST(current_timestamp AS VARCHAR(19)) || '"' (TITLE '"database_name";"table_name";"column_name";"cardinality";"current_ts"') FROM dbc.columnsv tv LEFT JOIN ( SELECT c.DatabaseName AS DATABASE_NAME, c.TABLENAME AS TABLE_NAME, c.ColumnName AS COLUMN_NAME, c.UniqueValueCount AS CARD FROM dbc.tablestatsv c WHERE c.DatabaseName = 'your_database_name' AND c.RowCount <> 0 ) t2 ON tv.DATABASENAME = t2.DATABASE_NAME AND tv.TABLENAME = t2.TABLE_NAME AND tv.COLUMNNAME = t2.COLUMN_NAME WHERE t2.card > 0; .EXPORT RESET .EXPORT REPORT FILE = column-skew-script-tera.csv .SET TITLEDASHES OFF .SET WIDTH 10000 SELECT 'SELECT CAST(''"' || TRIM(c.DatabaseName) || '";"' || TRIM(c.TABLENAME) || '";"' || TRIM(c.COLUMNNAME) || '";"'' || TRIM(CAST(COALESCE(MAX(cnt) * 1.0 / SUM(cnt), 0) AS NUMBER FORMAT ''9.9999'')) || ''";"'' || CAST(CURRENT_TIMESTAMP(0) AS VARCHAR(19)) || ''"'' AS VARCHAR(512)) AS """DATABASE_NAME"";""TABLE_NAME"";""COLUMN_NAME"";""SKEWED"";""CURRENT_TS""" FROM( SELECT COUNT(*) AS cnt FROM "' || c.DATABASENAME || '"."' || c.TABLENAME || '" GROUP BY "' || c.COLUMNNAME || '") t' || CASE WHEN ROW_NUMBER() OVER(PARTITION BY c.DATABASENAME ORDER BY c.TABLENAME DESC, c.COLUMNNAME DESC) <> 1 THEN ' UNION ALL' ELSE ';' END (TITLE '--SKEWED--') FROM dbc.columnsv c INNER JOIN (SELECT databasename, TABLENAME FROM dbc.tablesv WHERE tablekind = 'T' AND databasename = 'your_database_name') t ON t.databasename = c.databasename AND t.TABLENAME = c.TABLENAME INNER JOIN (SELECT databasename, TABLENAME, columnname FROM dbc.indices GROUP BY 1,2,3 WHERE TRANSLATE_CHK (databasename USING LATIN_TO_UNICODE) + TRANSLATE_CHK (TABLENAME USING LATIN_TO_UNICODE) + TRANSLATE_CHK (columnname USING LATIN_TO_UNICODE) = 0 ) i ON i.databasename = c.databasename AND i.TABLENAME = c.TABLENAME AND i.columnname = c.columnname WHERE c.ColumnType NOT IN ('CO','JN','N','++','VA','UT','AN','XM','A1','BO') ORDER BY c.TABLENAME, c.COLUMNNAME; .EXPORT RESET .EXPORT REPORT FILE = column-skew-stats-tera.csv .SET TITLEDASHES OFF .SET WIDTH 10000 .RUN FILE = column-skew-script-tera.csv .EXPORT RESET .EXPORT REPORT FILE = query-stats-tera.csv .SET TITLEDASHES OFF .SET WIDTH 32000 SELECT '"' || RTRIM(CAST(SqlTextInfo AS VARCHAR(31900)), ';') || '";"' || TRIM(QueryCount) || '";"' || TRIM(QueryId) || '";"' || TRIM(SqlRowNo) || '";"' || TRIM(QueryParts) || '";"' || CAST(CURRENT_TIMESTAMP(0) AS VARCHAR(19)) || '"' (TITLE '"query_text";"query_count";"query_id";"sql_row_no";"query_parts";"current_ts"') FROM ( SELECT QueryId, SqlTextInfo, SqlRowNo, QueryParts, QueryCount, SUM(QueryFirstRow) OVER (ORDER BY QueryCount DESC, QueryId ASC, SqlRowNo ASC ROWS UNBOUNDED PRECEDING) AS topN FROM (SELECT QueryId, SqlTextInfo, SqlRowNo, QueryParts, QueryCount, CASE WHEN ROW_NUMBER() OVER (PARTITION BY QueryCount, SqlTextInfo ORDER BY QueryId, SqlRowNo) = 1 AND SqlRowNo = 1 THEN 1 ELSE 0 END AS QueryFirstRow FROM ( SELECT q.QueryId, q.SqlTextInfo, q.SqlRowNo, MAX(q.SqlRowNo) OVER (PARTITION BY q.QueryId) QueryParts, COUNT(q.SqlTextInfo) OVER (PARTITION BY q.SqlTextInfo) QueryCount FROM DBC.dbqlsqltbl q INNER JOIN ( SELECT QueryId FROM DBC.DBQLogTbl t WHERE TRIM(t.StatementType) IN ('SELECT') AND TRIM(t.AbortFlag) = '' AND t.ERRORCODE = 0 AND (CASE WHEN 'All users' IN ('All users') THEN 'All users' ELSE TRIM(t.USERNAME) END) IN ('All users') --user_name list AND t.StartTime > CURRENT_TIMESTAMP - INTERVAL '30' DAY GROUP BY 1 ) t ON q.QueryId = t.QueryId INNER JOIN ( SELECT QueryId FROM DBC.QryLogObjectsV WHERE ObjectDatabaseName = 'your_database_name' AND ObjectType = 'Tab' AND CollectTimeStamp > CURRENT_TIMESTAMP - INTERVAL '30' DAY GROUP BY 1 ) r ON r.QueryId = t.QueryId WHERE q.CollectTimeStamp > CURRENT_TIMESTAMP - INTERVAL '30' DAY ) t ) t WHERE SqlTextInfo NOT LIKE '%";"%' ) q WHERE QueryParts >=1 AND topN <= 50 ORDER BY QueryCount DESC, QueryId, SqlRowNo QUALIFY COUNT(QueryId) OVER (PARTITION BY QueryId) = QueryParts; .EXPORT RESET .LOGOFF .QUIT
-
前のステップで作成したBTEQスクリプトを実行する
td_run_bteq.bat
ファイルを作成します。このファイルには以下の内容を使用します。@echo off > off-line_stats1.bteq & setLocal enableDELAYedexpansion @echo off > off-line_stats2.bteq & setLocal enableDELAYedexpansion set old1=your_teradata_server set new1=%1 set old2=your_login set new2=%2 set old3=your_database_name set new3=%3 set old4=your_password set /p new4=Input %2 pass? for /f "tokens=* delims= " %%a in (off-line_stats.bteq) do ( set str1=%%a set str1=!str1:%old1%=%new1%! >> off-line_stats1.bteq echo !str1! ) for /f "tokens=* delims= " %%a in (off-line_stats1.bteq) do ( set str2=%%a set str2=!str2:%old2%=%new2%! >> off-line_stats2.bteq echo !str2! ) type nul > off-line_stats1.bteq for /f "tokens=* delims= " %%a in (off-line_stats2.bteq) do ( set str3=%%a set str3=!str3:%old3%=%new3%! >> off-line_stats1.bteq echo !str3! ) type nul > off-line_stats2.bteq for /f "tokens=* delims= " %%a in (off-line_stats1.bteq) do ( set str4=%%a set str4=!str4:%old4%=%new4%! >> off-line_stats2.bteq echo !str4! ) del .\off-line_stats1.bteq echo export starting... bteq -c UTF8 < off-line_stats.bteq > metadata_export.log pause
-
前のステップで作成したバッチファイルを実行する
runme.bat
ファイルを作成します。このファイルには以下の内容を使用します。.\td_run_bteq.bat
ServerName
UserName
DatabaseName
runme.bat
ファイルで、ServerName
,UserName
およびDatabaseName
適切な値を指定します。次に、
runme.bat
ファイルを実行します。Amazon Redshift に変換するデータウェアハウスごとに、このステップを繰り返します。
このスクリプトを実行すると、各データベースの統計情報を含む 3 つのファイルが返されます。これらのファイルは AWS SCT プロジェクトにアップロードできます。このためには、プロジェクトの左側のパネルからデータウェアハウスを選択し、右クリックによりコンテキストメニューを開きます。[統計をアップロード] を選択します。
Teradata から Amazon Redshift への変換設定
Teradata から Amazon Redshift への変換設定を編集するには、「」で「設定」を選択し AWS SCT、「変換設定」を選択します。上部のリストから Teradata を選択し、Teradata – Amazon Redshift を選択します。Teradata から Amazon Redshift への変換に使用できるすべての設定 AWS SCT が表示されます。
の Teradata から Amazon Redshift への変換設定 AWS SCT には、以下のオプションが含まれています。
-
変換されたコード内のアクション項目に関するコメントの数を制限する。
選択した重要度以上のアクションアイテムの変換されたコードにコメントを追加する で、アクションアイテムの重要度を選択します。選択した重要度以上のアクションアイテムの変換されたコードにコメント AWS SCT を追加します。
たとえば、変換したコード内のコメントの数を最小限に抑えるには、[エラーのみ] を選択します。変換したコードのすべてのアクション項目にコメントを含めるには、[すべてのメッセージ] を選択します。
-
ターゲット Amazon Redshift クラスターに適用 AWS SCT できるテーブルの最大数を設定するには。
ターゲット Amazon Redshift クラスター のテーブルの最大数で、Amazon Redshift クラスターに適用 AWS SCT できるテーブルの数を選択します。
Amazon Redshift には、クラスターノードタイプの使用を制限するクォータがあります。Auto を選択した場合、ノードタイプに応じて、ターゲット Amazon Redshift クラスターに適用するテーブル AWS SCT の数を決定します。オプションで、値を手動で選択します。詳細については、「Amazon Redshift 管理ガイド」の「Amazon Redshift のクォータと制限」を参照してください。
AWS SCT は、Amazon Redshift クラスターが保存できる数よりも多い場合でも、すべてのソーステーブルを変換します。 は変換 AWS SCT されたコードをプロジェクトに保存し、ターゲットデータベースに適用しません。変換したコードを適用したときにテーブルの Amazon Redshift クラスターのクォータに達すると、 AWS SCT に警告メッセージが表示されます。また、テーブル数が制限に達するまで、 はターゲット Amazon Redshift クラスターにテーブル AWS SCT を適用します。
-
ソーステーブルのパーティションを Amazon Redshift の別のテーブルに移行するには。これを行うには、UNIONALLビューを使用する を選択し、単一のソーステーブルに対して が AWS SCT 作成できるターゲットテーブルの最大数を入力します。
Amazon Redshift は、テーブルのパーティションをサポートしていません。この動作をエミュレートしてクエリの実行を高速化するには、ソーステーブルの各パーティションを Amazon Redshift の別のテーブル AWS SCT に移行できます。次に、 AWS SCT は、これらのすべてのテーブルのデータを含むビューを作成します。
AWS SCT は、ソーステーブル内のパーティションの数を自動的に決定します。ソーステーブルパーティショニングのタイプによっては、この数は Amazon Redshift クラスターに適用できるテーブルのクォータを超える場合があります。このクォータに達しないようにするには、単一のソーステーブルのパーティションに対して が作成 AWS SCT できるターゲットテーブルの最大数を入力します。デフォルトのオプションは 368 テーブルで、これは 1 年 366 日のパーティションと、
NO RANGE
およびUNKNOWN
パーティションの 2 つのテーブルを表します。 -
Amazon Redshift テーブルの列に圧縮を適用します。そのためには、[圧縮エンコードを使用] を選択します。
AWS SCT は、デフォルトの Amazon Redshift アルゴリズムを使用して、圧縮エンコーディングを列に自動的に割り当てます。詳細については、『Amazon Redshift データベースデベロッパーガイド』の「圧縮エンコード」を参照してください。
デフォルトでは、Amazon Redshift はソートキーと分散キーとして定義されている列に圧縮を適用しません。この動作を変更したり、これらの列に圧縮を適用したりできます。これを行うには、KEY列 の圧縮エンコードを使用する を選択します。このオプションは、[圧縮エンコードを使用] オプションを選択した場合にのみ選択できます。
-
変換後のコードで明示的な列リストを
SELECT *
ステートメントに使用するには、[明示的な列宣言を使用する] を選択します。 -
Amazon Redshift クラスターのプライマリキーとユニークキーの動作をエミュレートするには、[プライマリキーとユニークキーの動作をエミュレートする] を選択します。
Amazon Redshift はユニークキーやプライマリキーを強制せず、情報提供のみを目的として使用します。コードでこれらの制約を使用する場合は、 が変換されたコードで動作を AWS SCT エミュレートすることを確認します。
-
ターゲット Amazon Redshift テーブル内のデータの一意性を確保するには。そのためには、SETテーブル の動作をエミュレート を選択します。
Teradata は、
SET
構文要素をデフォルトオプションとして使用してテーブルを作成します。SET
テーブルに重複する行を追加することはできません。ソースコードでこの一意性制約が使用されていない場合は、このオプションをオフにしてください。この場合、変換されたコードの処理が速くなります。ソースコードで一意性制約としてテーブル内の
SET
オプションを使用している場合は、このオプションをオンにしてください。この場合、 は変換されたコード内のINSERT..SELECT
ステートメントを書き AWS SCT 換えて、ソースデータベースの動作をエミュレートします。
Teradata から Amazon Redshift への変換最適化設定
Teradata から Amazon Redshift への変換最適化設定を編集するには、「」で「設定」を選択し AWS SCT、「変換設定」を選択します。上のリストから [Teradata] を選択し、次に [Teradata – Amazon Redshift] を選択します。左側のペインで、最適化戦略 を選択します。Teradata から Amazon Redshift への変換の最適化設定 AWS SCT を表示します。
の Teradata から 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
分散スタイルを小さなテーブルに適用します。この場合は、テーブル全体のコピーがすべてのノードに分散されます。