Azure Data Factory および Synapse Analytics での Common Data Model 形式

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

Common Data Model (CDM) メタデータ システムを使用すると、データとその意味をアプリケーションやビジネス プロセス間で簡単に共有できます。 詳しくは、「Common Data Model」の概要を参照してください。

Azure Data Factory および Synapse パイプラインでは、マッピング データ フローを使用して、Azure Data Lake Store Gen2 (ADLS Gen2) に格納されている model.json およびマニフェスト形式の両方の CDM エンティティのデータの変換を行うことができます。 また、データをパーティション分割されたフォルダーに CSV または Parquet 形式で格納する CDM エンティティ参照を使用して、データを CDM 形式でシンクすることもできます。

Mapping Data Flow のプロパティ

Common Data Model は、マッピング データ フローのインライン データセットとして、ソースとシンクの両方として利用できます。

注意

CDM エンティティを記述する際は、参照として使用する既存の CDM エンティティ定義 (メタデータ スキーマ) が既に定義されている必要があります。 データ フロー シンクでは、その CDM エンティティ ファイルが読み取られ、フィールド マッピング用のシンクにスキーマがインポートされます。

ソースのプロパティ

次の表に、CDM ソースでサポートされるプロパティの一覧を示します。 これらのプロパティは、 [ソース オプション] タブで編集できます。

名前 説明 必須 使用できる値 データ フロー スクリプトのプロパティ
Format 形式は cdm である必要があります はい cdm format
メタデータ形式 データへのエンティティ参照が置かれている場所。 CDM バージョン 1.0 を使用する場合は、manifest を選択します。 1\.0 より前のバージョンの CDM を使用している場合は、model.json を選択します。 はい 'manifest' または 'model' manifestType
ルートの場所: コンテナー CDM フォルダーのコンテナー名 はい String fileSystem
ルートの場所: フォルダー パス CDM フォルダーのルート フォルダーの場所 はい String folderPath
マニフェスト ファイル: エンティティのパス ルート フォルダー内のエンティティのフォルダー パス no String entityPath
マニフェスト ファイル: マニフェスト名 マニフェスト ファイルの名前。 既定値は 'default' いいえ String manifestName
最終更新日時でフィルター処理 最後に変更された日時に基づいてファイルをフィルター処理する場合に選択 no Timestamp modifiedAfter
modifiedBefore
スキーマのリンクされたサービス コーパスが配置されているリンクされたサービス はい (マニフェストを使用する場合) 'adlsgen2' または 'github' corpusStore
エンティティ参照コンテナー その中にコーパスがあるコンテナー はい (ADLS Gen2 でマニフェストとコーパスを使用する場合) String adlsgen2_fileSystem
エンティティ参照リポジトリ GitHub リポジトリ名 はい (GitHub でマニフェストとコーパスを使用する場合) String github_repository
エンティティ参照ブランチ GitHub リポジトリ ブランチ はい (GitHub でマニフェストとコーパスを使用する場合) String github_branch
コーパス フォルダー コーパスのルートの場所 はい (マニフェストを使用する場合) String corpusPath
コーパス エンティティ エンティティ参照のパス はい String エンティティ
[Allow no files found]\(ファイルの未検出を許可\) true の場合、ファイルが見つからない場合でもエラーはスローされない no true または false ignoreNoFilesFound

ソース変換とシンク変換の両方で "エンティティ参照" を選択する際に、以下の 3 つのオプションからエンティティ参照の場所を選択できます。

  • ローカル - サービスによって既に使用されているマニフェスト ファイルで定義されているエンティティを使用します
  • カスタム - サービスによって使用されているマニフェスト ファイルとは異なるエンティティ マニフェスト ファイルを指定するように求めるメッセージが表示されます
  • 標準 - GitHub に保持されている CDM エンティティの標準ライブラリにあるエンティティ参照を使用します。

シンクの設定

  • 記述するエンティティの定義を含む CDM エンティティ参照ファイルをポイントします。

entity settings

  • サービスでエンティティの記述に使用する出力ファイルのパーティション パスと形式を定義します。

entity format

  • 出力ファイルの場所とマニフェスト ファイルの場所と名前を設定します。

cdm location

Import schema

CDM はインライン データセットとしてのみ利用でき、既定では、関連付けられたスキーマはありません。 列メタデータを取得するには、 [プロジェクション] タブの [スキーマのインポート] ボタンをクリックします。これにより、コーパスによって指定されている列名とデータ型を参照できます。 スキーマをインポートするには、データ フロー デバッグ セッションをアクティブにする必要があり、既存の CDM エンティティ定義ファイルをポイントする必要があります。

