© 2019 QlikTech International AB. All rights reserved.
Qlik Replicateでの
テーブル設定詳細
(Table Settings)
クリックテック・ジャパン株式会社
© 2019 QlikTech International AB. All rights reserved.
2
• General
• Transform
• Filter
• Parallel Load
• LOB Column Handling
• Message Format
アジェンダ
3
タスクのカスタマイズ
• ここでは、レプリケーションタスクをカスタマイズする方法について説明します。
• たとえば、ターゲット エンドポイントに新しいテーブルまたは列を作成したり、レプリケートする各列のデータの一部のみを選択したりできます。
これは、変換とフィルターを使用して行われます。
※ このセクションの説明は表のみを参照しますが、ここで説明する手順はビューにも適用できます。ビューに対して変換が定義されている場
合、“Table(s)" ではなく“View(s)"という単語が UI に表示されます。
4
Table Settingsの開き方
• [<Table_Name> - Table Settings]ウィンドウで、個々のテーブル/ビューのデータをターゲットにレプリケートする方法を定義できます。
※ 一部のテーブル設定は、ログ ストリーム ステージングの設定では使用できません。
• [Table Settings] ウィンドウを開くには、
1. 作業しているタスクを開きます。
2. Designerビューで、コンソールの右側にある次のいずれかのタブから、目的のテーブルを選択します。
 [Patterns and Selected Tables] タブ - 目的のテーブルが明示的に選択されている場合。
 [Full Table List]タブ - テーブル包含パターン(table inclusion pattern)を使用して目的のテーブルが選択された場合。
3. テーブルリストの上にある[Table Settings]ボタンをクリックします。[<Table_Name> Table Settings]ウィンドウが開きます。
5
Table Settingsのデフォルト値の復元
デフォルトのテーブル値を復元するには、次の手順に従います。
• [Table Settings] ウィンドウの左下にある [Restore Table Defaults] をクリックします。このオプションは、すべてのタブで使用できます。変更は破
棄され、テーブルの既定の設定が復元されます。
※ 変更されたテーブルの名前の後に、変更されたテーブルを簡単に識別できるように、単語(changed) が続きます。
6
General
7
Table SettingsのGeneralタブ
単一のテーブル/ビューに対する一般的なタスクの実行
[Table Settings]ウィンドウの[General]タブには、選択した表に関する基本情報
が表示され、ターゲット上の表/スキーマに新しい名前を定義したり、テーブルとその索引
のデフォルトの表領域をオーバーライドしたりできます (Oracle ターゲットのみ)。
一般的なテーブル設定を編集するには:
1.[Table Settings]ウィンドウを開きます。
2.次に示すように、ウィンドウの左側にある[General] タブをクリックします。
[Map to target table] セクションでは、次のオプションを使用できます。
• Table Schema: ターゲットにテーブルを作成するスキーマを指定します。
• Table Name: ターゲットのテーブルの新しい名前を指定します。
• Table tablespace:
 タスクが Oracle ターゲット エンドポイントで定義されている場合にのみ使用できます。
ターゲット上にテーブルを作成するテーブルスペースの名前を指定します。
 デフォルトでは (つまり、このフィールドが空の場合)、テーブルはターゲットのソーステーブ
ルスペース (Oracle ソースから複製する場合) またはデフォルトのテーブルスペース
(他のソースから複製する場合) に作成されます。
• Index tablespace:
 タスクが Oracle ターゲット エンドポイントで定義されている場合にのみ使用できます。
ターゲット上にテーブルのインデックスを作成するテーブルスペースの名前を指定します。
 デフォルトでは (つまり、このフィールドが空の場合)、インデックスはターゲットのソース
テーブルスペース (Oracle ソースから複製する場合) またはデフォルトのテーブルス
ペース (他のソースから複製する場合) に作成されます。
8
Transform
9
単一のテーブル/ビューの変換の定義
• Qlik Replicateを使用すると、テーブルと列に次の変更を加えることができます:
 ターゲット表の列の名前を変更する
 ターゲット列を削除する
 データ型や対象の列の長さを変更する
 追加のターゲット列を追加する
 一意インデックスを構成する対象列を指定する
 データを再計算する
