データベース取り込みとレプリケーション > データベース取り込みとレプリケーションターゲット - 準備と使用方法 > Amazon S3、Google Cloud Storage、フラットファイル、Microsoft Fabric OneLake、およびADLS Gen2ターゲット上の出力ファイルのカスタムディレクトリ構造
  

Amazon S3、Google Cloud Storage、フラットファイル、Microsoft Fabric OneLake、およびADLS Gen2ターゲット上の出力ファイルのカスタムディレクトリ構造

デフォルトの構造を使用しない場合は、初期ロードジョブ、増分ロードジョブ、または初期ロードと増分ロードの組み合わせジョブがAmazon S3、Google Cloud Storage、フラットファイル、またはMicrosoft Azure Data Lake Storage(ADLS)Gen2、またはMicrosoft Fabric OneLakeターゲットに書き込む出力ファイルのカスタムディレクトリ構造を設定できます。

初期ロード

デフォルトでは、初期ロードジョブは出力ファイルを親ディレクトリの下のtablename_timestampサブディレクトリに書き込みます。Amazon S3、フラットファイル、およびADLS Gen2ターゲットについては、タスクウィザードの[ターゲット]ページで[親としての接続ディレクトリ]チェックボックスが選択されている場合、親ディレクトリはターゲット接続プロパティで指定されます。
Google Cloud Storageターゲットでは、親ディレクトリは、タスクウィザードの[ターゲット]ページにある[バケット]フィールドで指定されたバケットコンテナです。
Microsoft Fabric OneLakeターゲットの場合、親ディレクトリは、Microsoft Fabric OneLake接続プロパティの[レイクハウスのパス]フィールドで指定されたパスです。
ニーズに合うようにディレクトリ構造をカスタマイズできます。例えば、初期ロードの場合、環境に合わせてファイルを整理したり、ファイルを見つけやすくしたりするために、ルートディレクトリや、接続プロパティで指定された親ディレクトリとは異なるディレクトリパスに出力ファイルを書き込むことができます。または、すべてのファイルの自動処理を容易にするために、タイムスタンプ付きのサブディレクトリにファイルを別々に書き込むのではなく、テーブルのすべての出力ファイルをテーブル名の付いたディレクトリに直接統合できます。
ディレクトリ構造を設定するには、取り込みタスクウィザードの[ターゲット]ページにある[データディレクトリ]フィールドを使用する必要があります。デフォルト値は{TableName}_{Timestamp}です。これにより、出力ファイルが親ディレクトリの下のtablename_timestampサブディレクトリに書き込まれます。大文字と小文字を区別しないプレースホルダとディレクトリ名の任意の組み合わせで構成されるディレクトリパターンを作成することにより、カスタムディレクトリパスを設定できます。
デフォルトでは、ターゲットスキーマもデータディレクトリに書き込まれます。スキーマに別のディレクトリを使用する場合は、[スキーマディレクトリ]フィールドでディレクトリパターンを定義することもできます。
データまたはスキーマを保存するためのディレクトリパターンを手動で入力するか、[データディレクトリ]および[スキーマディレクトリ]フィールドの横にある[編集]アイコンを使用し、事前定義されたプレースホルダを使用してディレクトリパターンを指定できます。
次の表に、データおよびスキーマディレクトリパスの作成に使用できるプレースホルダを示します。
パスタイプ
フォルダパス
フォルダ名を入力するか、変数を使用してフォルダ名を作成します。例えば、データを日付、スキーマ、テーブル、およびロード時間で整理するには、{yyyy}/{mm}/{dd}/{SchemaName}/{TableName}/{Timestamp}と入力します
タイムスタンプ
次の値から選択できます。
  • - 初期ロードジョブがターゲットへのデータの転送を開始した日付と時刻は{Timestamp}(yyyymmdd_hhmissms形式)。
  • - ターゲットスキーマ名は{Schema}。
  • - 2桁の年は{yy}。
  • - 4桁の年は{yyyy}。
  • - 2桁の月の値は{mm}。
  • - 月の2桁の日は{dd}。
スキーマ名
次の値から選択できます。
  • - ターゲットスキーマ名は{SchemaName}。
  • - toUpper(SchemaName)は、かっこ内のプレースホルダで表される値を大文字にするのに使用します。
  • - toLower(SchemaName)は、かっこ内のプレースホルダで表される値を小文字にするのに使用します。
