Azure Data Factory または Synapse Analytics を使用して OData ソースからデータをコピーする

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

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

この記事では、Azure Data Factory または Synapse Analytics パイプラインでコピー アクティビティを使用して、OData ソースからデータをコピーする方法について説明します。 この記事は、Copy アクティビティの概要を説明する Copy アクティビティに関する記事に基づいています。

サポートされる機能

この OData コネクタでは、次の機能がサポートされます。

サポートされる機能 IR
Copy アクティビティ (ソース/-) ① ②
Lookup アクティビティ ① ②

① Azure 統合ランタイム ② セルフホステッド統合ランタイム

ソースおよびシンクとしてサポートされているデータ ストアの一覧については、「サポートされているデータ ストア」を参照してください。

具体的には、この OData コネクタは以下をサポートします。

  • OData バージョン 2.0、3.0、および 4.0。
  • 次の認証のいずれかを使用したデータのコピー。匿名基本WindowsMicrosoft Entra サービス プリンシパル

前提条件

データ ストアがオンプレ ミスネットワーク、Azure 仮想ネットワーク、または Amazon Virtual Private Cloud 内にある場合は、それに接続するようセルフホステッド統合ランタイムを構成する必要があります。

データ ストアがマネージド クラウド データ サービスである場合は、Azure Integration Runtime を使用できます。 ファイアウォール規則で承認されている IP にアクセスが制限されている場合は、Azure Integration Runtime の IP を許可リストに追加できます。

また、Azure Data Factory のマネージド仮想ネットワーク統合ランタイム機能を使用すれば、セルフホステッド統合ランタイムをインストールして構成しなくても、オンプレミス ネットワークにアクセスすることができます。

Data Factory によってサポートされるネットワーク セキュリティ メカニズムやオプションの詳細については、「データ アクセス戦略」を参照してください。

はじめに

パイプラインでコピー アクティビティを実行するには、次のいずれかのツールまたは SDK を使用します。

UI を使用して OData ストアにリンク サービスを作成する

次の手順を使用して、Azure portal の UI で OData ストアにリンク サービスを作成します。

  1. Azure Data Factory または Synapse ワークスペースの [管理] タブに移動し、[リンク サービス] を選択して、[新規] を選択します。

  2. OData を検索し、OData コネクタを選択します。

    Screenshot of the OData connector.

  3. サービスの詳細を構成し、接続をテストして、新しいリンク サービスを作成します。

    Screenshot of linked service configuration for an OData store.

コネクタの構成の詳細

以降のセクションでは、OData コネクタに固有の Data Factory エンティティを定義するために使用できるプロパティについて詳細に説明します。

リンクされたサービスのプロパティ

OData のリンクされたサービスでは、次のプロパティがサポートされます。

プロパティ Description 必須
type type プロパティは OData に設定する必要があります。 はい
url OData サービスのルート URL。 はい
authenticationType OData ソースに接続するために使用される認証の種類。 使用可能な値は、 [匿名][基本][Windows] 、および [AadServicePrincipal] です。 ユーザー ベースの OAuth はサポートされていません。 authHeader プロパティで認証ヘッダーを追加で構成することもできます。 はい
authHeaders 追加の認証用 HTTP 要求ヘッダー。
たとえば、API キー認証を使うには、認証の種類として "匿名" を選択し、ヘッダーに API キーを指定します。
いいえ
userName 基本認証または Windows 認証を使用する場合は、userName を指定します。 いいえ
password userName に指定したユーザー アカウントの password を指定します。 安全に保存するには、このフィールドを SecureString 型としてマークします。 また、Azure Key Vault に格納されているシークレットを参照することもできます。 いいえ
servicePrincipalId Microsoft Entra アプリケーションのクライアント ID を指定します。 いいえ
aadServicePrincipalCredentialType サービス プリンシパル認証に使用する資格情報の種類を指定します。 使用できる値: ServicePrincipalKey または ServicePrincipalCert いいえ
servicePrincipalKey Microsoft Entra アプリケーションのキーを指定します。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します。 いいえ
servicePrincipalEmbeddedCert Microsoft Entra ID に登録されているアプリケーションの base64 でエンコードされた証明書を指定し、証明書のコンテンツ タイプが PKCS #12 であることを確認します。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します。 いいえ
servicePrincipalEmbeddedCertPassword 証明書がパスワードで保護されている場合は、証明書のパスワードを指定します。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します。 いいえ
tenant アプリケーションが存在するテナントの情報 (ドメイン名またはテナント ID) を指定します。 Azure portal の右上隅にマウスを置くことで取得します。 いいえ
aadResourceId 認可を要求する Microsoft Entra リソースを指定します。 いいえ
azureCloudType サービス プリンシパル認証用に、Microsoft Entra アプリケーションが登録されている Azure クラウド環境の種類を指定します。
指定できる値は、AzurePublicAzureChinaAzureUsGovernment、および AzureGermany です。 既定では、サービスのクラウド環境が使用されます。
いいえ
connectVia データ ストアに接続するために使用される Integration Runtime。 詳細については、「前提条件」セクションを参照してください。 指定されていない場合は、既定の Azure Integration Runtime が使用されます。 いいえ