• 変換には、次の制限があります。
 右から左に表示する言語の列の計算はサポートされていません。
 名前に特殊文字 (#、、/、-など) を含む列に変換を実行することはできません。
 名前にポンド (#) が含まれている列に対しては実行できません。
 LOB/CLOB データ型でサポートされる変換は、ターゲットに列をドロップする方法
のみです。
• ここで説明する方法は、タスク内の単一のテーブルまたは少数のテーブルに固有の変換
に使用できます。複数のテーブルに対して同様の変更を行う場合は、グローバル変換
ルール ウィザードの起動を参照してください。
10
[Transform]タブの使用
[Transform] タブでは、Replicateの組み込み機能を使用して変換を定義できます。
[Table Settings]ウィンドウの [Transform] タブは、次の要素で構成されています。
• Input: 変換を実行できる列が一覧表示されます。
• Output: このテーブルは、変換を実行するテーブルの列に対して定義された出力を示
しています。このファイルには、次の列が含まれます。
 Key : 列が一意インデックスのセグメントであるかどうかを示します。一意イン
デックスのセグメントである列の横に、キーアイコンが表示されます。キーを追加
および削除する列をクリックします。
 Name: 列の名前。列の名前を変更するには、変更する列名を含むフィール
ドを選択し、列の名前を変更する場合、または列が計算される (テーブルに追
加) 場合は、この列に新しい名前を入力します。
 Type: 列のデータ型。列のデータ型を変更するには、変更するデータ型の
フィールドを選択し、新しいデータ型を選択します。詳細については、次の表を
参照してください。
 Expression: SQLite 演算子を使用して列のデータを定義する式。式の
作成方法については、次の表を参照してください。
※Replicateの組み込み変換で提供されない機能を必要とするお客様は、独自の変換を作成し、その変換にExpression Builderからアクセスできます。ユーザー定義変
換 (基本的なプログラミングスキルが必要) を作成する方法については、「ユーザー定義変換」を参照してください。
11
制限事項と考慮事項
制限事項と考慮事項
• 列の削除、変更の保存、および同じ名前の列の追加、および削除された列のデータに対応する式の定義はサポートされていません。誤って列を
削除した場合は、式を指定せずに列を再度追加するだけです。
• タスクを停止し、テーブルの 1 つにメタデータ変換を定義する場合 (列の削除など)、タスクを再開する前に、[Task Settings] の[Full Load
Settings] タブで[DROP and CREATE table] オプションが選択されていることを確認します(デフォルト)。
• 同種レプリケーションタスク (Oracle to Oracle など) では、1 つのテーブル列を変更する (列のデータ型や長さなど) は、テーブル全体の同質
性を損ないます。
12
変換オプション
次の表は、[Transform] タブで使用できる変換オプションを示しています。
目的 必要な手順
列の名前を変更する • 変更するテーブル列の[Name]列を選択します。新しい名前を入力します。
• 名前が変更されると、右上隅が青に変わります。元の名前を表示するには、マウス ポインタをフィールドの上に
置くと、元の名前が表示されます。
列を主キー/固有キーとして設定するか、列の主キー/一意キーを無効にす
る
1. [Output] テーブルで目的の行を選択し、[Key] 列のセルをクリックします。
2. キーアイコンが表示されます。
3. 追加の列に主キー/一意キーを設定するには、この手順を繰り返します。
4. 主キー/一意キーを無効にするには、キーアイコンをクリックします。
列のデータ型を変更する • 変更するテーブル列の[Type]列を選択し、ドロップダウン リストから新しいデータ型を選択します。選択した
データ型が、その列のデータと互換性があることを確認します。
• Qlik Replicateデータ型の詳細については、「Replicate data types」を参照してください。
• ネイティブ エンドポイントからQlik Replicateデータ型へのデータ型マッピングについては、使用しているエンドポ
イントの章を参照してください。
新しい列を追加する • [Add Column]をクリックして新しい列を追加します。列を追加すると、Nameは空白になり、Typeは
string(50)として表示されます。
• [Name] 列に新しい列の名前を入力します。必要に応じて (列データに基づいて) [Type] 列をクリックし、
リストからデータ型を選択します。
既存の列を追加する • [Input] ペインで、1 つ以上の列を選択し、右向きの矢印ボタンをクリックします。
• すべての列を追加するには、右向きの二重矢印をクリックします。
• デフォルトでは、すべてのテーブル列がOutputリストに含まれます。一部の列のみを含めるには、
[Transform]タブの上部にある[By default include all columns] チェック ボックスをオフにします。
これにより、すべての列がリストから削除されます。必要に応じて、既存の列を追加し直すことができます。
• 列がテーブル レベルで明示的に追加され、グローバル レベルで (グローバル変換ルールを使用して) 削除され
た場合、その列はターゲットに作成されますが、データは作成されません。
13
変換オプション
次の表は、[Transform] タブで使用できる変換オプションを示しています。
目的 必要な手順
列を削除する • [Output] ボックスの一覧で、削除する列の行を選択し、左向きの矢印ボタンをクリックします。
• すべての列を削除するには、左向きの二重矢印をクリックします。主キー/一意インデックスとして定義されている列を除くすべての列が削除されること
に注意してください。
ターゲット列との一意インデックス セグメントの追加/削除 • キー アイコンは、一意インデックスのターゲット列セグメントを示します。
• 一意インデックスセグメントを追加するには、セグメントを追加するターゲット列の左側にあるKey列をクリックします。キーアイコンが表示されます。
• 一意のインデックス セグメントを削除するには、セグメントを削除するターゲット列の左側にあるキーアイコンをクリックします。キーアイコンが消えます。
ターゲット エンドポイントの列のデータを再計算する • データを変更するテーブル列がある行の[Expression] 列をクリックします。SQLite 構文を使用して式を入力します。
• 式の作成については変換の式の作成および変換での SQLite 構文の使用を参照してください。
• 計算式を追加したら、式をテストできます。
特定の入力列のデータ型を変更する
※ IBM DB2 for iSeries および IBM DB2 for z/OS
ソース・エンドポイントでのみサポートされます。
• これは、ソース列が文字型として定義されているが、その列に格納されているデータがバイナリまたは逆の場合に必要です。
※ ソース列の型が文字列、WSTRING、CLOB、または NCLOB である場合は、Character Setを選択する必要があります。
• [Input] テーブルで、[Type]列の該当するセルをクリックし、必要に応じてドロップダウン リストから[STRING]または[Byte]を選択します。
※ Inputテーブルで列のTypeを変更する場合は、Outputテーブルの対応する列に対しても同じタイプを設定する必要があります。
• STRING を選択した場合は、以下で説明する文字セットも変更できます。
※ 変更されたセルの右上隅に三角形が表示されます。元の値を表示するには、三角形をクリックします。
特定の入力列の文字セットを変更する
※ IBM DB2 for iSeries および IBM DB2 for z/OS
ソース・エンドポイントでのみサポートされます。
• これは、ソース文字の列が誤ってエンコードされている場合に必要です。たとえば、ソース文字列がCCSID Xでエンコードされているとして記述されて
いるが、その列に格納されているデータが実際にはCCSID Yにエンコードされている場合です。
• カスタム文字セットは、以下の「カスタム文字セットの設定」で説明されているように設定することもできます。入力テーブルで次の手順を実行します。
1. [Type] 列の該当するセルをクリックし、ドロップダウン リストから[String] を選択します。
2. [Character Set] 列の該当するセルをクリックし、ドロップダウン リストから適切な文字セットを選択します。
※ 選択したTypeと互換性のある文字セットのみが選択可能になります。
3. 変更されたセルの右上隅に三角形が表示されます。元の値を表示するには、三角形をクリックします。
14
カスタム文字セットの設定
以下の手順は、IBM DB2 for iSeries および IBM DB2 for z/OS ソース・エンドポイントでのみサポートされます。
ソース表が誤った CCSID で定義されており、正しい定義が実際に UCM ファイルにある場合は、以下のステップを実行します。
1. 拡張子 .ucmのマッピング データ ファイルを作成します。
※ 既存の UCM ファイルを編集する場合は、<code_set_name>の値および<icu:alias>プロパティも変更する必要があります。ファイルに
<icu:alias>プロパティが含まれていない場合は、<code_set_name>プロパティの値を変更するだけで済みます。
2. 次のコマンドを実行して、UCM ファイルの CNV ファイルを作成します。
<product_dir>¥bin¥makeconv.exe -v <file_name>.ucm
例: "c:¥Program Files¥Attunity¥Replicate¥bin¥makeconv.exe" -v 1047_EX.ucm
これにより、UCM ファイルと同じ名前の CNV ファイルが作成されます (例: 1047_EX.cnv)。
3. ファイルを次の場所にコピーします。
<product_dir>¥bin¥icudt58l
※ ファイルの複製チャネルを使用する場合、ファイルは両方のReplicateサーバー上の同じ場所にコピーする必要があります。
4. Qlik Replicate UI サーバー サービスを再起動します。
5. [文字セット] ドロップダウン リストからカスタム文字セットを選択します。CNV ファイル名の後に"Custom" という語が続くものとして表示されます
例: 1047_EX.cnv(Custom)
15
変換での列のイメージ前データの使用
• 変換では、列のイメージ前データを使用できます。これは、イメージ前のデータをターゲットに格納する必要がある場合に便利です。これを行うには、
Outputテーブルの[Expression] 列で、次の形式でソース列名を指定します。
$BI__MyColumn
• ここで $BI__は必須プレフィックス (レプリケーションがイメージ前のデータをキャプチャするように指示します) で、MyColumnはソース列名です。
• 既存のターゲット列に前イメージデータを格納できますが、前の画像データを格納する新しいターゲット列を作成することをお勧めします([Add
Column]ボタンを使用)。
16
変換の式の作成
式を使用して、新しい列または再計算された列の内容を定義します。
1. [Transform] タブで、式を作成する列を含む行を選択、もしくは[Add Column]をクリックして新しい列を追加します。
2. [Expression] 列のボタンをクリックします。Expression Builderが開きます。
17
変換での SQLite 構文の使用
次の表は、変換でサポートされる SQLite 演算子の一覧です。
演算子 説明
|| • 文字列を連結します。
FIRST_NAME||LAST_NAME
PHONE_NUMBER||<Office のみ> (電話番号に文字列 Office のみ追加します)。
+ • 2 つの値を加算します。
DEPARTMENT_ID+100 (各 ID 番号に 100 を加算します)。
• この演算子を使用する式で使用される列は、数値データ型である必要があります。
- • 別の値から値を減算します。
MANAGER_ID-100 (各 ID 番号から 100 を減算します)。
• この演算子を使用する式で使用される列は、数値データ型である必要があります。
% • 除算式の残りの部分を値として使用します。
%SALARY/7 (Salary 列の値を 7 で除算し、式の剰余を列値として使用します)。
/ • ある値を別の値に分割します。
SALARY/.16 (給与列の値を .16 で割ります。)
• 除算式の 2 つの値が整数 (10 進数の後に数字のない 2 つの NUMERIC 列) であり、結果が小数値である場合、
返される結果は 0 になります。
* SALARY*.16 (給与列の値に .16 を乗算します。これは、給与から差し引かれる税の計算に使用できます)。
SQLite 構文の詳細については、SQLite のドキュメントを参照してください。
18
Filter
19
フィルタの使用
フィルタを使用すると、ソース テーブルの列の値に基づいてレプリケーションタスクのレコードを含めたり除外したりできるため、必要な特定のデータのみ
をレプリケートできます。
フィルタを作成する場合、次の制限が適用されます。
• 右から左に表示する言語の列の計算では、フィルタはサポートされていません。
• フィルターは、変更できない列にのみ適用できます。
• 変更可能な列のフィルター:
 列内の特定の行を除外/含めるフィルターを作成すると、最初に除外/含まれていた行が後で変更された場合でも、指定された
行は常に除外/含まれます。たとえば、"Age" という列に行 "1-10" を除外または含める選択をした場合、その行が後で "11-
20" に変更された場合、データが同じでなくても、行は除外/含まれます。
 さらに、フィルタースコープの外側の行が変更された (つまり、更新または更新された後に削除された) 場合は、フィルターで定義
されているとおりに除外/組み込まれる必要があります。 したがって、たとえば、5 未満の行を除外/含めるフィルタを作成し、行 6
を -6 に変更した場合、(フィルタの条件範囲に含まれている場合でも、その行は D をレプリケートしません) 。
• LOB 列にフィルターを適用できません。
20
[Filter] タブを開く
[Filter]タブを開くには:
1.フィルタ処理するテーブルを選択し、[Table Settings]ウィンドウを開きます。
2.ウィンドウの左側にある [Filter] タブをクリックします。
21
Table Settings: Filter
Filterタブには、次の情報が含まれています。
• Data Columns リスト: このリストには、データをフィルター処理するテーブルの列の一覧が含まれています。
• Source: このタブには、テーブル内の元のソース列が表示されます。
• Header: このタブには、使用可能なヘッダー列が表示されます。これらの列を使用してフィルターを作成し、式に含めることができます。こ
れらのヘッダー列の詳細については、「ヘッダー」を参照してください。
• Calculated: このタブには、テーブルに追加された列が一覧表示されます。変換を使用して列を追加します。詳細については、「単一の
テーブル/ビューの変換の定義」を参照してください。
• Filter Conditionsテーブル: このテーブルには、次の列があります。
• Name: データをフィルタする列の名前。
• Type: 列のデータ型。
• Include/Exclude: この列のフィルタされたデータを含めるか除外するかを指定します。
• Ranges:フィールドの右側にあるボタンをクリックして、範囲ビルダを開きます。範囲ビルダでの値または範囲の作成については、フィルタ範
囲の追加または削除を参照してください。
• フィルター範囲の手動入力の詳細については、フィルター処理で SQLite 構文を使用するを参照してください。
• Record Selection Condition: 複数の列を含めることができる複雑な条件を入力します。条件が TRUE と評価され、受け入れられる必要
があります。条件は、SQLite 演算子を使用するか、式ビルダを使用して作成できます。SQLite 演算子の使用については、1 つ以上の列のレ
コード選択条件の作成を参照してください。
次の図は、[Table Settings]ウィンドウの [Filter] タブの情報の例です。
22
指定した列のFilter Conditionの作成
作業しているテーブルの単一の列に対して単純な条件を作成できます。範囲または特定の値の任意の組み合わせをフィルターに含め、定義されたデータ
を含めるか除外するかを決定できます。
フィルタ条件を作成するには:
1. データ列の一覧から列を選択し、[Filter Conditions] テーブルの右側にある矢印をクリックします。
2. 列を削除するには、[Filter Conditions]テーブルで列をクリックし、左向きの矢印をクリックします。[Include/Exclude] 列または [Values]
列にこの列に入力されたデータも削除されます。
3. [Include/Exclude]列をクリックして、この条件を満たすデータを含めるか除外するかを選択します。
4. [Ranges] 列の [Edit Ranges] ボタンをクリックします。
5. <Name> <Include|Exclude> Rangesウィンドウが開きます。
23
Record Selection Conditionを作成するには:
1. [Data Columns]リストから、ソース列、ヘッダー列、または集計列を選択し、[Record Selection Condition] ウィンドウの左にある矢印をクリックします。
2. 条件を作成するには、<や=などの SQLite 演算子を使用します。条件を作成する必要がある場合は、任意の量の文字列または列を使用します。
例1) $EMPLOYEE_ID < 100 AND $SALARY > 100,000
この場合、これらの条件の両方を満たす行のみがレプリケーションタスクでレプリケートされます。
例2) $EMPLOYEE_NAME IS ’Sm_th’
SQL 検索パターン文字列を使用する例を示します。この条件を満たす行のみが複製されます。
1つ以上の列のRecord Selection Condition の作成
24
1つ以上の列のRecord Selection Condition の作成
Expression Builderを使用してRecord Selection Conditionを作成するには:
• [Open Expression Builder]をクリックします。このボタンは、レコード選択条件ボックスの直下にあります。「Expression Builderを使用する」
の「式を作成する」の指示に従います。
25
1つ以上の列のRecord Selection Conditionの作成
レコード選択条件は、式エディタを使用して手動で作成することも、あるいはそのいずれかを使用して作成することもできます。
文字列を入力する際には、次の特殊文字を使用できます。
• %: 0 個以上の文字の任意の文字列に一致します。たとえば、Mc% は Mcで始まるすべての名前を検索するか、%bob%にbobを含むすべての
名前を含めます。
• _:単一の文字に一致します(ワイルドカードとして)。たとえば、「Sm_th」には、Smで始まり、thで終わるSmithなどの名前が含まれます。アンダース
コア文字を検索するには、[_]" を使用します。
• [..]: 範囲または文字のセットを含みます。たとえば、[CK]ars[eo]には、Carsen, Karsen, Carson, Karsonいう名前が含まれており、または
[M-Z]ingerでは、 Ringer, Singer, Zinger.など、MとZの間の最初の文字で終わるすべての単語が含まれています。
詳細については、Transact-SQL の使用方法に関するドキュメントを参照してください。
レコード選択条件フィルターの作成に SQLite 演算子を使用できる内容についてはSQLite 構文のフィルタリングを参照してください。
26
特定の列にのみ更新を適用
特定の列が変更された場合など、ユーザー定義条件が満たされた場合にのみ、UPDATE を適用するようにレプリケートを指示する式を定
義できます。これは、ソース内に、ユーザーがターゲットに関連しないと判断した更新が多く存在する場合に便利です。
制限
• イメージ前データがない列 (LOB 列など) はサポートされません。
• 次のソース (前イメージ レコードをサポートしないソース) はサポートされません。
• CDCを使用したODBC
• Teradata
• 既存の式ビルダーおよびフィルターの制限に従う
• コンテンツベースのフィルタリングは、データの損失やデータの破損につながる可能性があります。たとえば、主キーの値が変更された場合
(UPDATE 操作)、式で指定された列が変更されなかった場合、式は UPDATE を無視する可能性があります。この場合、後で式で指
定された列に変更が適用された場合でも、古い行の内容を持つ "ファントム" 行が残ります。
27
特定の列にのみ更新を適用する場合の操作方法
列 c1-c10を持つtable1という名前のソース テーブルを使用しているが、ターゲットの列 c7、c8、c9 の更新のみが必要であると仮定します。
これを行うには、次の操作を行う必要があります。
1. Table Settingsを開き[Filter] タブを選択します。
2.タブの右下にある[Expression Builder] ボタンをクリックします。 Expression Builderが開きます。
3.必要に応じて、[Headers] タブを選択します。
※ [Headers] タブを選択するオプションは省略可能ですが、タブの左側の列をダブルクリックするだけで、式に$AR_H_OPERATIONを追加できます
(手順 4 で必要な場合)。
4. [Build Expression]ペインに次の式を入力し、[OK]をクリックします。
($AR_H_OPERATION != 'UPDATE') OR
(($AR_H_OPERATION = 'UPDATE') AND (( $BI__c7 != $c7) OR ( $BI__c8 != $c8) OR ( $BI__c9 != $c9)))
上記の式は、次のいずれかに該当する場合にのみ、c7、c8、c9 に変更が適用されることを意味します。
1. 操作は UPDATE ではありません。
2. UPDATE 命令の結果、c7、c8、または c9の値が変更されました。
※ 式で使用する場合、Before-Image 列の先頭に$BI__を付ける必要があります。UPDATE 以外の操作の場合、指定された列の値は NULL になります。
28
フィルタ範囲の追加または削除
範囲ビルダを使用して、[範囲] 列に 1 つ以上の値を追加できます。リスト内のいずれかの範囲に一致する値は、レプリケーションに含まれます。
範囲ビルダを使用するには:
1. [Table Settings]ウィンドウの [Filter]タブで、フィルタする列を選択します。詳細については、「フィルタの使用」を参照してください。
2. [Ranges] 列の右側にあるボタンをクリックします。範囲ビルダーが開きます。
3. [Add Range]をクリックします。表示されたドロップダウン リストから次のいずれかを選択します。
条件 表示 説明
Equal to Equal to = [N] 選択した列の値が入力した値と等しい場合、
[ Include/Exclude外] 列で選択したオプ
ションに応じて、レプリケーションタスクに結果が含
まれるか除外されます。
Between Between [N] - [N] 入力した 2 つの値の間の値が列に含まれている
場合は、結果は[ Include/Exclude]列で
選択したオプションに応じてレプリケーションタスク
に含まれるか除外されます。
Less than or equal to Less than or Equal to =< [N] 選択した列の値が入力した値以下の場合、
[Include/Exclude] 列で選択したオプション
に応じて、レプリケーションタスクに結果が含まれる
か除外されます。
Greater than or equal to Less than or Equal to =< [N] 選択した列の値が入力した値以上の場合、
[Include/Exclude] 列で選択したオプション
に応じて、レプリケーションタスクに結果が含まれる
か除外されます。
29
フィルタ範囲の追加または削除
範囲ビルダからフィルタ範囲を削除するには:
1. [Table Settings]ウィンドウの [Filter] タブで、削除するフィルタ条件を含む列を選択します。
2. [Range] 列の右側にあるボタンをクリックします。範囲ビルダーが開きます。
3. 削除する範囲の横にある[X]をクリックします。削除された範囲はリストから削除されます。
30
フィルタリングでの SQLite 構文の使用
演算子 説明
< より小さい。
$SALARY<100000
<= 以下の値
$SALARY<=100000
> より大きい
$SALARY>100000
>= 次の値以上の値です
$SALARY>=100000
= 次の値に等しい
$SALARY=100000
!= または<> と等しくない
$SALARY!=100000
IS と同じ
$HIRE_DATE IS 2014-09-29
一方または両方のオペランドが NULL でない限り、IS は = と同じ関数を実行します。この場合、両方のオペランドが NULL の場合、IS 演算子は 1 (true) と評価さ
れます。一方のオペランドが NULL で、もう一方のオペランドが NULL でない場合、IS 演算子は 0 (false) と評価されます。
IS NOT と同じではありません
$HIRE_DATE IS NOT 2014-09-29
一方または両方のオペランドが NULL でない限り、IS は!=と同じように機能しません。この場合、両方のオペランドが NULL の場合、IS NOT 演算子は 0 (false) と
評価されます。一方のオペランドが NULL で、もう一方のオペランドが NULL でない場合、IS NOT 演算子は 1 (true) と評価されます。
AND 両方のオペランドが真です。
$MANAGER_ID AND EMPLOYEE ID >100
OR いずれかのオペランドが真です。
$MANAGER_ID OR EMPLOYEE ID >100
Qlik Replicateは、レコード選択条件フィルターを作成する際に、次の SQLite 演算子をサポートします。
※以下に示すように、各入力の前に ($) を置く必要があります。
※SQLite 構文の使用方法の詳細については、SQLite のドキュメントを参照してください。
31
Parallel Load
32
Parallel Load
• Full Loadレプリケーションモードでは、テーブルをセグメントに分割し、セグメントを並列でロードすることにより、大きなテーブルのレプリケー
ションを高速化できます。
• テーブルは、データ範囲、パーティション、またはサブパーティション別にセグメント化できます。
33
サポートされているエンドポイント
タスクは、次のソースエンドポイントとターゲットエンドポイントの組み合わせで定義する必要があります。
サポートされているソース エンドポイント:
• Oracle
• Microsoft SQL Server
• MySQL
• PostgreSQL
※パーティションまたはサブパーティションによるテーブルセグメンテーションは、
PostgreSQL ソースエンドポイントではサポートされていません。
• IBM DB2 for LUW
• IBM DB2 for z/OS
※パーティションまたはサブパーティションによるテーブルセグメンテーションは、
IBM DB2 for z/OSソースエンドポイントではサポートされていません。
• SAP Sybase ASE
• SAP Application
• SAP Application (DB)
• Amazon RDS for Microsoft SQL Server
• Teradata
サポートされているターゲット エンドポイント:
• Oracle
• Microsoft SQL Server
• Hadoop (Hortonworks, Cloudera,
and MapR)
• PostgreSQL
• Google Cloud SQL for PostgreSQL
• Sybase ASE
• Vertica
• MySQL
• File
• Amazon S3
• Amazon Redshift
• Amazon EMR
• Databricks on AWS
• Microsoft Azure SQL Database
• Microsoft Azure Database for
MySQL
• Microsoft Azure ADLS
• Microsoft Azure Database for
PostgreSQL
• Microsoft Azure Databricks
• Microsoft Azure Data Warehouse
• Microsoft Azure HDInsight
• Google Cloud SQL for MySQL
• Google Cloud BigQuery
• Google Dataproc
• Google Cloud Storage
• Hortonworks Data Platform (HDP)
• Snowflake on AWS
• Snowflake on Azure
• Snowflake on Google
• Cloudera Data Platform (CDP)
Private Cloud
34
データ範囲でセグメントの境界を定義する場合
1. [Parallel Load] タブの[Select Parallel Load Method] セクションで、[Use Data Ranges] を選択します。
2. [Select Details] セクションで、[Select Segment Columns] をクリックします。
3. [Columns]ウィンドウが開きます。
4. すべてのエンドポイントで、[Unique Index column (一意のインデックス)] 列が自動的に選択されます。範囲を区切るためにデータを使用する列を選択し、[OK]
をクリックします。
※インデックス付き列を選択すると、パフォーマンスが大幅に向上します。
※最大 10 列まで選択できます (複数選択がサポートされています)
※NULL 値のレコードはレプリケートされません
※範囲ごとにセグメントを定義するために、以下のデータ・タイプを使用することはできません: DOUBLE、FLOAT、および LOB (BLOB、CLOB、NCLOB)
35
データ範囲でセグメントの境界を定義する場合
5. [Define Segment Boundaries] セクションで、次の手順を実行します。
a. [Add Segment]をクリックしてセグメントを追加します。選択した列は、表見出
しとして表示されます。
b. 選択した列にセグメントの上位データ範囲を入力します。
c. 必要に応じて、セグメントを追加します。
d. [Validate] をクリックして、指定したデータがソース列のデータ型に対応している
こと、および定義されたすべてのセグメントに値が含まれていることを検証します。
e. セグメントを削除するには、目的のセグメントを選択し、[Delete] をクリックします。
6. [OK] をクリックして設定を保存します。
※[Use Data Ranges] を選択すると、すべての列にデータ範囲が定義されていない場
合でも、すべてのテーブル データがレプリケートされます。
※DATE 列の値は、ソースでサポートされている形式で入力する必要があります。たとえば、Oracle ソース
の場合、正しい形式は次のようになります。
 ALTER SESSION SET NLS_DATE_FORMAT:
‘YYYY-MM-DD HH24:MI:SS’ (YYYY-MM-DDだけでも有効であることを指定)
 ALTER SESSION SET NLS_TIMESTAMP_FORMAT:
YYYY-MM-DD HH24:MI:SS.FF9'
 ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT:
'YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM’
36
データ範囲でセグメントの境界を定義する使用例
Column_1 Column_2 Column_3
10 30 105
20 20 120
100 12 99
次のセグメントが[Define Segment Boundaries]テーブルで定義されているとします。
この場合、ロードセグメントごとに次の「WHERE」句が作成されます。
• Segment 1: ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))
• Segment 2: NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))
AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))
• Segment 3: NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 30) AND (COL2 = 20) AND (COL3 < 120)))
AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
• Segment 4: NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
37
すべてのテーブル パーティションによるセグメント境界を定義する場合
テーブルが既にパーティション化されていることが確実な場合にのみ、この方法を選択してください。
1. [Parallel Load] タブの[Select Parallel Load Method] セクションで、[Use Partitions] を選択します。
2. [Select Partitions]セクションで、[Use all table partitions] を選択します。これにより、ソース データベースに既に存在するパーティションに
従ってテーブルがセグメント化されます。
3. 次のいずれかを選択します。
• Use main partitions
• Use sub partitions (ソース データベースがサブパーティションをサポートしていない場合、このオプションは無効になります。)
4. [OK] をクリックします。
38
特定のパーティションでセグメント境界を定義する場合
テーブルが既にパーティション化されていることが確実な場合にのみ、この方法を選択してください。
1. [Parallel Load] タブの[Select Parallel Load Method] セクションで、[Use Partitions] を選択します。
2. [Select Partitions]セクションで、[Specify partitions] を選択します。これにより、指定したソース パーティションに従ってデータが分割されます。
※ [Specify partitions]を選択すると、指定したパーティションのみがレプリケートされます。
3. [Add Partition]をクリックします。
4. 既存のパーティションまたはサブパーティションの名前を指定します。
5. サブパーティションの名前を指定した場合は、[Sub-Partition] 列のチェック ボックスをオンにします。
※ ソース データベースがサブパーティションをサポートしていない場合、このチェック ボックスは無効になります。
6. 必要に応じて、追加のパーティション/サブパーティションを追加します。
7. パーティション/サブパーティションを削除するには、パーティション/サブパーティションを選択し、[Delete] をクリックします。
8. [OK] をクリックして設定を保存します。
39
並列にロードできるセグメント数の調整
並列にロードされるセグメントの数を増減できます。たとえば、[Use all table partitions] オプションを選択し、ソース テーブルに 20 個のパーティ
ションがある場合、既定の同時実行タスク数 (5) を増やすとパフォーマンスが向上します。
※ サブタスクは、各セグメント、パーティション、サブパーティションに割り当てられます。
例: 6 つのパーティションを持つテーブルを選択し、 Use Partitions 方法を使用してテーブルをロードすると、5 つのパーティションが並列にロードされ、
同時実行タスクのデフォルト数 (5) に対応します。サブタスクの 1 つが実行を完了すると、6 番目のパーティションのロードに割り当てられます。
現在設定されている値は、[Parallel Load]タブの下部に表示されます。この値は、[Full Load Tuning] タブの [Maximum number of
tables to load in parallel] フィールドで変更できます。
40
Handling LOB
columns
41
Handling LOB columns
個々のテーブルに対するタスクの LOB 設定を上書きできます。
42
Message format
43
Message format
• このタブは、サポートされるストリーミング エンドポイントで定義されたタスクでのみ使用できます。
• このようなエンドポイントでタスクを定義する場合、既定の[メッセージのレプリケート]形式をオーバーライドするカスタム メッセージ形式を指定できま
す。これは、コンシューマー アプリケーションが特定の形式でメッセージを処理する必要がある場合に役立ちます。
• カスタム メッセージ形式は、タスクレベルまたはテーブル レベルで定義できます。タスクレベルと表レベルの両方で定義されている場合、表に定義さ
れたメッセージフォーマットは、タスクに定義されたメッセージフォーマットよりも優先されます。
テーブル レベルでカスタム メッセージを定義するには、次の手順を実行します。
1. テーブルを選択します。
2. [Table Settings]の開きます。
3. [Message Format] タブを選択し、[Change to Table Policy] ボタンをクリックします。
4. メッセージ形式の説明に従ってメッセージ形式を設定します。
5. タスクに定義されたメッセージ形式を使用するには、[Change to Task Policy] ボタンをクリックします。
※ タスク レベルでのカスタム メッセージの定義については、「メッセージ形式」を参照してください。
www.qlik.com/sap

Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)

  • 1.
    © 2019 QlikTechInternational AB. All rights reserved. Qlik Replicateでの テーブル設定詳細 (Table Settings) クリックテック・ジャパン株式会社
  • 2.
    © 2019 QlikTechInternational AB. All rights reserved. 2 • General • Transform • Filter • Parallel Load • LOB Column Handling • Message Format アジェンダ
  • 3.
    3 タスクのカスタマイズ • ここでは、レプリケーションタスクをカスタマイズする方法について説明します。 • たとえば、ターゲットエンドポイントに新しいテーブルまたは列を作成したり、レプリケートする各列のデータの一部のみを選択したりできます。 これは、変換とフィルターを使用して行われます。 ※ このセクションの説明は表のみを参照しますが、ここで説明する手順はビューにも適用できます。ビューに対して変換が定義されている場 合、“Table(s)" ではなく“View(s)"という単語が UI に表示されます。
  • 4.
    4 Table Settingsの開き方 • [<Table_Name>- Table Settings]ウィンドウで、個々のテーブル/ビューのデータをターゲットにレプリケートする方法を定義できます。 ※ 一部のテーブル設定は、ログ ストリーム ステージングの設定では使用できません。 • [Table Settings] ウィンドウを開くには、 1. 作業しているタスクを開きます。 2. Designerビューで、コンソールの右側にある次のいずれかのタブから、目的のテーブルを選択します。  [Patterns and Selected Tables] タブ - 目的のテーブルが明示的に選択されている場合。  [Full Table List]タブ - テーブル包含パターン(table inclusion pattern)を使用して目的のテーブルが選択された場合。 3. テーブルリストの上にある[Table Settings]ボタンをクリックします。[<Table_Name> Table Settings]ウィンドウが開きます。
  • 5.
    5 Table Settingsのデフォルト値の復元 デフォルトのテーブル値を復元するには、次の手順に従います。 • [TableSettings] ウィンドウの左下にある [Restore Table Defaults] をクリックします。このオプションは、すべてのタブで使用できます。変更は破 棄され、テーブルの既定の設定が復元されます。 ※ 変更されたテーブルの名前の後に、変更されたテーブルを簡単に識別できるように、単語(changed) が続きます。
  • 6.
  • 7.
    7 Table SettingsのGeneralタブ 単一のテーブル/ビューに対する一般的なタスクの実行 [Table Settings]ウィンドウの[General]タブには、選択した表に関する基本情報 が表示され、ターゲット上の表/スキーマに新しい名前を定義したり、テーブルとその索引 のデフォルトの表領域をオーバーライドしたりできます(Oracle ターゲットのみ)。 一般的なテーブル設定を編集するには: 1.[Table Settings]ウィンドウを開きます。 2.次に示すように、ウィンドウの左側にある[General] タブをクリックします。 [Map to target table] セクションでは、次のオプションを使用できます。 • Table Schema: ターゲットにテーブルを作成するスキーマを指定します。 • Table Name: ターゲットのテーブルの新しい名前を指定します。 • Table tablespace:  タスクが Oracle ターゲット エンドポイントで定義されている場合にのみ使用できます。 ターゲット上にテーブルを作成するテーブルスペースの名前を指定します。  デフォルトでは (つまり、このフィールドが空の場合)、テーブルはターゲットのソーステーブ ルスペース (Oracle ソースから複製する場合) またはデフォルトのテーブルスペース (他のソースから複製する場合) に作成されます。 • Index tablespace:  タスクが Oracle ターゲット エンドポイントで定義されている場合にのみ使用できます。 ターゲット上にテーブルのインデックスを作成するテーブルスペースの名前を指定します。  デフォルトでは (つまり、このフィールドが空の場合)、インデックスはターゲットのソース テーブルスペース (Oracle ソースから複製する場合) またはデフォルトのテーブルス ペース (他のソースから複製する場合) に作成されます。
  • 8.
  • 9.
    9 単一のテーブル/ビューの変換の定義 • Qlik Replicateを使用すると、テーブルと列に次の変更を加えることができます: ターゲット表の列の名前を変更する  ターゲット列を削除する  データ型や対象の列の長さを変更する  追加のターゲット列を追加する  一意インデックスを構成する対象列を指定する  データを再計算する • 変換には、次の制限があります。  右から左に表示する言語の列の計算はサポートされていません。  名前に特殊文字 (#、、/、-など) を含む列に変換を実行することはできません。  名前にポンド (#) が含まれている列に対しては実行できません。  LOB/CLOB データ型でサポートされる変換は、ターゲットに列をドロップする方法 のみです。 • ここで説明する方法は、タスク内の単一のテーブルまたは少数のテーブルに固有の変換 に使用できます。複数のテーブルに対して同様の変更を行う場合は、グローバル変換 ルール ウィザードの起動を参照してください。
  • 10.
    10 [Transform]タブの使用 [Transform] タブでは、Replicateの組み込み機能を使用して変換を定義できます。 [Table Settings]ウィンドウの[Transform] タブは、次の要素で構成されています。 • Input: 変換を実行できる列が一覧表示されます。 • Output: このテーブルは、変換を実行するテーブルの列に対して定義された出力を示 しています。このファイルには、次の列が含まれます。  Key : 列が一意インデックスのセグメントであるかどうかを示します。一意イン デックスのセグメントである列の横に、キーアイコンが表示されます。キーを追加 および削除する列をクリックします。  Name: 列の名前。列の名前を変更するには、変更する列名を含むフィール ドを選択し、列の名前を変更する場合、または列が計算される (テーブルに追 加) 場合は、この列に新しい名前を入力します。  Type: 列のデータ型。列のデータ型を変更するには、変更するデータ型の フィールドを選択し、新しいデータ型を選択します。詳細については、次の表を 参照してください。  Expression: SQLite 演算子を使用して列のデータを定義する式。式の 作成方法については、次の表を参照してください。 ※Replicateの組み込み変換で提供されない機能を必要とするお客様は、独自の変換を作成し、その変換にExpression Builderからアクセスできます。ユーザー定義変 換 (基本的なプログラミングスキルが必要) を作成する方法については、「ユーザー定義変換」を参照してください。
  • 11.
    11 制限事項と考慮事項 制限事項と考慮事項 • 列の削除、変更の保存、および同じ名前の列の追加、および削除された列のデータに対応する式の定義はサポートされていません。誤って列を 削除した場合は、式を指定せずに列を再度追加するだけです。 • タスクを停止し、テーブルの1 つにメタデータ変換を定義する場合 (列の削除など)、タスクを再開する前に、[Task Settings] の[Full Load Settings] タブで[DROP and CREATE table] オプションが選択されていることを確認します(デフォルト)。 • 同種レプリケーションタスク (Oracle to Oracle など) では、1 つのテーブル列を変更する (列のデータ型や長さなど) は、テーブル全体の同質 性を損ないます。
  • 12.
    12 変換オプション 次の表は、[Transform] タブで使用できる変換オプションを示しています。 目的 必要な手順 列の名前を変更する• 変更するテーブル列の[Name]列を選択します。新しい名前を入力します。 • 名前が変更されると、右上隅が青に変わります。元の名前を表示するには、マウス ポインタをフィールドの上に 置くと、元の名前が表示されます。 列を主キー/固有キーとして設定するか、列の主キー/一意キーを無効にす る 1. [Output] テーブルで目的の行を選択し、[Key] 列のセルをクリックします。 2. キーアイコンが表示されます。 3. 追加の列に主キー/一意キーを設定するには、この手順を繰り返します。 4. 主キー/一意キーを無効にするには、キーアイコンをクリックします。 列のデータ型を変更する • 変更するテーブル列の[Type]列を選択し、ドロップダウン リストから新しいデータ型を選択します。選択した データ型が、その列のデータと互換性があることを確認します。 • Qlik Replicateデータ型の詳細については、「Replicate data types」を参照してください。 • ネイティブ エンドポイントからQlik Replicateデータ型へのデータ型マッピングについては、使用しているエンドポ イントの章を参照してください。 新しい列を追加する • [Add Column]をクリックして新しい列を追加します。列を追加すると、Nameは空白になり、Typeは string(50)として表示されます。 • [Name] 列に新しい列の名前を入力します。必要に応じて (列データに基づいて) [Type] 列をクリックし、 リストからデータ型を選択します。 既存の列を追加する • [Input] ペインで、1 つ以上の列を選択し、右向きの矢印ボタンをクリックします。 • すべての列を追加するには、右向きの二重矢印をクリックします。 • デフォルトでは、すべてのテーブル列がOutputリストに含まれます。一部の列のみを含めるには、 [Transform]タブの上部にある[By default include all columns] チェック ボックスをオフにします。 これにより、すべての列がリストから削除されます。必要に応じて、既存の列を追加し直すことができます。 • 列がテーブル レベルで明示的に追加され、グローバル レベルで (グローバル変換ルールを使用して) 削除され た場合、その列はターゲットに作成されますが、データは作成されません。
  • 13.
    13 変換オプション 次の表は、[Transform] タブで使用できる変換オプションを示しています。 目的 必要な手順 列を削除する• [Output] ボックスの一覧で、削除する列の行を選択し、左向きの矢印ボタンをクリックします。 • すべての列を削除するには、左向きの二重矢印をクリックします。主キー/一意インデックスとして定義されている列を除くすべての列が削除されること に注意してください。 ターゲット列との一意インデックス セグメントの追加/削除 • キー アイコンは、一意インデックスのターゲット列セグメントを示します。 • 一意インデックスセグメントを追加するには、セグメントを追加するターゲット列の左側にあるKey列をクリックします。キーアイコンが表示されます。 • 一意のインデックス セグメントを削除するには、セグメントを削除するターゲット列の左側にあるキーアイコンをクリックします。キーアイコンが消えます。 ターゲット エンドポイントの列のデータを再計算する • データを変更するテーブル列がある行の[Expression] 列をクリックします。SQLite 構文を使用して式を入力します。 • 式の作成については変換の式の作成および変換での SQLite 構文の使用を参照してください。 • 計算式を追加したら、式をテストできます。 特定の入力列のデータ型を変更する ※ IBM DB2 for iSeries および IBM DB2 for z/OS ソース・エンドポイントでのみサポートされます。 • これは、ソース列が文字型として定義されているが、その列に格納されているデータがバイナリまたは逆の場合に必要です。 ※ ソース列の型が文字列、WSTRING、CLOB、または NCLOB である場合は、Character Setを選択する必要があります。 • [Input] テーブルで、[Type]列の該当するセルをクリックし、必要に応じてドロップダウン リストから[STRING]または[Byte]を選択します。 ※ Inputテーブルで列のTypeを変更する場合は、Outputテーブルの対応する列に対しても同じタイプを設定する必要があります。 • STRING を選択した場合は、以下で説明する文字セットも変更できます。 ※ 変更されたセルの右上隅に三角形が表示されます。元の値を表示するには、三角形をクリックします。 特定の入力列の文字セットを変更する ※ IBM DB2 for iSeries および IBM DB2 for z/OS ソース・エンドポイントでのみサポートされます。 • これは、ソース文字の列が誤ってエンコードされている場合に必要です。たとえば、ソース文字列がCCSID Xでエンコードされているとして記述されて いるが、その列に格納されているデータが実際にはCCSID Yにエンコードされている場合です。 • カスタム文字セットは、以下の「カスタム文字セットの設定」で説明されているように設定することもできます。入力テーブルで次の手順を実行します。 1. [Type] 列の該当するセルをクリックし、ドロップダウン リストから[String] を選択します。 2. [Character Set] 列の該当するセルをクリックし、ドロップダウン リストから適切な文字セットを選択します。 ※ 選択したTypeと互換性のある文字セットのみが選択可能になります。 3. 変更されたセルの右上隅に三角形が表示されます。元の値を表示するには、三角形をクリックします。
  • 14.
    14 カスタム文字セットの設定 以下の手順は、IBM DB2 foriSeries および IBM DB2 for z/OS ソース・エンドポイントでのみサポートされます。 ソース表が誤った CCSID で定義されており、正しい定義が実際に UCM ファイルにある場合は、以下のステップを実行します。 1. 拡張子 .ucmのマッピング データ ファイルを作成します。 ※ 既存の UCM ファイルを編集する場合は、<code_set_name>の値および<icu:alias>プロパティも変更する必要があります。ファイルに <icu:alias>プロパティが含まれていない場合は、<code_set_name>プロパティの値を変更するだけで済みます。 2. 次のコマンドを実行して、UCM ファイルの CNV ファイルを作成します。 <product_dir>¥bin¥makeconv.exe -v <file_name>.ucm 例: "c:¥Program Files¥Attunity¥Replicate¥bin¥makeconv.exe" -v 1047_EX.ucm これにより、UCM ファイルと同じ名前の CNV ファイルが作成されます (例: 1047_EX.cnv)。 3. ファイルを次の場所にコピーします。 <product_dir>¥bin¥icudt58l ※ ファイルの複製チャネルを使用する場合、ファイルは両方のReplicateサーバー上の同じ場所にコピーする必要があります。 4. Qlik Replicate UI サーバー サービスを再起動します。 5. [文字セット] ドロップダウン リストからカスタム文字セットを選択します。CNV ファイル名の後に"Custom" という語が続くものとして表示されます 例: 1047_EX.cnv(Custom)
  • 15.
    15 変換での列のイメージ前データの使用 • 変換では、列のイメージ前データを使用できます。これは、イメージ前のデータをターゲットに格納する必要がある場合に便利です。これを行うには、 Outputテーブルの[Expression] 列で、次の形式でソース列名を指定します。 $BI__MyColumn •ここで $BI__は必須プレフィックス (レプリケーションがイメージ前のデータをキャプチャするように指示します) で、MyColumnはソース列名です。 • 既存のターゲット列に前イメージデータを格納できますが、前の画像データを格納する新しいターゲット列を作成することをお勧めします([Add Column]ボタンを使用)。
  • 16.
    16 変換の式の作成 式を使用して、新しい列または再計算された列の内容を定義します。 1. [Transform] タブで、式を作成する列を含む行を選択、もしくは[AddColumn]をクリックして新しい列を追加します。 2. [Expression] 列のボタンをクリックします。Expression Builderが開きます。
  • 17.
    17 変換での SQLite 構文の使用 次の表は、変換でサポートされるSQLite 演算子の一覧です。 演算子 説明 || • 文字列を連結します。 FIRST_NAME||LAST_NAME PHONE_NUMBER||<Office のみ> (電話番号に文字列 Office のみ追加します)。 + • 2 つの値を加算します。 DEPARTMENT_ID+100 (各 ID 番号に 100 を加算します)。 • この演算子を使用する式で使用される列は、数値データ型である必要があります。 - • 別の値から値を減算します。 MANAGER_ID-100 (各 ID 番号から 100 を減算します)。 • この演算子を使用する式で使用される列は、数値データ型である必要があります。 % • 除算式の残りの部分を値として使用します。 %SALARY/7 (Salary 列の値を 7 で除算し、式の剰余を列値として使用します)。 / • ある値を別の値に分割します。 SALARY/.16 (給与列の値を .16 で割ります。) • 除算式の 2 つの値が整数 (10 進数の後に数字のない 2 つの NUMERIC 列) であり、結果が小数値である場合、 返される結果は 0 になります。 * SALARY*.16 (給与列の値に .16 を乗算します。これは、給与から差し引かれる税の計算に使用できます)。 SQLite 構文の詳細については、SQLite のドキュメントを参照してください。
  • 18.
  • 19.
    19 フィルタの使用 フィルタを使用すると、ソース テーブルの列の値に基づいてレプリケーションタスクのレコードを含めたり除外したりできるため、必要な特定のデータのみ をレプリケートできます。 フィルタを作成する場合、次の制限が適用されます。 • 右から左に表示する言語の列の計算では、フィルタはサポートされていません。 •フィルターは、変更できない列にのみ適用できます。 • 変更可能な列のフィルター:  列内の特定の行を除外/含めるフィルターを作成すると、最初に除外/含まれていた行が後で変更された場合でも、指定された 行は常に除外/含まれます。たとえば、"Age" という列に行 "1-10" を除外または含める選択をした場合、その行が後で "11- 20" に変更された場合、データが同じでなくても、行は除外/含まれます。  さらに、フィルタースコープの外側の行が変更された (つまり、更新または更新された後に削除された) 場合は、フィルターで定義 されているとおりに除外/組み込まれる必要があります。 したがって、たとえば、5 未満の行を除外/含めるフィルタを作成し、行 6 を -6 に変更した場合、(フィルタの条件範囲に含まれている場合でも、その行は D をレプリケートしません) 。 • LOB 列にフィルターを適用できません。
  • 20.
  • 21.
    21 Table Settings: Filter Filterタブには、次の情報が含まれています。 •Data Columns リスト: このリストには、データをフィルター処理するテーブルの列の一覧が含まれています。 • Source: このタブには、テーブル内の元のソース列が表示されます。 • Header: このタブには、使用可能なヘッダー列が表示されます。これらの列を使用してフィルターを作成し、式に含めることができます。こ れらのヘッダー列の詳細については、「ヘッダー」を参照してください。 • Calculated: このタブには、テーブルに追加された列が一覧表示されます。変換を使用して列を追加します。詳細については、「単一の テーブル/ビューの変換の定義」を参照してください。 • Filter Conditionsテーブル: このテーブルには、次の列があります。 • Name: データをフィルタする列の名前。 • Type: 列のデータ型。 • Include/Exclude: この列のフィルタされたデータを含めるか除外するかを指定します。 • Ranges:フィールドの右側にあるボタンをクリックして、範囲ビルダを開きます。範囲ビルダでの値または範囲の作成については、フィルタ範 囲の追加または削除を参照してください。 • フィルター範囲の手動入力の詳細については、フィルター処理で SQLite 構文を使用するを参照してください。 • Record Selection Condition: 複数の列を含めることができる複雑な条件を入力します。条件が TRUE と評価され、受け入れられる必要 があります。条件は、SQLite 演算子を使用するか、式ビルダを使用して作成できます。SQLite 演算子の使用については、1 つ以上の列のレ コード選択条件の作成を参照してください。 次の図は、[Table Settings]ウィンドウの [Filter] タブの情報の例です。
  • 22.
    22 指定した列のFilter Conditionの作成 作業しているテーブルの単一の列に対して単純な条件を作成できます。範囲または特定の値の任意の組み合わせをフィルターに含め、定義されたデータ を含めるか除外するかを決定できます。 フィルタ条件を作成するには: 1. データ列の一覧から列を選択し、[FilterConditions] テーブルの右側にある矢印をクリックします。 2. 列を削除するには、[Filter Conditions]テーブルで列をクリックし、左向きの矢印をクリックします。[Include/Exclude] 列または [Values] 列にこの列に入力されたデータも削除されます。 3. [Include/Exclude]列をクリックして、この条件を満たすデータを含めるか除外するかを選択します。 4. [Ranges] 列の [Edit Ranges] ボタンをクリックします。 5. <Name> <Include|Exclude> Rangesウィンドウが開きます。
  • 23.
    23 Record Selection Conditionを作成するには: 1.[Data Columns]リストから、ソース列、ヘッダー列、または集計列を選択し、[Record Selection Condition] ウィンドウの左にある矢印をクリックします。 2. 条件を作成するには、<や=などの SQLite 演算子を使用します。条件を作成する必要がある場合は、任意の量の文字列または列を使用します。 例1) $EMPLOYEE_ID < 100 AND $SALARY > 100,000 この場合、これらの条件の両方を満たす行のみがレプリケーションタスクでレプリケートされます。 例2) $EMPLOYEE_NAME IS ’Sm_th’ SQL 検索パターン文字列を使用する例を示します。この条件を満たす行のみが複製されます。 1つ以上の列のRecord Selection Condition の作成
  • 24.
    24 1つ以上の列のRecord Selection Conditionの作成 Expression Builderを使用してRecord Selection Conditionを作成するには: • [Open Expression Builder]をクリックします。このボタンは、レコード選択条件ボックスの直下にあります。「Expression Builderを使用する」 の「式を作成する」の指示に従います。
  • 25.
    25 1つ以上の列のRecord Selection Conditionの作成 レコード選択条件は、式エディタを使用して手動で作成することも、あるいはそのいずれかを使用して作成することもできます。 文字列を入力する際には、次の特殊文字を使用できます。 •%: 0 個以上の文字の任意の文字列に一致します。たとえば、Mc% は Mcで始まるすべての名前を検索するか、%bob%にbobを含むすべての 名前を含めます。 • _:単一の文字に一致します(ワイルドカードとして)。たとえば、「Sm_th」には、Smで始まり、thで終わるSmithなどの名前が含まれます。アンダース コア文字を検索するには、[_]" を使用します。 • [..]: 範囲または文字のセットを含みます。たとえば、[CK]ars[eo]には、Carsen, Karsen, Carson, Karsonいう名前が含まれており、または [M-Z]ingerでは、 Ringer, Singer, Zinger.など、MとZの間の最初の文字で終わるすべての単語が含まれています。 詳細については、Transact-SQL の使用方法に関するドキュメントを参照してください。 レコード選択条件フィルターの作成に SQLite 演算子を使用できる内容についてはSQLite 構文のフィルタリングを参照してください。
  • 26.
    26 特定の列にのみ更新を適用 特定の列が変更された場合など、ユーザー定義条件が満たされた場合にのみ、UPDATE を適用するようにレプリケートを指示する式を定 義できます。これは、ソース内に、ユーザーがターゲットに関連しないと判断した更新が多く存在する場合に便利です。 制限 • イメージ前データがない列(LOB 列など) はサポートされません。 • 次のソース (前イメージ レコードをサポートしないソース) はサポートされません。 • CDCを使用したODBC • Teradata • 既存の式ビルダーおよびフィルターの制限に従う • コンテンツベースのフィルタリングは、データの損失やデータの破損につながる可能性があります。たとえば、主キーの値が変更された場合 (UPDATE 操作)、式で指定された列が変更されなかった場合、式は UPDATE を無視する可能性があります。この場合、後で式で指 定された列に変更が適用された場合でも、古い行の内容を持つ "ファントム" 行が残ります。
  • 27.
    27 特定の列にのみ更新を適用する場合の操作方法 列 c1-c10を持つtable1という名前のソース テーブルを使用しているが、ターゲットの列c7、c8、c9 の更新のみが必要であると仮定します。 これを行うには、次の操作を行う必要があります。 1. Table Settingsを開き[Filter] タブを選択します。 2.タブの右下にある[Expression Builder] ボタンをクリックします。 Expression Builderが開きます。 3.必要に応じて、[Headers] タブを選択します。 ※ [Headers] タブを選択するオプションは省略可能ですが、タブの左側の列をダブルクリックするだけで、式に$AR_H_OPERATIONを追加できます (手順 4 で必要な場合)。 4. [Build Expression]ペインに次の式を入力し、[OK]をクリックします。 ($AR_H_OPERATION != 'UPDATE') OR (($AR_H_OPERATION = 'UPDATE') AND (( $BI__c7 != $c7) OR ( $BI__c8 != $c8) OR ( $BI__c9 != $c9))) 上記の式は、次のいずれかに該当する場合にのみ、c7、c8、c9 に変更が適用されることを意味します。 1. 操作は UPDATE ではありません。 2. UPDATE 命令の結果、c7、c8、または c9の値が変更されました。 ※ 式で使用する場合、Before-Image 列の先頭に$BI__を付ける必要があります。UPDATE 以外の操作の場合、指定された列の値は NULL になります。
  • 28.
    28 フィルタ範囲の追加または削除 範囲ビルダを使用して、[範囲] 列に 1つ以上の値を追加できます。リスト内のいずれかの範囲に一致する値は、レプリケーションに含まれます。 範囲ビルダを使用するには: 1. [Table Settings]ウィンドウの [Filter]タブで、フィルタする列を選択します。詳細については、「フィルタの使用」を参照してください。 2. [Ranges] 列の右側にあるボタンをクリックします。範囲ビルダーが開きます。 3. [Add Range]をクリックします。表示されたドロップダウン リストから次のいずれかを選択します。 条件 表示 説明 Equal to Equal to = [N] 選択した列の値が入力した値と等しい場合、 [ Include/Exclude外] 列で選択したオプ ションに応じて、レプリケーションタスクに結果が含 まれるか除外されます。 Between Between [N] - [N] 入力した 2 つの値の間の値が列に含まれている 場合は、結果は[ Include/Exclude]列で 選択したオプションに応じてレプリケーションタスク に含まれるか除外されます。 Less than or equal to Less than or Equal to =< [N] 選択した列の値が入力した値以下の場合、 [Include/Exclude] 列で選択したオプション に応じて、レプリケーションタスクに結果が含まれる か除外されます。 Greater than or equal to Less than or Equal to =< [N] 選択した列の値が入力した値以上の場合、 [Include/Exclude] 列で選択したオプション に応じて、レプリケーションタスクに結果が含まれる か除外されます。
  • 29.
    29 フィルタ範囲の追加または削除 範囲ビルダからフィルタ範囲を削除するには: 1. [Table Settings]ウィンドウの[Filter] タブで、削除するフィルタ条件を含む列を選択します。 2. [Range] 列の右側にあるボタンをクリックします。範囲ビルダーが開きます。 3. 削除する範囲の横にある[X]をクリックします。削除された範囲はリストから削除されます。
  • 30.
    30 フィルタリングでの SQLite 構文の使用 演算子説明 < より小さい。 $SALARY<100000 <= 以下の値 $SALARY<=100000 > より大きい $SALARY>100000 >= 次の値以上の値です $SALARY>=100000 = 次の値に等しい $SALARY=100000 != または<> と等しくない $SALARY!=100000 IS と同じ $HIRE_DATE IS 2014-09-29 一方または両方のオペランドが NULL でない限り、IS は = と同じ関数を実行します。この場合、両方のオペランドが NULL の場合、IS 演算子は 1 (true) と評価さ れます。一方のオペランドが NULL で、もう一方のオペランドが NULL でない場合、IS 演算子は 0 (false) と評価されます。 IS NOT と同じではありません $HIRE_DATE IS NOT 2014-09-29 一方または両方のオペランドが NULL でない限り、IS は!=と同じように機能しません。この場合、両方のオペランドが NULL の場合、IS NOT 演算子は 0 (false) と 評価されます。一方のオペランドが NULL で、もう一方のオペランドが NULL でない場合、IS NOT 演算子は 1 (true) と評価されます。 AND 両方のオペランドが真です。 $MANAGER_ID AND EMPLOYEE ID >100 OR いずれかのオペランドが真です。 $MANAGER_ID OR EMPLOYEE ID >100 Qlik Replicateは、レコード選択条件フィルターを作成する際に、次の SQLite 演算子をサポートします。 ※以下に示すように、各入力の前に ($) を置く必要があります。 ※SQLite 構文の使用方法の詳細については、SQLite のドキュメントを参照してください。
  • 31.
  • 32.
    32 Parallel Load • FullLoadレプリケーションモードでは、テーブルをセグメントに分割し、セグメントを並列でロードすることにより、大きなテーブルのレプリケー ションを高速化できます。 • テーブルは、データ範囲、パーティション、またはサブパーティション別にセグメント化できます。
  • 33.
    33 サポートされているエンドポイント タスクは、次のソースエンドポイントとターゲットエンドポイントの組み合わせで定義する必要があります。 サポートされているソース エンドポイント: • Oracle •Microsoft SQL Server • MySQL • PostgreSQL ※パーティションまたはサブパーティションによるテーブルセグメンテーションは、 PostgreSQL ソースエンドポイントではサポートされていません。 • IBM DB2 for LUW • IBM DB2 for z/OS ※パーティションまたはサブパーティションによるテーブルセグメンテーションは、 IBM DB2 for z/OSソースエンドポイントではサポートされていません。 • SAP Sybase ASE • SAP Application • SAP Application (DB) • Amazon RDS for Microsoft SQL Server • Teradata サポートされているターゲット エンドポイント: • Oracle • Microsoft SQL Server • Hadoop (Hortonworks, Cloudera, and MapR) • PostgreSQL • Google Cloud SQL for PostgreSQL • Sybase ASE • Vertica • MySQL • File • Amazon S3 • Amazon Redshift • Amazon EMR • Databricks on AWS • Microsoft Azure SQL Database • Microsoft Azure Database for MySQL • Microsoft Azure ADLS • Microsoft Azure Database for PostgreSQL • Microsoft Azure Databricks • Microsoft Azure Data Warehouse • Microsoft Azure HDInsight • Google Cloud SQL for MySQL • Google Cloud BigQuery • Google Dataproc • Google Cloud Storage • Hortonworks Data Platform (HDP) • Snowflake on AWS • Snowflake on Azure • Snowflake on Google • Cloudera Data Platform (CDP) Private Cloud
  • 34.
    34 データ範囲でセグメントの境界を定義する場合 1. [Parallel Load]タブの[Select Parallel Load Method] セクションで、[Use Data Ranges] を選択します。 2. [Select Details] セクションで、[Select Segment Columns] をクリックします。 3. [Columns]ウィンドウが開きます。 4. すべてのエンドポイントで、[Unique Index column (一意のインデックス)] 列が自動的に選択されます。範囲を区切るためにデータを使用する列を選択し、[OK] をクリックします。 ※インデックス付き列を選択すると、パフォーマンスが大幅に向上します。 ※最大 10 列まで選択できます (複数選択がサポートされています) ※NULL 値のレコードはレプリケートされません ※範囲ごとにセグメントを定義するために、以下のデータ・タイプを使用することはできません: DOUBLE、FLOAT、および LOB (BLOB、CLOB、NCLOB)
  • 35.
    35 データ範囲でセグメントの境界を定義する場合 5. [Define SegmentBoundaries] セクションで、次の手順を実行します。 a. [Add Segment]をクリックしてセグメントを追加します。選択した列は、表見出 しとして表示されます。 b. 選択した列にセグメントの上位データ範囲を入力します。 c. 必要に応じて、セグメントを追加します。 d. [Validate] をクリックして、指定したデータがソース列のデータ型に対応している こと、および定義されたすべてのセグメントに値が含まれていることを検証します。 e. セグメントを削除するには、目的のセグメントを選択し、[Delete] をクリックします。 6. [OK] をクリックして設定を保存します。 ※[Use Data Ranges] を選択すると、すべての列にデータ範囲が定義されていない場 合でも、すべてのテーブル データがレプリケートされます。 ※DATE 列の値は、ソースでサポートされている形式で入力する必要があります。たとえば、Oracle ソース の場合、正しい形式は次のようになります。  ALTER SESSION SET NLS_DATE_FORMAT: ‘YYYY-MM-DD HH24:MI:SS’ (YYYY-MM-DDだけでも有効であることを指定)  ALTER SESSION SET NLS_TIMESTAMP_FORMAT: YYYY-MM-DD HH24:MI:SS.FF9'  ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT: 'YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM’
  • 36.
    36 データ範囲でセグメントの境界を定義する使用例 Column_1 Column_2 Column_3 1030 105 20 20 120 100 12 99 次のセグメントが[Define Segment Boundaries]テーブルで定義されているとします。 この場合、ロードセグメントごとに次の「WHERE」句が作成されます。 • Segment 1: ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) • Segment 2: NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120))) • Segment 3: NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 30) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99))) • Segment 4: NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
  • 37.
    37 すべてのテーブル パーティションによるセグメント境界を定義する場合 テーブルが既にパーティション化されていることが確実な場合にのみ、この方法を選択してください。 1. [ParallelLoad] タブの[Select Parallel Load Method] セクションで、[Use Partitions] を選択します。 2. [Select Partitions]セクションで、[Use all table partitions] を選択します。これにより、ソース データベースに既に存在するパーティションに 従ってテーブルがセグメント化されます。 3. 次のいずれかを選択します。 • Use main partitions • Use sub partitions (ソース データベースがサブパーティションをサポートしていない場合、このオプションは無効になります。) 4. [OK] をクリックします。
  • 38.
    38 特定のパーティションでセグメント境界を定義する場合 テーブルが既にパーティション化されていることが確実な場合にのみ、この方法を選択してください。 1. [Parallel Load]タブの[Select Parallel Load Method] セクションで、[Use Partitions] を選択します。 2. [Select Partitions]セクションで、[Specify partitions] を選択します。これにより、指定したソース パーティションに従ってデータが分割されます。 ※ [Specify partitions]を選択すると、指定したパーティションのみがレプリケートされます。 3. [Add Partition]をクリックします。 4. 既存のパーティションまたはサブパーティションの名前を指定します。 5. サブパーティションの名前を指定した場合は、[Sub-Partition] 列のチェック ボックスをオンにします。 ※ ソース データベースがサブパーティションをサポートしていない場合、このチェック ボックスは無効になります。 6. 必要に応じて、追加のパーティション/サブパーティションを追加します。 7. パーティション/サブパーティションを削除するには、パーティション/サブパーティションを選択し、[Delete] をクリックします。 8. [OK] をクリックして設定を保存します。
  • 39.
    39 並列にロードできるセグメント数の調整 並列にロードされるセグメントの数を増減できます。たとえば、[Use all tablepartitions] オプションを選択し、ソース テーブルに 20 個のパーティ ションがある場合、既定の同時実行タスク数 (5) を増やすとパフォーマンスが向上します。 ※ サブタスクは、各セグメント、パーティション、サブパーティションに割り当てられます。 例: 6 つのパーティションを持つテーブルを選択し、 Use Partitions 方法を使用してテーブルをロードすると、5 つのパーティションが並列にロードされ、 同時実行タスクのデフォルト数 (5) に対応します。サブタスクの 1 つが実行を完了すると、6 番目のパーティションのロードに割り当てられます。 現在設定されている値は、[Parallel Load]タブの下部に表示されます。この値は、[Full Load Tuning] タブの [Maximum number of tables to load in parallel] フィールドで変更できます。
  • 40.
  • 41.
  • 42.
  • 43.
    43 Message format • このタブは、サポートされるストリーミングエンドポイントで定義されたタスクでのみ使用できます。 • このようなエンドポイントでタスクを定義する場合、既定の[メッセージのレプリケート]形式をオーバーライドするカスタム メッセージ形式を指定できま す。これは、コンシューマー アプリケーションが特定の形式でメッセージを処理する必要がある場合に役立ちます。 • カスタム メッセージ形式は、タスクレベルまたはテーブル レベルで定義できます。タスクレベルと表レベルの両方で定義されている場合、表に定義さ れたメッセージフォーマットは、タスクに定義されたメッセージフォーマットよりも優先されます。 テーブル レベルでカスタム メッセージを定義するには、次の手順を実行します。 1. テーブルを選択します。 2. [Table Settings]の開きます。 3. [Message Format] タブを選択し、[Change to Table Policy] ボタンをクリックします。 4. メッセージ形式の説明に従ってメッセージ形式を設定します。 5. タスクに定義されたメッセージ形式を使用するには、[Change to Task Policy] ボタンをクリックします。 ※ タスク レベルでのカスタム メッセージの定義については、「メッセージ形式」を参照してください。
  • 44.