テーブル名
次の値から選択できます。
  • - ターゲットテーブル名は{TableName}。
  • - toUpper(TableName)は、かっこ内のプレースホルダで表される値を大文字にするのに使用します。
  • - toLower(TableName)は、かっこ内のプレースホルダで表される値を小文字にするのに使用します。
例1:
Amazon S3ターゲットを使用していて、出力ファイルとターゲットスキーマを、接続プロパティの[フォルダパス]フィールドで指定された親ディレクトリの下にある同じディレクトリに書き込みたいとします。この場合、親ディレクトリはidr-test/DEMO/です。テーブルのすべての出力ファイルを、タイムスタンプなしでテーブル名と一致する名前を持つディレクトリに書き込みたいと考えています。[データディレクトリ]フィールドに入力し、[親としての接続ディレクトリ]チェックボックスを選択する必要があります。次の画像は、タスクウィザードの[ターゲット]ページにあるこの設定を示しています。
この設定に基づき、結果として得られるディレクトリ構造は次のようになります。
例2
Amazon S3ターゲットを使用していて、出力データファイルをカスタムディレクトリパスに書き込み、ターゲットスキーマを別のディレクトリパスに書き込みたいとします。Amazon S3接続プロパティの[フォルダパス]フィールドで指定されたディレクトリをデータディレクトリとスキーマディレクトリの親ディレクトリとして使用するには、[親としての接続ディレクトリ]を選択します。この場合、親ディレクトリはidr-test/DEMO/です。[データディレクトリ]フィールドと[スキーマディレクトリ]フィールドで、data_dirやschema_dirなどの特定のディレクトリ名を使用して、その後にデフォルトの{TableName}_{Timestamp}プレースホルダ値を指定することによって、ディレクトリパターンを定義します。プレースホルダは書き込み先のtablename_timestampディレクトリを作成します。次の画像は、タスクウィザードの[ターゲット]ページにあるこの設定を示しています。
この設定に基づき、結果として得られるデータディレクトリ構造は次のようになります。
結果として得られるスキーマディレクトリ構造は次のようになります。

増分ロード、および初期ロードと増分ロードの組み合わせ

