Azure Data Factory または Azure Synapse Analytics を使用して Oracle Cloud Storage のデータをコピーする

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

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

この記事では、Oracle Cloud Storage からデータをコピーする方法について説明します。 詳細については、Azure Data Factory および Azure Synapse Analytics の概要記事を参照してください。

サポートされる機能

この Oracle Cloud Storage コネクタは、次の機能をサポートしています。

サポートされる機能 IR
Copy アクティビティ (ソース/-) 1.1
Lookup アクティビティ 1.1
GetMetadata アクティビティ 1.1
アクティビティを削除する 1.1

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

具体的には、この Oracle Cloud Storage コネクタでは、ファイルをそのままコピーするか、サポートされているファイル形式と圧縮コーデックを使用してファイルを解析することがサポートされています。 Oracle Cloud Storage の S3 互換の相互運用性が利用されます。

前提条件

Oracle Cloud Storage からデータをコピーするには、前提条件および必要なアクセス許可について、こちらを参照してください。

作業の開始

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

UI を使用して Oracle Cloud Storage のリンク サービスを作成する

次の手順を使用して、Azure portal UI で Oracle Cloud Storage のリンク サービスを作成します。

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

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

    Screenshot of the Oracle Cloud Storage connector.

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

    Screenshot of linked service configuration for Oracle Cloud Storage.

コネクタの構成の詳細

次のセクションでは、Oracle Cloud Storage に固有のエンティティを定義するために使用されるプロパティについて詳しく説明します。

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

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

プロパティ Description 必須
type type プロパティは、OracleCloudStorage に設定する必要があります。 はい
accessKeyId シークレット アクセス キーの ID。 アクセス キーとシークレットの見つけ方については、「前提条件」を参照してください。 はい
secretAccessKey シークレット アクセス キー自体。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します。 はい
serviceUrl カスタム エンドポイントを https://<namespace>.compat.objectstorage.<region identifier>.oraclecloud.com として指定します。 詳細については、こちらを参照してください。 はい
connectVia データ ストアに接続するために使用される統合ランタイム。 データ ストアがプライベート ネットワーク内にある場合、Azure Integration Runtime またはセルフホステッド統合ランタイムを使用できます。 このプロパティが指定されていない場合は、サービスでは、既定の Azure Integration Runtime が使用されます。 いいえ

次に例を示します。

