Azure Data Factory を使用して Amazon Redshift からデータをコピーするCopy data from Amazon Redshift using Azure Data Factory

この記事では、Azure Data Factory のコピー アクティビティを使用して、Amazon Redshift からデータコピーする方法について説明します。This article outlines how to use the Copy Activity in Azure Data Factory to copy data from an Amazon Redshift. この記事は、コピー アクティビティの概要を示しているコピー アクティビティの概要に関する記事に基づいています。It builds on the copy activity overview article that presents a general overview of copy activity.

サポートされる機能Supported capabilities

Amazon Redshift から、サポートされている任意のシンク データ ストアにデータをコピーできます。You can copy data from Amazon Redshift to any supported sink data store. コピー アクティビティによってソースまたはシンクとしてサポートされているデータ ストアの一覧については、サポートされているデータ ストアに関する記事の表をご覧ください。For a list of data stores that are supported as sources/sinks by the copy activity, see the Supported data stores table.

具体的には、この Amazon Redshift コネクタは、クエリまたは組み込みの Redshift UNLOAD サポートを使用して Redshift からデータの取得をサポートします。Specifically, this Amazon Redshift connector supports retrieving data from Redshift using query or built-in Redshift UNLOAD support.

ヒント

Redshift から大量のデータをコピーするときに最適なパフォーマンスを得るには、Amazon S3 経由で組み込みの Redshift UNLOAD を使用することを検討します。To achieve the best performance when copying large amounts of data from Redshift, consider using the built-in Redshift UNLOAD through Amazon S3. 詳細については、「Amazon Redshift からのデータ コピーでの UNLOAD の使用」セクションをご覧ください。See Use UNLOAD to copy data from Amazon Redshift section for details.

前提条件Prerequisites

使用の開始Getting started

次のいずれかのツールまたは SDK を使用して、パイプラインでコピー アクティビティを使用できます。You can use one of the following tools or SDKs to use the copy activity with a pipeline. 詳細な手順については、以下のリンクを選択してください。Select a link for step-by-step instructions:

次のセクションでは、Amazon Redshift コネクターに固有の Data Factory エンティティの定義に使用されるプロパティについて詳しく説明します。The following sections provide details about properties that are used to define Data Factory entities specific to Amazon Redshift connector.

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

Amazon Redshift のリンクされたサービスでは、次のプロパティがサポートされます。The following properties are supported for Amazon Redshift linked service:

プロパティProperty 説明Description 必須Required
typetype type プロパティは、次のように設定する必要があります:AmazonRedshiftThe type property must be set to: AmazonRedshift はいYes
serverserver Amazon Redshift サーバーの IP アドレスまたはホスト名。IP address or host name of the Amazon Redshift server. はいYes
portport Amazon Redshift サーバーがクライアント接続のリッスンに使用する TCP ポートの数。The number of the TCP port that the Amazon Redshift server uses to listen for client connections. いいえ (既定値は 5439 です)No, default is 5439
databasedatabase Amazon Redshift データベースの名前。Name of the Amazon Redshift database. はいYes
usernameusername データベースへのアクセスを持つユーザーの名前。Name of user who has access to the database. はいYes
passwordpassword ユーザー アカウントのパスワード。Password for the user account. このフィールドを SecureString としてマークして Data Factory に安全に保管するか、Azure Key Vault に格納されているシークレットを参照します。Mark this field as a SecureString to store it securely in Data Factory, or reference a secret stored in Azure Key Vault. はいYes
connectViaconnectVia データ ストアに接続するために使用される統合ランタイムThe Integration Runtime to be used to connect to the data store. Azure 統合ランタイムまたは自己ホスト型統合ランタイム (データ ストアがプライベート ネットワークにある場合) を使用できます。You can use Azure Integration Runtime or Self-hosted Integration Runtime (if your data store is located in private network). 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。If not specified, it uses the default Azure Integration Runtime. いいえNo

