Azure Data Factory のデータセットDatasets in Azure Data Factory

この記事では、データセットの詳細、データセットを JSON 形式で定義する方法、Azure Data Factory パイプラインで使用する方法について説明します。This article describes what datasets are, how they are defined in JSON format, and how they are used in Azure Data Factory pipelines.

Azure Data Factory を初めて使用する場合は、Azure Data Factory の概要に関するページを参照してください。If you are new to Data Factory, see Introduction to Azure Data Factory for an overview.

概要Overview

データ ファクトリは、1 つまたは複数のパイプラインを持つことができます。A data factory can have one or more pipelines. パイプラインは、1 つのタスクを連携して実行するアクティビティの論理的なグループです。A pipeline is a logical grouping of activities that together perform a task. パイプライン内の複数のアクティビティは、データに対して実行するアクションを定義します。The activities in a pipeline define actions to perform on your data. ここで、データセットとは、アクティビティで入力と出力として使用するデータを単に指定または参照するデータの名前付きビューです。Now, a dataset is a named view of data that simply points or references the data you want to use in your activities as inputs and outputs. データセットは、テーブル、ファイル、フォルダー、ドキュメントなど、さまざまなデータ ストア内のデータを示します。Datasets identify data within different data stores, such as tables, files, folders, and documents. たとえば、Azure Blob データセットは、アクティビティによってデータが読み取られる、Blob Storage 内の BLOB コンテナーと BLOB フォルダーを示しています。For example, an Azure Blob dataset specifies the blob container and folder in Blob storage from which the activity should read the data.

データセットを作成する前に、リンクされたサービスを作成して、データ ストアとデータ ファクトリをリンクする必要があります。Before you create a dataset, you must create a linked service to link your data store to the data factory. リンクされたサービスは、接続文字列によく似ており、Data Factory が外部リソースに接続するために必要な接続情報を定義します。Linked services are much like connection strings, which define the connection information needed for Data Factory to connect to external resources. データセットはリンクされたデータ ストア内のデータの構造を表すもので、リンクされたサービスはデータ ソースへの接続を定義するもの、と捉えることができます。Think of it this way; the dataset represents the structure of the data within the linked data stores, and the linked service defines the connection to the data source. たとえば、Azure Storage のリンクされたサービスは、ストレージ アカウントをデータ ファクトリにリンクします。For example, an Azure Storage linked service links a storage account to the data factory. Azure Blob データセットは、処理対象の入力 BLOB を含む Azure ストレージ アカウント内の BLOB コンテナーとフォルダーを表します。An Azure Blob dataset represents the blob container and the folder within that Azure storage account that contains the input blobs to be processed.

シナリオの例を次に示します。Here is a sample scenario. Blob Storage のデータを Azure SQL Database にコピーするために、2 つのリンクされたサービスを作成します Azure Storage、Azure SQL Database)。To copy data from Blob storage to a SQL database, you create two linked services: Azure Storage and Azure SQL Database. 次に、2 つのデータセットを作成します。Azure Blob データセット (Azure Storage リンクされたサービスを参照するデータセット) と、Azure SQL Table データセット (Azure SQL Database リンクされたサービスを参照するデータセット) です。Then, create two datasets: Azure Blob dataset (which refers to the Azure Storage linked service) and Azure SQL Table dataset (which refers to the Azure SQL Database linked service). Azure Storage と Azure SQL Database の各リンクされたサービスに含まれる接続文字列を、Data Factory が実行時に使用して、Azure Storage と Azure SQL Database それぞれに接続します。The Azure Storage and Azure SQL Database linked services contain connection strings that Data Factory uses at runtime to connect to your Azure Storage and Azure SQL Database, respectively. Azure Blob データセットは、Blob Storage 内の入力 BLOB が含まれた BLOB コンテナーと BLOB フォルダーを示しています。The Azure Blob dataset specifies the blob container and blob folder that contains the input blobs in your Blob storage. Azure SQL Table データセットは、データのコピー先である SQL Database 内の SQL テーブルを示しています。The Azure SQL Table dataset specifies the SQL table in your SQL database to which the data is to be copied.

次の図は、Data Factory でのパイプライン、アクティビティ、データセット、リンクされたサービスの関係を示しています。The following diagram shows the relationships among pipeline, activity, dataset, and linked service in Data Factory:

パイプライン、アクティビティ、データセット、リンクされたサービスの関係

データセットの JSONDataset JSON

Data Factory のデータセットは JSON 形式では次のように定義されます。A dataset in Data Factory is defined in the following JSON format:

{
    "name": "<name of dataset>",
    "properties": {
        "type": "<type of dataset: AzureBlob, AzureSql etc...>",
        "linkedServiceName": {
                "referenceName": "<name of linked service>",
                "type": "LinkedServiceReference",
        },
        "structure": [
            {
                "name": "<Name of the column>",
                "type": "<Name of the type>"
            }
        ],
        "typeProperties": {
            "<type specific property>": "<value>",
            "<type specific property 2>": "<value 2>",
        }
    }
}

次の表では、上記の JSON のプロパティについて説明します。The following table describes properties in the above JSON:

プロパティProperty 説明Description 必須Required
名前name データセットの名前。Name of the dataset. Azure Data Factory - 名前付け規則を参照してください。See Azure Data Factory - Naming rules. はいYes
typetype データセットの型。Type of the dataset. Data Factory でサポートされている型のいずれかを指定します (たとえば、AzureBlob、AzureSqlTable)。Specify one of the types supported by Data Factory (for example: AzureBlob, AzureSqlTable).

詳細については、データセットの型を参照してください。For details, see Dataset types.
はいYes
structurestructure データセットのスキーマ。Schema of the dataset. 詳細については、「データセット スキーマ」を参照してください。For details, see Dataset schema. いいえNo
typePropertiestypeProperties 型のプロパティは型によって異なります (たとえば、Azure Blob、Azure SQL テーブル)。The type properties are different for each type (for example: Azure Blob, Azure SQL table). サポートされている型とそのプロパティの詳細については、「データセットの型」セクションを参照してください。For details on the supported types and their properties, see Dataset type. はいYes

Data Flow の互換性のあるデータセットData flow compatible dataset

注意

Azure Data Factory の Mapping Data Flow は現在パブリック プレビュー機能であり、Azure のお客様の SLA プロビジョニングの対象になりません。Azure Data Factory Mapping Data Flow is currently a public preview feature and is not subject to Azure customer SLA provisions. 現在、Mapping Data Flow は、米国中西部、ブラジル南部、フランス中部、韓国中部の各 Azure リージョンでは利用できません。Currently, Mapping Data Flows are not available in these Azure regions: West Central US, Brazil South, France Central, Korea Central.

データ フローが互換性のあるデータセット型のリストについて、「サポートされているデータセットの型」を参照してください。See supported dataset types for a list of dataset types that are Data Flow compatible. データ フローの互換性があるデータセットでは、変換にあたり詳細なデータセットの定義が必要です。Datasets that are compatible for Data Flow require fine-grained dataset definitions for transformations. そのため、JSON 定義は若干異なります。Thus, the JSON definition is slightly different. _構造体_プロパティの代わりに、データ フローと互換性のあるデータセットには_スキーマ_プロパティがあります。Instead of a structure property, datasets that are Data Flow compatible have a schema property.

データ フロー内のデータセットは、ソースとシンクの変換で使用されます。In Data Flow, datasets are used in source and sink transformations. データセットは、基本的なデータ スキーマを定義します。The datasets define the basic data schemas. データがスキーマを持たない場合は、ソースとシンクのスキーマ ドリフトを使用できます。If your data has no schema, you can use schema drift for your source and sink. データセット内のスキーマは、実際のデータ型と形状を表します。The schema in the dataset represents the physical data type and shape.

データセットからスキーマを定義すると、関連するリンクされたサービスから関連するデータの種類、データ形式、ファイルの場所、および接続情報が得られます。By defining the schema from the dataset, you'll get the related data types, data formats, file location, and connection information from the associated Linked service. データセットから取得されたメタデータは、ソース変換でソース プロジェクションとして表示されます。Metadata from the datasets appears in your source transformation as the source projection. ソースの変換におけるプロジェクションは、定義された名前と型のデータ フローのデータを表します。The projection in the source transformation represents the Data Flow data with defined names and types.

データ フローのデータセットのスキーマをインポートするときに、 [Import Schema] (スキーマのインポート) ボタンをクリックし、ソースまたはローカル ファイルからインポートを選択します。When you import the schema of a Data Flow dataset, select the Import Schema button and choose to import from the source or from a local file. ほとんどの場合、ソースからスキーマを直接インポートします。In most cases, you'll import the schema directly from the source. ただしローカル スキーマ ファイルが既にある (Parquet ファイルまたはヘッダー付きの CSV ) 場合は、そのファイルのスキーマを基に、Data Factory を指示できます。But if you already have a local schema file (a Parquet file or CSV with headers), you can direct Data Factory to base the schema on that file.

{
    "name": "<name of dataset>",
    "properties": {
        "type": "<type of dataset: AzureBlob, AzureSql etc...>",
        "linkedServiceName": {
                "referenceName": "<name of linked service>",
                "type": "LinkedServiceReference",
        },
        "schema": [
            {
                "name": "<Name of the column>",
                "type": "<Name of the type>"
            }
        ],
        "typeProperties": {
            "<type specific property>": "<value>",
            "<type specific property 2>": "<value 2>",
        }
    }
}