{
    "name": "OracleCloudStorageLinkedService",
    "properties": {
        "type": "OracleCloudStorage",
        "typeProperties": {
            "accessKeyId": "<access key id>",
            "secretAccessKey": {
                "type": "SecureString",
                "value": "<secret access key>"
            },
            "serviceUrl": "https://<namespace>.compat.objectstorage.<region identifier>.oraclecloud.com"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

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

Azure Data Factory では次のファイル形式がサポートされます。 形式ベースの設定については、各記事を参照してください。

Oracle Cloud Storage では、形式ベースのデータセットの location 設定において、次のプロパティがサポートされています。

プロパティ Description 必須
type データセットの locationtype プロパティは、OracleCloudStorageLocation に設定する必要があります。 はい
bucketName Oracle Cloud Storage バケットの名。 はい
folderPath 特定のバケットの下のフォルダーへのパス。 ワイルドカードを使用してフォルダーをフィルター処理する場合は、この設定をスキップし、アクティビティのソース設定でこれを指定します。 いいえ
fileName 特定のバケットおよびフォルダー パスの下のファイル名。 ワイルドカードを使用してファイルをフィルター処理する場合は、この設定をスキップし、アクティビティのソース設定でこれを指定します。 いいえ

例:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<Oracle Cloud Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "OracleCloudStorageLocation",
                "bucketName": "bucketname",
                "folderPath": "folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

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

アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。 このセクションでは、Oracle Cloud Storage ソースがサポートするプロパティの一覧を示します。

ソース タイプとしての Oracle Cloud Storage

Azure Data Factory では次のファイル形式がサポートされます。 形式ベースの設定については、各記事を参照してください。

Oracle Cloud Storage では、形式ベースのコピー ソースの storeSettings 設定において、次のプロパティがサポートされています。

プロパティ Description 必須
type storeSettingstype プロパティは OracleCloudStorageReadSettings に設定する必要があります。 はい
コピーするファイルを特定する:
オプション 1: 静的パス
データセットに指定されている所定のバケットまたはフォルダー/ファイル パスからコピーします。 バケットまたはフォルダーからすべてのファイルをコピーする場合は、さらに * として wildcardFileName を指定します。
オプション 2: Oracle Cloud Storage プレフィックス
- prefix
ソース Oracle Cloud Storage ファイルをフィルター処理するために、データセットで構成されている、指定されたバケットにある Oracle Cloud Storage キー名のプレフィックス。 名前が bucket_in_dataset/this_prefix で始まる Oracle Cloud Storage キーが選択されます。 ワイルドカード フィルターより優れたパフォーマンスを提供する Oracle Cloud Storage のサービス側フィルターを利用します。 いいえ
オプション 3: ワイルドカード
- wildcardFolderPath
ソース フォルダーをフィルター処理するためにデータセットで構成されている、特定のバケットの下のワイルドカード文字を含むフォルダーのパス。
使用できるワイルドカードは、* (ゼロ文字以上の文字に一致) と ? (ゼロ文字または 1 文字に一致) です。 フォルダー名にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。
フォルダーとファイル フィルターの例」の他の例をご覧ください。
いいえ
オプション 4: ワイルドカード
- wildcardFileName
ソース ファイルをフィルター処理するための、特定のバケットおよびフォルダー パス (またはワイルドカード フォルダー パス) の下のワイルドカード文字を含むファイル名。
使用できるワイルドカードは、* (ゼロ文字以上の文字に一致) と ? (ゼロ文字または 1 文字に一致) です。 ファイル名にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。 「フォルダーとファイル フィルターの例」の他の例をご覧ください。
はい
オプション 5: ファイルの一覧
- fileListPath
指定されたファイル セットをコピーすることを示します。 コピーするファイルの一覧を含むテキスト ファイルをポイントします。データセットで構成されているパスへの相対パスであるファイルを 1 行につき 1 つずつ指定します。
このオプションを使用している場合は、データ セットにファイル名を指定しないでください。 その他の例については、ファイル リストの例を参照してください。
いいえ
追加の設定:
recursive データをサブフォルダーから再帰的に読み取るか、指定したフォルダーからのみ読み取るかを指定します。 recursivetrue に設定され、シンクがファイル ベースのストアである場合、空のフォルダーおよびサブフォルダーはシンクでコピーも作成もされないことに注意してください。
使用可能な値: true (既定値) および false
fileListPath を構成する場合、このプロパティは適用されません。
いいえ
deleteFilesAfterCompletion 宛先ストアに正常に移動した後、バイナリ ファイルをソース ストアから削除するかどうかを示します。 ファイルの削除はファイルごとに行われるので、コピー操作が失敗した場合、一部のファイルが既に宛先にコピーされソースからは削除されているが、他のファイルはまだソース ストアに残っていることがわかります。
このプロパティは、バイナリ ファイルのコピー シナリオでのみ有効です。 既定値: false。
いいえ
modifiedDatetimeStart ファイルは、属性 (最終変更日時) に基づいてフィルター処理されます。
ファイルは、最終変更日時が modifiedDatetimeStart と同じかそれよりも後であり、modifiedDatetimeEnd よりも前である場合に選択されます。 時刻は "2018-12-01T05:00:00Z" の形式で UTC タイム ゾーンに適用されます。
プロパティは、ファイル属性フィルターをデータセットに適用しないことを意味する NULL にすることができます。 modifiedDatetimeStart に datetime 値が設定されており、modifiedDatetimeEndNULL の場合は、最終変更日時属性が datetime 値以上であるファイルが選択されます。 modifiedDatetimeEnd に datetime 値が設定されており、modifiedDatetimeStartNULL の場合は、最終変更日時属性が datetime 値未満であるファイルが選択されます。
fileListPath を構成する場合、このプロパティは適用されません。
いいえ
modifiedDatetimeEnd 上記と同じです。 いいえ
enablePartitionDiscovery パーティション分割されているファイルの場合は、ファイル パスのパーティションを解析し、それを追加のソース列として追加するかどうかを指定します。
指定できる値は false (既定値) と true です。
いいえ
partitionRootPath パーティション検出が有効になっている場合は、パーティション分割されたフォルダーをデータ列として読み取るための絶対ルート パスを指定します。

これが指定されていない場合は、既定で次のようになります。
- ソース上のデータセットまたはファイルの一覧内のファイル パスを使用する場合、パーティションのルート パスはそのデータセットで構成されているパスです。
- ワイルドカード フォルダー フィルターを使用する場合、パーティションのルート パスは最初のワイルドカードの前のサブパスです。

たとえば、データセット内のパスを "root/folder/year=2020/month=08/day=27" として構成するとします。
- パーティションのルート パスを "root/folder/year=2020" として指定した場合は、コピー アクティビティによって、ファイル内の列とは別に、それぞれ "08" と "27" の値を持つ monthday という 2 つの追加の列が生成されます。
- パーティションのルート パスが指定されない場合、追加の列は生成されません。
いいえ
maxConcurrentConnections アクティビティの実行中にデータ ストアに対して確立されたコンカレント接続数の上限。 コンカレント接続を制限する場合にのみ、値を指定します。 いいえ

例:

"activities":[
    {
        "name": "CopyFromOracleCloudStorage",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "OracleCloudStorageReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

フォルダーとファイル フィルターの例

このセクションでは、ワイルドカード フィルターを使用した結果のフォルダーのパスとファイル名の動作について説明します。

bucket key recursive ソースのフォルダー構造とフィルターの結果 (太字のファイルが取得されます)
bucket Folder*/* false bucket
    FolderA
        File1.csv
        File2.json
        Subfolder1
            File3.csv
            File4.json
            File5.csv
    AnotherFolderB
        File6.csv
bucket Folder*/* true bucket
    FolderA
        File1.csv
        File2.json
        Subfolder1
            File3.csv
            File4.json
            File5.csv
    AnotherFolderB
        File6.csv
bucket Folder*/*.csv false bucket
    FolderA
        File1.csv
        File2.json
        Subfolder1
            File3.csv
            File4.json
            File5.csv
    AnotherFolderB
        File6.csv
bucket Folder*/*.csv true bucket
    FolderA
        File1.csv
        File2.json
        Subfolder1
            File3.csv
            File4.json
            File5.csv
    AnotherFolderB
        File6.csv

ファイル リストの例

このセクションでは、コピー アクティビティのソースでファイル リスト パスを使用した結果の動作について説明します。

次のソース フォルダー構造があり、太字のファイルをコピーするとします。

サンプルのソース構造 FileListToCopy.txt のコンテンツ 構成
bucket
    FolderA
        File1.csv
        File2.json
        Subfolder1
            File3.csv
            File4.json
            File5.csv
    メタデータ
        FileListToCopy.txt
File1.csv
Subfolder1/File3.csv
Subfolder1/File5.csv
データセット内:
- バケット: bucket
- フォルダー パス: FolderA

コピー アクティビティ ソース内:
- ファイル リストのパス: bucket/Metadata/FileListToCopy.txt

ファイル リストのパスは、コピーするファイルの一覧を含む同じデータ ストア内のテキスト ファイルをポイントします。データセットで構成されているパスへの相対パスで 1 行につき 1 つのファイルを指定します。

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

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

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

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

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

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

Copy アクティビティでソースおよびシンクとしてサポートされるデータ ストアの一覧については、サポートされるデータ ストアに関するページを参照してください。