例:Example:

{
    "name": "AmazonRedshiftLinkedService",
    "properties":
    {
        "type": "AmazonRedshift",
        "typeProperties":
        {
            "server": "<server name>",
            "database": "<database name>",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

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

データセットを定義するために使用できるセクションとプロパティの完全な一覧については、データセットに関する記事をご覧ください。For a full list of sections and properties available for defining datasets, see the datasets article. このセクションでは、Amazon Redshift データセットでサポートされるプロパティの一覧を示します。This section provides a list of properties supported by Amazon Redshift dataset.

Amazon Redshift からデータをコピーするには、データセットの type プロパティを RelationalTable に設定します。To copy data from Amazon Redshift, set the type property of the dataset to RelationalTable. 次のプロパティがサポートされています。The following properties are supported:

プロパティProperty 説明Description 必須Required
typetype データセットの type プロパティは、次のように設定する必要があります:RelationalTableThe type property of the dataset must be set to: RelationalTable はいYes
tableNametableName Amazon Redshift 内のテーブルの名前。Name of the table in the Amazon Redshift. いいえ (アクティビティ ソースの "query" が指定されている場合)No (if "query" in activity source is specified)

Example

{
    "name": "AmazonRedshiftDataset",
    "properties":
    {
        "type": "RelationalTable",
        "linkedServiceName": {
            "referenceName": "<Amazon Redshift linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {}
    }
}

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

アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。For a full list of sections and properties available for defining activities, see the Pipelines article. このセクションでは、Amazon Redshift ソースでサポートされるプロパティの一覧を示します。This section provides a list of properties supported by Amazon Redshift source.

ソースとしての Amazon RedshiftAmazon Redshift as source

Amazon Redshift からデータをコピーするには、コピー アクティビティでソースの型を AmazonRedshiftSource に設定します。To copy data from Amazon Redshift, set the source type in the copy activity to AmazonRedshiftSource. コピー アクティビティの source セクションでは、次のプロパティがサポートされます。The following properties are supported in the copy activity source section:

プロパティProperty 説明Description 必須Required
typetype コピー アクティビティのソースの type プロパティは、次のように設定する必要があります:AmazonRedshiftSourceThe type property of the copy activity source must be set to: AmazonRedshiftSource はいYes
queryquery カスタム クエリを使用してデータを読み取ります。Use the custom query to read data. 例: Select * from MyTable。For example: select * from MyTable. いいえ (データセットの "tableName" が指定されている場合)No (if "tableName" in dataset is specified)
redshiftUnloadSettingsredshiftUnloadSettings Amazon Redshift の UNLOAD を使用する場合のプロパティ グループ。Property group when using Amazon Redshift UNLOAD. いいえNo
s3LinkedServiceNames3LinkedServiceName リンクされた AmazonS3 型のサービス名を指定することで、中間ストアとして使用される Amazon S3 を参照します。Refers to an Amazon S3 to-be-used as an interim store by specifying a linked service name of "AmazonS3" type. アンロードを使用する場合は はいYes if using UNLOAD
bucketNamebucketName 中間データを格納する S3 バケットを指定します。Indicate the S3 bucket to store the interim data. 指定しない場合、Data Factory サービスが自動的に生成します。If not provided, Data Factory service generates it automatically. アンロードを使用する場合は はいYes if using UNLOAD

例:UNLOAD を使用したコピー アクティビティでの Amazon Redshift ソースExample: Amazon Redshift source in copy activity using UNLOAD

"source": {
    "type": "AmazonRedshiftSource",
    "query": "<SQL query>",
    "redshiftUnloadSettings": {
        "s3LinkedServiceName": {
            "referenceName": "<Amazon S3 linked service>",
            "type": "LinkedServiceReference"
        },
        "bucketName": "bucketForUnload"
    }
}

次のセクションから、UNLOAD を使用して、効率的に Amazon Redshift からデータをコピーする方法の詳細について説明します。Learn more on how to use UNLOAD to copy data from Amazon Redshift efficiently from next section.

Amazon Redshift からのデータ コピーで UNLOAD を使用するUse UNLOAD to copy data from Amazon Redshift

UNLOAD は、Amazon Redshift が提供するメカニズムであり、Amazon Simple Storage Service (Amazon S3) 上に 1 つまたは複数のファイルへのクエリの結果をアンロードできます。UNLOAD is a mechanism provided by Amazon Redshift, which can unload the results of a query to one or more files on Amazon Simple Storage Service (Amazon S3). これは、Redshift から大きなデータ セットをコピーするために、Amazon から推奨されている方法です。It is the way recommended by Amazon for copying large data set from Redshift.

例: UNLOAD、段階的コピーおよび PolyBase を使用して、Amazon Redshift から Azure SQL Data Warehouse にデータをコピーするExample: copy data from Amazon Redshift to Azure SQL Data Warehouse using UNLOAD, staged copy and PolyBase

このサンプルのユース ケースでは、コピー アクティビティは "redshiftUnloadSettings" での構成に従って Amazon Redshift から Amazon S3 へデータをアンロードした後、Amazon S3 から "stagingSettings" に指定された Azure Blob へデータをコピーし、最後に、PolyBase を使用して SQL Data Warehouse にデータを読み込みます。For this sample use case, copy activity unloads data from Amazon Redshift to Amazon S3 as configured in "redshiftUnloadSettings", and then copy data from Amazon S3 to Azure Blob as specified in "stagingSettings", lastly use PolyBase to load data into SQL Data Warehouse. すべての中間形式が、コピー アクティビティによって正しく処理されます。All the interim format is handled by copy activity properly.

Redshift から SQL DW へのコピーのワークフロー

"activities":[
    {
        "name": "CopyFromAmazonRedshiftToSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "AmazonRedshiftDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AmazonRedshiftSource",
                "query": "select * from MyTable",
                "redshiftUnloadSettings": {
                    "s3LinkedServiceName": {
                        "referenceName": "AmazonS3LinkedService",
                        "type": "LinkedServiceReference"
                    },
                    "bucketName": "bucketForUnload"
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": "AzureStorageLinkedService",
                "path": "adfstagingcopydata"
            },
            "dataIntegrationUnits": 32
        }
    }
]

Amazon Redshift のデータ型マッピングData type mapping for Amazon Redshift

Amazon Redshift からデータをコピーするとき、Amazon Redshift のデータ型から Azure Data Factory の中間データ型への次のマッピングが使用されます。When copying data from Amazon Redshift, the following mappings are used from Amazon Redshift data types to Azure Data Factory interim data types. コピー アクティビティでソースのスキーマとデータ型がシンクにマッピングされるしくみについては、スキーマとデータ型のマッピングに関する記事を参照してください。See Schema and data type mappings to learn about how copy activity maps the source schema and data type to the sink.

Amazon Redshift のデータ型Amazon Redshift data type Data Factory の中間データ型Data factory interim data type
BIGINTBIGINT Int64Int64
BOOLEANBOOLEAN stringString
CHARCHAR stringString
DATEDATE DateTimeDateTime
DECIMALDECIMAL DecimalDecimal
DOUBLE PRECISIONDOUBLE PRECISION DoubleDouble
INTEGERINTEGER Int32Int32
REALREAL SingleSingle
SMALLINTSMALLINT Int16Int16
TEXTTEXT stringString
TIMESTAMPTIMESTAMP DateTimeDateTime
VARCHARVARCHAR stringString

次の手順Next steps

Azure Data Factory のコピー アクティビティによってソースおよびシンクとしてサポートされるデータ ストアの一覧については、サポートされるデータ ストアの表をご覧ください。For a list of data stores supported as sources and sinks by the copy activity in Azure Data Factory, see supported data stores.