デフォルトでは、増分ロードジョブ、および初期ロードジョブと増分ロードジョブの組み合わせは、サイクルファイルとデータファイルを親ディレクトリの下のサブディレクトリに書き込みます。ただし、カスタムディレクトリ構造を作成して、組織の要件に最も合うようにファイルを整理できます。
この機能は、Amazon S3、Google Cloud Storage、Microsoft Fabric OneLake、またはMicrosoft Azure Data Lake Storage(ADLS)Gen2ターゲットを持つデータベース取り込み増分ロードタスク、および初期ロードと増分ロードの組み合わせタスクに適用されます。
Amazon S3およびADLS Gen2のターゲットについては、タスクウィザードの[ターゲット]ページで[親としての接続ディレクトリ]チェックボックスが選択されている場合、親ディレクトリはターゲット接続プロパティで設定されます。
Google Cloud Storageターゲットでは、親ディレクトリは、タスクウィザードの[ターゲット]ページにある[バケット]フィールドで指定されたバケットコンテナです。
Microsoft Fabric OneLakeターゲットの場合、親ディレクトリは、Microsoft Fabric OneLake接続プロパティの[レイクハウスのパス]フィールドで指定されたパスです。
ニーズに合うようにディレクトリ構造をカスタマイズできます。例えば、データファイルとサイクルファイルは、接続プロパティで指定された親ディレクトリではなく、タスクのターゲットディレクトリに書き込むことができます。または、1)テーブル名を含むサブディレクトリの下にテーブル固有のデータとスキーマファイルを統合する、2)CDCサイクルごとにデータファイルとサマリコンテンツおよび完了したファイルをパーティション化する、または3)リテラル値とプレースホルダを含むパターンを定義することによって完全にカスタマイズされたディレクトリ構造を作成することができます。例えば、SQLタイプの式を実行して時間に基づいてデータを処理する場合は、CDCサイクルごとにパーティション化せずに、すべてのデータファイルをタイムスタンプサブディレクトリに直接書き込むことができます。
増分ロードタスクのカスタムディレクトリ構造を設定するには、取り込みタスクウィザードの[ターゲット]ページで、次のオプションフィールドのいずれかのパターンを定義します。
フィールド
説明
デフォルト
タスクターゲットディレクトリ
増分ロードタスクの出力ファイルを保存するために使用するルートディレクトリの名前。
[親としての接続ディレクトリ]オプションを選択した場合でも、必要に応じてタスクターゲットディレクトリを指定できます。これは親ディレクトリに追加され、データ、スキーマ、サイクル完了、およびサイクルコンテンツディレクトリのルートを形成します。
このフィールドは、次のディレクトリフィールドのいずれかのパターンで{TaskTargetDirectory}プレースホルダが指定されている場合は必須です。
なし
親としての接続ディレクトリ
接続プロパティで指定された親ディレクトリを使用するには、このチェックボックスを選択します。
このフィールドは、Microsoft Fabric OneLakeターゲットでは使用できません。
選択済み
データディレクトリ
データファイルを含むサブディレクトリへのパス。
データファイルとスキーマファイルがCDCサイクルごとにパーティション化されていない場合、ディレクトリパスでは、{TableName}プレースホルダが必要です。
{TaskTargetDirectory}/data/{TableName}/data
スキーマディレクトリ
スキーマファイルをデータディレクトリに保存しない場合は、スキーマファイルを保存するサブディレクトリへのパス。
データファイルとスキーマファイルがCDCサイクルごとにパーティション化されていない場合、ディレクトリパスでは、{TableName}プレースホルダが必要です。
{TaskTargetDirectory}/data/{TableName}/schema
サイクル完了ディレクトリ
サイクル完了ファイルが含まれているディレクトリへのパス。
{TaskTargetDirectory}/cycle/completed
サイクルコンテンツディレクトリ
サイクルコンテンツファイルが含まれているディレクトリへのパス。
{TaskTargetDirectory}/cycle/contents
データディレクトリにサイクルのパーティション化を使用してください
各データディレクトリの下に、CDCサイクルごとにタイムスタンプサブディレクトリが作成されます。
このオプションが選択されていない場合、別のディレクトリ構造を定義しない限り、個々のデータファイルがタイムスタンプなしで同じディレクトリに書き込まれます。
選択済み
サマリディレクトリにサイクルのパーティション化を使用してください
サマリコンテンツサブディレクトリおよび完了サブディレクトリの下に、CDCサイクルごとにタイムスタンプサブディレクトリが作成されます。
選択済み
コンテンツ内の個々のファイルを一覧表示します
コンテンツサブディレクトリの下にある個々のデータファイルを一覧表示します。
[サマリディレクトリにサイクルのパーティション化を使用する]がオフの場合、このオプションはデフォルトで選択されています。タイムスタンプや日付などのプレースホルダを使用してカスタムサブディレクトリを設定できる場合を除き、コンテンツサブディレクトリ内の個々のファイルがすべて一覧表示されます。
[データディレクトリにサイクルのパーティション化を使用する]が選択されている場合でも、必要に応じてこのチェックボックスを選択して、個々のファイルを一覧表示し、CDCサイクルごとにグループ化できます。
[サマリディレクトリにサイクルのパーティション化を使用する]が選択されている場合は選択されません。
[サマリディレクトリにサイクルのパーティション化を使用する]をオフにした場合は選択されます。
ディレクトリパターンは、中括弧{ }で示される大文字と小文字を区別しないプレースホルダと特定のディレクトリ名の任意の組み合わせで構成されます。カスタムデータディレクトリまたはスキーマディレクトリ式を指定するには、フィールドで使用可能な[編集]アイコンを使用して、リストされたプレースホルダからディレクトリパターンを選択します。
パスタイプ
フォルダパス
接続プロパティで指定されたS3フォルダパスの代わりに使用する、ターゲット上のタスク固有のベースディレクトリとして{TaskTargetDirectory}を入力します。
タイムスタンプ
次の値から選択できます。
  • - 日付と時刻を表す{Timestamp}、形式はyyyymmdd_hhmissms
  • - ターゲットスキーマ名は{Schema}。
  • - 2桁の年は{yy}。
  • - 4桁の年は{yyyy}。
  • - 2桁の月の値は{mm}。
  • - 月の2桁の日は{dd}。