次の表では、上記の JSON のプロパティについて説明します。The following table describes properties in the above JSON:

プロパティProperty 説明Description 必須Required
名前name データセットの名前。Name of the dataset. Azure Data Factory - 名前付け規則を参照してください。See Azure Data Factory - Naming rules. はいYes
typetype データセットの型。Type of the dataset. Data Factory でサポートされている型のいずれかを指定します (たとえば、AzureBlob、AzureSqlTable)。Specify one of the types supported by Data Factory (for example: AzureBlob, AzureSqlTable).

詳細については、データセットの型を参照してください。For details, see Dataset types.
はいYes
schemaschema データセットのスキーマ。Schema of the dataset. 詳細は、「Data Flow の互換性のあるデータセット」を参照してください。For details, see Data Flow compatible datasets. いいえNo
typePropertiestypeProperties 型のプロパティは型によって異なります (たとえば、Azure Blob、Azure SQL テーブル)。The type properties are different for each type (for example: Azure Blob, Azure SQL table). サポートされている型とそのプロパティの詳細については、「データセットの型」セクションを参照してください。For details on the supported types and their properties, see Dataset type. はいYes

データセットの例Dataset example

以下の例では、データセットは SQL Database 内にある MyTable という名前のテーブルを表しています。In the following example, the dataset represents a table named MyTable in a SQL database.

{
    "name": "DatasetSample",
    "properties": {
        "type": "AzureSqlTable",
        "linkedServiceName": {
                "referenceName": "MyAzureSqlLinkedService",
                "type": "LinkedServiceReference",
        },
        "typeProperties":
        {
            "tableName": "MyTable"
        },
    }
}

以下の点に注意してください。Note the following points:

  • type が AzureSqlTable に設定されています。type is set to AzureSqlTable.
  • (AzureSqlTable 型に固有の) 型プロパティ tableName が MyTable に設定されています。tableName type property (specific to AzureSqlTable type) is set to MyTable.
  • linkedServiceName は、型が AzureSqlDatabase であるリンクされたサービスを参照します。これは、次の JSON スニペットで定義されています。linkedServiceName refers to a linked service of type AzureSqlDatabase, which is defined in the next JSON snippet.

データセットの型Dataset type

使用するデータ ストアによって、さまざまなデータセットの種類があります。There are many different types of datasets, depending on the data store you use. Data Factory によってサポートされているデータ ストアの一覧は、コネクタの概要に関する記事をご覧ください。You can find the list of data stored supported by Data Factory from Connector overview article. データ ストアをクリックすると、そのデータ ストアに対応するリンクされたサービスとデータセットの作成方法を確認できます。Click a data store to learn how to create a linked service and a dataset for that data store.

前のセクションの例では、データセットの型は AzureSqlTable に設定されています。In the example in the previous section, the type of the dataset is set to AzureSqlTable. 同様に、Azure Blob データセットの場合は、次の JSON に示すように、データセットの型が AzureBlob に設定されます。Similarly, for an Azure Blob dataset, the type of the dataset is set to AzureBlob, as shown in the following JSON:

{
    "name": "AzureBlobInput",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": {
                "referenceName": "MyAzureStorageLinkedService",
                "type": "LinkedServiceReference",
        },

        "typeProperties": {
            "fileName": "input.log",
            "folderPath": "adfgetstarted/inputdata",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ","
            }
        }
    }
}

データセット構造またはスキーマDataset structure or schema

構造体セクションまたはスキーマ (互換性のあるデータフロー) セクションのデータセットは省略可能です。The structure section or schema (Data Flow compatible) section datasets is optional. このセクションでは、列の名前とデータ型のコレクションを含めることで、データセットのスキーマを定義します。It defines the schema of the dataset by containing a collection of names and data types of columns. structure セクションを使用して、変換元から変換先への型の変換や列のマップに使用される型の情報を指定します。You use the structure section to provide type information that is used to convert types and map columns from the source to the destination.

structure の各列には次のプロパティが含まれます。Each column in the structure contains the following properties:

プロパティProperty 説明Description 必須Required
名前name 列の名前です。Name of the column. はいYes
typetype 列のデータ型です。Data type of the column. Data Factory は次の中間データ型を許容値としてサポートしています。Int16、Int32、Int64、Single、Double、Decimal、Byte[]、Boolean、String、Guid、Datetime、Datetimeoffset、および TimespanData Factory supports the following interim data types as allowed values: Int16, Int32, Int64, Single, Double, Decimal, Byte[], Boolean, String, Guid, Datetime, Datetimeoffset, and Timespan いいえNo
cultureculture .NET 型 (Datetime または Datetimeoffset) の場合に使用される .NET ベースのカルチャ。.NET-based culture to be used when the type is a .NET type: Datetime or Datetimeoffset. 既定では、 en-usです。The default is en-us. いいえNo
formatformat .NET 型 (Datetime または Datetimeoffset) の場合に使用される書式設定文字列。Format string to be used when the type is a .NET type: Datetime or Datetimeoffset. 日時の書式を設定する方法については、「カスタム日時書式指定文字列」を参照してください。Refer to Custom Date and Time Format Strings on how to format datetime. いいえNo

Example

次の例は、ソース BLOB データが、CSV 形式であり、userid、name、lastlogindate の 3 つの列を含むことを前提としています。In the following example, suppose the source Blob data is in CSV format and contains three columns: userid, name, and lastlogindate. その型は、それぞれ、Int64、String、Datetime (曜日を表すフランス語の省略形を使用するカスタムの日付/時刻形式) です。They are of type Int64, String, and Datetime with a custom datetime format using abbreviated French names for day of the week.

BLOB データセットの構造を、列の型の定義と共に次のように定義します。Define the Blob dataset structure as follows along with type definitions for the columns:

"structure":
[
    { "name": "userid", "type": "Int64"},
    { "name": "name", "type": "String"},
    { "name": "lastlogindate", "type": "Datetime", "culture": "fr-fr", "format": "ddd-MM-YYYY"}
]

ガイダンスGuidance

構造情報を含めるべき状況と、structure セクションに含める内容については、次のガイドラインに従ってください。The following guidelines help you understand when to include structure information, and what to include in the structure section. データ ファクトリがシンクにソース データをマップする方法および構造体の情報を指定する場合の詳細をスキーマと型マッピングに関するページで確認してください。Learn more on how data factory maps source data to sink and when to specify structure information from Schema and type mapping.

  • 強力なスキーマのデータ ソースの場合は、ソース列をシンク列とマップする必要があって、その列名が同じでない場合にのみ、"structure" セクションを指定します。For strong schema data sources, specify the structure section only if you want map source columns to sink columns, and their names are not the same. このような構造化データ ソースでは、データ自体と共にデータ スキーマと型情報が格納されています。This kind of structured data source stores data schema and type information along with the data itself. 構造化データ ソースの例には、SQL Server、Oracle、Azure SQL Database などがあります。Examples of structured data sources include SQL Server, Oracle, and Azure SQL Database.

    構造化データ ソースでは型情報が既に提供されているため、"structure" セクションを含める場合は、型情報を含めないでください。As type information is already available for structured data sources, you should not include type information when you do include the structure section.
  • スキーマのない、またはスキーマが弱いデータ ソース (Blob Storage 内のテキスト ファイルなど) の場合は、データセットがコピー アクティビティの入力データ セットであるときに "structure" 列を含めます。ソース データセットのデータ型はシンクのネイティブ型に変換する必要があります。For no/weak schema data sources e.g. text file in blob storage, include structure when the dataset is an input for a copy activity, and data types of source dataset should be converted to native types for the sink. また、ソース列をシンク列にマップする必要がある場合に "structure" 列を含めます。And include structure when you want to map source columns to sink columns..

データセットを作成するCreate datasets

データセットの作成には、.NET APIPowerShellREST API、Azure Resource Manager テンプレート、Azure Portal のいずれかのツール、またはいずれかの SDK を使用できますYou can create datasets by using one of these tools or SDKs: .NET API, PowerShell, REST API, Azure Resource Manager Template, and Azure portal

最新バージョンとバージョン 1 のデータセットの比較Current version vs. version 1 datasets

Data Factory と Data Factory バージョン 1 のデータセット間の相違点を次に示します。Here are some differences between Data Factory and Data Factory version 1 datasets:

  • 外部プロパティは最新バージョンではサポートされません。The external property is not supported in the current version. トリガーに置き換えらます。It's replaced by a trigger.
  • ポリシーと可用性のプロパティは、最新バージョンではサポートされません。The policy and availability properties are not supported in the current version. パイプラインの開始時刻は、トリガーによって異なります。The start time for a pipeline depends on triggers.
  • 範囲指定されたデータセット (パイプラインで定義されたデータセット) は、最新バージョンではサポートされません。Scoped datasets (datasets defined in a pipeline) are not supported in the current version.

次の手順Next steps

これらのツールや SDK のいずれかを使用してパイプラインとデータセットを作成する詳しい手順については、次のチュートリアルを参照してください。See the following tutorial for step-by-step instructions for creating pipelines and datasets by using one of these tools or SDKs.