例 1: 匿名認証を使用する

{
    "name": "ODataLinkedService",
    "properties": {
        "type": "OData",
        "typeProperties": {
            "url": "https://services.odata.org/OData/OData.svc",
            "authenticationType": "Anonymous"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

例 2: 基本認証を使用する

{
    "name": "ODataLinkedService",
    "properties": {
        "type": "OData",
        "typeProperties": {
            "url": "<endpoint of OData source>",
            "authenticationType": "Basic",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

例 3: Windows 認証を使用する

{
    "name": "ODataLinkedService",
    "properties": {
        "type": "OData",
        "typeProperties": {
            "url": "<endpoint of OData source>",
            "authenticationType": "Windows",
            "userName": "<domain>\\<user>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

例 4: サービス プリンシパル キー認証を使用する

{
    "name": "ODataLinkedService",
    "properties": {
        "type": "OData",
        "typeProperties": {
            "url": "<endpoint of OData source>",
            "authenticationType": "AadServicePrincipal",
            "servicePrincipalId": "<service principal id>",
            "aadServicePrincipalCredentialType": "ServicePrincipalKey",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "aadResourceId": "<AAD resource URL>"
        }
    },
    "connectVia": {
        "referenceName": "<name of Integration Runtime>",
        "type": "IntegrationRuntimeReference"
    }
}

例 5: サービス プリンシパル証明書認証を使用する

{
    "name": "ODataLinkedService",
    "properties": {
        "type": "OData",
        "typeProperties": {
            "url": "<endpoint of OData source>",
            "authenticationType": "AadServicePrincipal",
            "servicePrincipalId": "<service principal id>",
            "aadServicePrincipalCredentialType": "ServicePrincipalCert",
            "servicePrincipalEmbeddedCert": { 
                "type": "SecureString", 
                "value": "<base64 encoded string of (.pfx) certificate data>"
            },
            "servicePrincipalEmbeddedCertPassword": { 
                "type": "SecureString", 
                "value": "<password of your certificate>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "aadResourceId": "<AAD resource e.g. https://tenant.sharepoint.com>"
        }
    },
    "connectVia": {
        "referenceName": "<name of Integration Runtime>",
        "type": "IntegrationRuntimeReference"
    }
}

例 6:API キー認証を使用する

{
    "name": "ODataLinkedService",
    "properties": {
        "type": "OData",
        "typeProperties": {
            "url": "<endpoint of OData source>",
            "authenticationType": "Anonymous",
            "authHeader": {
                "APIKey": {
                    "type": "SecureString",
                    "value": "<API key>"
                }
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

データセットのプロパティ

このセクションでは、OData データセットでサポートされているプロパティの一覧を示します。

データセットの定義に使用できるセクションとプロパティの完全な一覧については、「データセットとリンクされたサービス」を参照してください。

OData からデータをコピーするには、データセットの type プロパティを ODataResource に設定します。 次のプロパティがサポートされています。

プロパティ Description 必須
type データセットの type プロパティは ODataResource に設定する必要があります。 はい
path OData リソースへのパス。 はい

{
    "name": "ODataDataset",
    "properties":
    {
        "type": "ODataResource",
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<OData linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties":
        {
            "path": "Products"
        }
    }
}

コピー アクティビティのプロパティ

このセクションでは、OData ソースでサポートされているプロパティの一覧を示します。

アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。

ソースとしての OData

OData からデータをコピーする場合、コピー アクティビティの source セクションで次のプロパティがサポートされます。

プロパティ Description 必須
type コピー アクティビティのソースの type プロパティは ODataSource に設定する必要があります。 はい
query データをフィルター処理するための OData クエリ オプション。 例: "$select=Name,Description&$top=5".

:OData コネクタは、次の結合された URL からデータをコピーします。[URL specified in linked service]/[path specified in dataset]?[query specified in copy activity source] 詳細については、OData の URL コンポーネントに関するページを参照してください。
いいえ
httpRequestTimeout HTTP 要求が応答を取得する際のタイムアウト (TimeSpan 値)。 この値は、応答データの読み取りのタイムアウトではなく、応答の取得のタイムアウトです。 指定しない場合は、既定値の 00:30:00 (30 分) が使用されます。 いいえ

"activities":[
    {
        "name": "CopyFromOData",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<OData input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ODataSource",
                "query": "$select=Name,Description&$top=5"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

RelationalSource 型のソースを使用していた場合は現状のまま引き続きサポートされますが、今後は新しいものを使用することをお勧めします。

OData のデータ型マッピング

OData からデータをコピーするときに、OData のデータ型とサービス内で内部的に使用される中間データ型の間で、次のマッピングが使用されます。 コピー アクティビティでソースのスキーマとデータ型がシンクにマッピングされる方法の詳細については、スキーマとデータ型のマッピングに関するページを参照してください。

OData のデータ型 中間サービス データ型
Edm.Binary Byte[]
Edm.Boolean Bool
Edm.Byte Byte[]
Edm.DateTime DateTime
Edm.Decimal Decimal
Edm.Double Double
Edm.Single Single
Edm.Guid Guid
Edm.Int16 Int16
Edm.Int32 Int32
Edm.Int64 Int64
Edm.SByte Int16
Edm.String String
Edm.Time TimeSpan
Edm.DateTimeOffset DateTimeOffset

注意

OData の複雑なデータ型 (Object など) はサポートされていません。

Project Online からデータをコピーする

Project Online にはユーザーベースの OAuth が必要ですが、これは Azure Data Factory ではサポートされていません。 Project Online からデータをコピーするには、OData コネクタと、Postman などのツールで取得したアクセス トークンを使用します。

注意事項

既定では、アクセス トークンは 1 時間で有効期限が切れます。有効期限が切れたときは、新しいアクセス トークンを取得する必要があります。

  1. Postman を使用してアクセス トークンを取得します。

    1. Postman Web サイトの [Authorization] タブに移動します。

    2. [Type] ボックスで [OAuth 2.0] を選択し、 [Add authorization data to] ボックスで [Request Headers] を選択します。

    3. [Configure New Token] ページで次の情報を入力し、新しいアクセス トークンを取得します。

      • Grant type: [Authorization Code] を選択します。
      • Callback URL: 「https://www.localhost.com/」と入力します。 
      • Auth URL: 「https://login.microsoftonline.com/common/oauth2/authorize?resource=https://<your tenant name>.sharepoint.com」と入力します。 <your tenant name> は自分のテナント名に置き換えます。
      • Access Token URL: 「https://login.microsoftonline.com/common/oauth2/token」と入力します。
      • クライアント ID: 自分の Microsoft Entra サービス プリンシパル ID を入力します。
      • Client Secret: 自分のサービス プリンシパル シークレットを入力します。
      • Client Authentication: [Send as Basic Auth header] を選択します。
    4. 自分のユーザー名とパスワードを使用してサインインするように求められます。

    5. アクセス トークンを取得したら、次の手順のためにそれをコピーして保存してください。

    Screenshot of using Postman to get the access token.

  2. OData のリンクされたサービスを作成します。

    • Service URL: 「https://<your tenant name>.sharepoint.com/sites/pwa/_api/Projectdata」と入力します。 <your tenant name> は自分のテナント名に置き換えます。
    • Authentication type: [Anonymous] を選択します。
    • Auth headers:
      • Property name: [Authorization] を選択します。
      • :「Bearer <access token from step 1>」と入力します。
    • リンクされたサービスをテストします。

    Create OData linked service

  3. OData データセットを作成します。

    1. 手順 2 で作成した、OData のリンクされたサービスを使用してデータセットを作成します。
    2. データをプレビューします。

    Preview data

Lookup アクティビティのプロパティ

プロパティの詳細については、Lookup アクティビティに関するページを参照してください。

コピー アクティビティでソースおよびシンクとしてサポートされているデータ ストアの一覧については、「サポートされるデータ ストアと形式」を参照してください。