ディレクトリパターンで{Timestamp}、{yy}、{yyyy}、{mm}、および{dd}を使用し、ディレクトリ名に特定の日付と時刻の情報を挿入してデータを整理します。データ、コンテンツ、および作成したディレクトリのディレクトリパターンでこれらのプレースホルダを指定すると、これらのプレースホルダはCDCサイクルが開始された時刻を表します。スキーマディレクトリの場合、これらのプレースホルダは、サイクルだけでなく、CDCジョブ全体が開始された時刻を表します。
スキーマ名
次の値から選択できます。
  • - ターゲットスキーマ名は{SchemaName}。
  • - toUpper(SchemaName)は、かっこ内のプレースホルダで表される値を大文字にするのに使用します。
  • - toLower(SchemaName)は、かっこ内のプレースホルダで表される値を小文字にするのに使用します。
テーブル名
次の値から選択できます。
  • - ターゲットテーブル名は{TableName}。
  • - toUpper(TableName)は、かっこ内のプレースホルダで表される値を大文字にするのに使用します。
  • - toLower(TableName)は、かっこ内のプレースホルダで表される値を小文字にするのに使用します。
注:
タイムスタンプ、年、月、および日のプレースホルダは、データ、コンテンツ、および完了ディレクトリのパターンで指定した場合はCDCサイクルの開始時点、スキーマディレクトリパターンで指定した場合はCDCジョブの開始時点を表します。
例1:
タスクウィザードに表示される増分ロードジョブ、または初期ロードジョブと増分ロードジョブの組み合わせのデフォルトのディレクトリ設定を使用するつもりだとします。ターゲットタイプはAmazon S3です。[親としての接続ディレクトリ]チェックボックスがデフォルトで選択されているため、Amazon S3接続プロパティの[フォルダパス]フィールドで指定されている親ディレクトリパスが使用されます。この親ディレクトリはidr-test/dbmi/です。{TaskTargetDirectory}プレースホルダは、後続のディレクトリフィールドのデフォルトパターンで使用されるため、タスクターゲットディレクトリ名(この場合はs3_target)も指定する必要があります。{TableName}プレースホルダはデフォルトのパターンに含まれているため、データディレクトリとスキーマディレクトリ内のファイルはテーブル名でグループ化されます。また、サイクルのパーティション化が有効になっているため、データディレクトリ、スキーマディレクトリ、およびサイクルサマリディレクトリ内のファイルは、CDCサイクルごとにさらに分割されます。次の画像は、指定されたタスクターゲットディレクトリ名を除く、タスクウィザードの[ターゲット]ページのデフォルトの設定を示しています。
この設定に基づき、結果として得られるデータディレクトリ構造は次のようになります。
データフォルダをドリルダウンしてから、そのフォルダ内のテーブル(pgs001_src_allint_init)をドリルダウンすると、データサブディレクトリとスキーマサブディレクトリにアクセスできます。
データフォルダをドリルダウンすると、データファイルのタイムスタンプディレクトリにアクセスできます。
サイクルをドリルダウンすると、サマリコンテンツサブディレクトリと完了サブディレクトリにアクセスできます。
例2
スキーマディレクトリを除くすべてのディレクトリパスにサブディレクトリ「demo」と「d1」を追加する増分ロードジョブ、または初期ロードジョブと増分ロードジョブの組み合わせ用のカスタムディレクトリ構造を作成して、デモ用のファイルを簡単に見つけられるようにしたいと考えています。[親としての接続ディレクトリ]チェックボックスが選択されているため、Amazon S3接続プロパティの[フォルダパス]フィールドで指定されている親ディレクトリパス(idr-test/dbmi/)が使用されます。{TaskTargetDirectory}プレースホルダは、後続のディレクトリフィールドのパターンで使用されるため、タスクターゲットディレクトリも指定する必要があります。データディレクトリとスキーマディレクトリ内のファイルは、テーブル名でグループ化されます。また、サイクルのパーティション化が有効になっているため、データディレクトリ、スキーマディレクトリ、およびサイクルサマリディレクトリ内のファイルは、CDCサイクルごとにさらに分割されます。次の画像は、タスクウィザードの[ターゲット]ページにあるカスタム設定を示しています。
この設定に基づき、結果として得られるデータディレクトリ構造は次のようになります。