シンク変換でデータ フロー列をエンティティ プロパティにマップする場合は、"マッピング" タブをクリックし、"スキーマのインポート" を選択します。 サービスによって、シンク オプションでポイントしたエンティティ参照が読み取られ、これでターゲットの CDM スキーマにマップできるようになります。

CDM sink settings

Note

Power BI または Power Platform データフローに由来する model.json ソース タイプを使用すると、ソース変換から "コーパスのパスが null または空である" というエラーが発生することがあります。 原因は、model.json ファイル内のパーティションの場所のパスで書式に問題がある可能性があります。 これを修正するには、次の手順に従います。

  1. model.json ファイルをテキスト エディターで開く
  2. partitions.Location プロパティを検索する
  3. "blob.core.windows.net" を "dfs.core.windows.net" に変更する
  4. URL の "% 2F" エンコードを "/" に修正する
  5. ADF データ フローを使用する場合は、パーティション ファイル パス内の特殊文字を英数字に置き換えるか、Azure Synapse データ フローに切り替える必要があります

CDM ソース データ フロー スクリプトの例

source(output(
        ProductSizeId as integer,
        ProductColor as integer,
        CustomerId as string,
        Note as string,
        LastModifiedDate as timestamp
    ),
    allowSchemaDrift: true,
    validateSchema: false,
    entity: 'Product.cdm.json/Product',
    format: 'cdm',
    manifestType: 'manifest',
    manifestName: 'ProductManifest',
    entityPath: 'Product',
    corpusPath: 'Products',
    corpusStore: 'adlsgen2',
    adlsgen2_fileSystem: 'models',
    folderPath: 'ProductData',
    fileSystem: 'data') ~> CDMSource

シンクのプロパティ

次の表に、CDM シンクでサポートされるプロパティの一覧を示します。 これらのプロパティは、 [設定] タブで編集できます。

名前 説明 必須 使用できる値 データ フロー スクリプトのプロパティ
Format 形式は cdm である必要があります はい cdm format
ルートの場所: コンテナー CDM フォルダーのコンテナー名 はい String fileSystem
ルートの場所: フォルダー パス CDM フォルダーのルート フォルダーの場所 はい String folderPath
マニフェスト ファイル: エンティティのパス ルート フォルダー内のエンティティのフォルダー パス no String entityPath
マニフェスト ファイル: マニフェスト名 マニフェスト ファイルの名前。 既定値は 'default' いいえ String manifestName
スキーマのリンクされたサービス コーパスが配置されているリンクされたサービス はい 'adlsgen2' または 'github' corpusStore
エンティティ参照コンテナー その中にコーパスがあるコンテナー はい (コーパスが ADLS Gen2 にある場合) String adlsgen2_fileSystem
エンティティ参照リポジトリ GitHub リポジトリ名 はい (コーパスが GitHub にある場合) String github_repository
エンティティ参照ブランチ GitHub リポジトリ ブランチ はい (コーパスが GitHub にある場合) String github_branch
コーパス フォルダー コーパスのルートの場所 はい String corpusPath
コーパス エンティティ エンティティ参照のパス はい String エンティティ
パーティションのパス パーティションが書き込まれる場所 no String partitionPath
フォルダーのクリア 書き込みの前に宛先フォルダーがクリアされるかどうか no true または false truncate
形式の種類 Parquet 形式を指定する場合に選択 no parquet (指定される場合) subformat
列区切り記号 DelimitedText に書き込む場合に、列を区切る方法 はい (DelimitedText に書き込む場合) String columnDelimiter
先頭の行を見出しとして使用 DelimitedText を使用する場合に、列名を見出しとして追加するかどうか no true または false columnNamesAsHeader

CDM シンク データ フロー スクリプトの例

関連付けられているデータ フロー スクリプトは次のとおりです。

CDMSource sink(allowSchemaDrift: true,
    validateSchema: false,
    entity: 'Product.cdm.json/Product',
    format: 'cdm',
    entityPath: 'ProductSize',
    manifestName: 'ProductSizeManifest',
    corpusPath: 'Products',
    partitionPath: 'adf',
    folderPath: 'ProductSizeData',
    fileSystem: 'cdm',
    subformat: 'parquet',
    corpusStore: 'adlsgen2',
    adlsgen2_fileSystem: 'models',
    truncate: true,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> CDMSink

マッピング データ フローのソース変換を作成します。