Azure Data Lake Analytics で U-SQL スクリプトを実行してデータを変換Transform data by running U-SQL scripts on Azure Data Lake Analytics

Azure Data Factory のパイプラインは、リンクされたコンピューティング サービスを使用して、リンクされたストレージ サービス内のデータを処理します。A pipeline in an Azure data factory processes data in linked storage services by using linked compute services. パイプラインは、一連のアクティビティで構成されます。各アクティビティは、特定の処理操作を実行します。It contains a sequence of activities where each activity performs a specific processing operation. この記事では、Azure Data Lake Analytics コンピューティング リンク サービスで U-SQL スクリプトを実行する Data Lake Analytics U-SQL アクティビティについて説明します。This article describes the Data Lake Analytics U-SQL Activity that runs a U-SQL script on an Azure Data Lake Analytics compute linked service.

Data Lake Analytics U-SQL アクティビティでパイプラインを作成する前に、Azure Data Lake Analytics アカウントを作成します。Create an Azure Data Lake Analytics account before creating a pipeline with a Data Lake Analytics U-SQL Activity. Azure Data Lake Analytics の詳細については、 Azure Data Lake Analytics の使用開始に関するページをご覧ください。To learn about Azure Data Lake Analytics, see Get started with Azure Data Lake Analytics.

Azure Data Lake Analytics リンク サービスAzure Data Lake Analytics linked service

Azure Data Lake Analytics リンク サービスを作成して、Azure Data Lake Analytics コンピューティング サービスを Azure Data Factory にリンクします。You create an Azure Data Lake Analytics linked service to link an Azure Data Lake Analytics compute service to an Azure data factory. パイプラインの Data Lake Analytics U-SQL アクティビティは、このリンク サービスを参照します。The Data Lake Analytics U-SQL activity in the pipeline refers to this linked service.

次の表では、JSON 定義で使用される一般的なプロパティを説明しています。The following table provides descriptions for the generic properties used in the JSON definition.

プロパティProperty 説明Description 必須Required
typetype type プロパティは次の値に設定されます。AzureDataLakeAnalyticsThe type property should be set to: AzureDataLakeAnalytics. はいYes
accountNameaccountName Azure Data Lake Analytics アカウント名。Azure Data Lake Analytics Account Name. はいYes
dataLakeAnalyticsUridataLakeAnalyticsUri Azure Data Lake Analytics URI。Azure Data Lake Analytics URI. いいえ No
subscriptionIdsubscriptionId Azure サブスクリプション IDAzure subscription ID いいえ No
resourceGroupNameresourceGroupName Azure リソース グループ名Azure resource group name いいえ No

サービス プリンシパルの認証Service principal authentication

Azure Data Lake Analytics のリンクされたサービスには、Azure Data Lake Analytics サービスに接続するためのサービス プリンシパル認証が必要です。The Azure Data Lake Analytics linked service requires a service principal authentication to connect to the Azure Data Lake Analytics service. サービス プリンシパル認証を使うには、Azure Active Directory (Azure AD) でアプリケーション エンティティを登録し、Data Lake Analytics およびそれを使用する Data Lake Store の両方へのアクセス権を付与します。To use service principal authentication, register an application entity in Azure Active Directory (Azure AD) and grant it the access to both the Data Lake Analytics and the Data Lake Store it uses. 詳細な手順については、「サービス間認証」を参照してください。For detailed steps, see Service-to-service authentication. 次の値を記録しておきます。リンクされたサービスを定義するときに使います。Make note of the following values, which you use to define the linked service:

  • アプリケーション IDApplication ID
  • アプリケーション キーApplication key
  • テナント IDTenant ID

ユーザー追加ウィザードを使用して、Azure Data Lake Anatlyics へのサービス プリンシパル アクセス許可を付与します。Grant service principal permission to your Azure Data Lake Anatlyics using the Add User Wizard.

次のプロパティを指定して、サービス プリンシパル認証を使います。Use service principal authentication by specifying the following properties:

プロパティProperty 説明Description 必須Required
servicePrincipalIdservicePrincipalId アプリケーションのクライアント ID を取得します。Specify the application's client ID. はいYes
servicePrincipalKeyservicePrincipalKey アプリケーションのキーを取得します。Specify the application's key. はいYes
tenanttenant アプリケーションが存在するテナントの情報 (ドメイン名またはテナント ID) を指定します。Specify the tenant information (domain name or tenant ID) under which your application resides. Azure Portal の右上隅をマウスでポイントすることにより取得できます。You can retrieve it by hovering the mouse in the upper-right corner of the Azure portal. はいYes

例:サービス プリンシパルの認証Example: Service principal authentication

{
    "name": "AzureDataLakeAnalyticsLinkedService",
    "properties": {
        "type": "AzureDataLakeAnalytics",
        "typeProperties": {
            "accountName": "<account name>",
            "dataLakeAnalyticsUri": "<azure data lake analytics URI>",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "value": "<service principal key>",
                "type": "SecureString"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "subscriptionId": "<optional, subscription id of ADLA>",
            "resourceGroupName": "<optional, resource group name of ADLA>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }       
    }
}

このリンクされたサービスの詳細については、計算のリンクされたサービスに関する記事をご覧ください。To learn more about the linked service, see Compute linked services.

Data Lake Analytics U-SQL アクティビティData Lake Analytics U-SQL Activity

次の JSON のスニペットでは、Data Lake Analytics U-SQL アクティビティを使用してパイプラインを定義します。The following JSON snippet defines a pipeline with a Data Lake Analytics U-SQL Activity. このアクティビティ定義には、先ほど作成した Azure Data Lake Analytics リンク サービスへの参照が含まれています。The activity definition has a reference to the Azure Data Lake Analytics linked service you created earlier. Data Lake Analytics U-SQL スクリプトを実行するために、指定したスクリプトがData Factory によって Data Lake Analytics に送信され、フェッチおよび出力する必須の入力と出力が Data Lake Analytics のスクリプトで定義されます。To execute a Data Lake Analytics U-SQL script, Data Factory submits the script you specified to the Data Lake Analytics, and the required inputs and outputs is defined in the script for Data Lake Analytics to fetch and output.

{
    "name": "ADLA U-SQL Activity",
    "description": "description",
    "type": "DataLakeAnalyticsU-SQL",
    "linkedServiceName": {
        "referenceName": "<linked service name of Azure Data Lake Analytics>",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "scriptLinkedService": {
            "referenceName": "<linked service name of Azure Data Lake Store or Azure Storage which contains the U-SQL script>",
            "type": "LinkedServiceReference"
        },
        "scriptPath": "scripts\\kona\\SearchLogProcessing.txt",
        "degreeOfParallelism": 3,
        "priority": 100,
        "parameters": {
            "in": "/datalake/input/SearchLog.tsv",
            "out": "/datalake/output/Result.tsv"
        }
    }   
}

次の表は、このアクティビティに固有のプロパティの名前と説明です。The following table describes names and descriptions of properties that are specific to this activity.

プロパティProperty 説明Description 必須Required
namename パイプラインのアクティビティの名前。Name of the activity in the pipeline はいYes
descriptiondescription アクティビティの動作を説明するテキスト。Text describing what the activity does. いいえ No
typetype Data Lake Analytics U-SQL アクティビティの場合、アクティビティの種類は DataLakeAnalyticsU-SQL です。For Data Lake Analytics U-SQL activity, the activity type is DataLakeAnalyticsU-SQL. はいYes
linkedServiceNamelinkedServiceName Azure Data Lake Analytics にリンクされたサービス。Linked Service to Azure Data Lake Analytics. このリンクされたサービスの詳細については、計算のリンクされたサービスに関する記事をご覧ください。To learn about this linked service, see Compute linked services article. はいYes
scriptPathscriptPath U-SQL スクリプトを含むフォルダーのパス。Path to folder that contains the U-SQL script. ファイル名は大文字と小文字が区別されます。Name of the file is case-sensitive. はいYes
scriptLinkedServicescriptLinkedService データ ファクトリへのスクリプトを含む Azure Data Lake Store または Azure Storage をリンクするリンク サービスLinked service that links the Azure Data Lake Store or Azure Storage that contains the script to the data factory はいYes
degreeOfParallelismdegreeOfParallelism ジョブを実行するために同時に使用される最大ノード数。The maximum number of nodes simultaneously used to run the job. いいえ No
prioritypriority キューされているすべてのジョブのうち、先に実行するジョブを決定します。Determines which jobs out of all that are queued should be selected to run first. 数値が小さいほど、優先度は高くなります。The lower the number, the higher the priority. いいえ No
parametersparameters U-SQL スクリプトに渡すパラメーター。Parameters to pass into the U-SQL script. いいえ No
runtimeVersionruntimeVersion 使用する U-SQL エンジンのランタイム バージョン。Runtime version of the U-SQL engine to use. いいえ No
compilationModecompilationMode

U-SQL のコンパイル モード。Compilation mode of U-SQL. 次のいずれかの値を指定する必要があります。Semantic: セマンティック チェックと必要なサニティ チェックのみを実行します。Full: 構文チェック、最適化、コード生成などを含めた完全コンパイルを実行します。SingleBox: TargetType を SingleBox に設定して完全コンパイルを実行します。Must be one of these values: Semantic: Only perform semantic checks and necessary sanity checks, Full: Perform the full compilation, including syntax check, optimization, code generation, etc., SingleBox: Perform the full compilation, with TargetType setting to SingleBox. このプロパティの値を指定しない場合、サーバーが最適なコンパイル モードを決定します。If you don't specify a value for this property, the server determines the optimal compilation mode.

いいえ No

Data Factory によって送信されるスクリプト定義については、SearchLogProcessing.txt のスクリプト定義をご覧ください。Data Factory submits the See SearchLogProcessing.txt Script Definition for the script definition.

U-SQL スクリプトのサンプルSample U-SQL script

@searchlog =
    EXTRACT UserId          int,
            Start           DateTime,
            Region          string,
            Query           string,
            Duration        int,
            Urls            string,
            ClickedUrls     string
    FROM @in
    USING Extractors.Tsv(nullEscape:"#NULL#");

@rs1 =
    SELECT Start, Region, Duration
    FROM @searchlog
WHERE Region == "en-gb";

@rs1 =
    SELECT Start, Region, Duration
    FROM @rs1
    WHERE Start <= DateTime.Parse("2012/02/19");

OUTPUT @rs1   
    TO @out
      USING Outputters.Tsv(quoting:false, dateTimeFormat:null);

前述のスクリプト例では、スクリプトの入力と出力は @in パラメーターと @out パラメーターで定義されます。In above script example, the input and output to the script is defined in @in and @out parameters. U-SQL スクリプトの @in パラメーターと @out パラメーターの値は、"parameters" セクションを使用して Data Factory によって動的に渡されます。The values for @in and @out parameters in the U-SQL script are passed dynamically by Data Factory using the ‘parameters’ section.

Azure Data Lake Analytics サービスで実行されるジョブのパイプライン定義で、他のプロパティ (degreeOfParallelism など) や優先度も指定できます。You can specify other properties such as degreeOfParallelism and priority as well in your pipeline definition for the jobs that run on the Azure Data Lake Analytics service.

動的パラメーターDynamic parameters

パイプライン定義のサンプルでは、in パラメーターと out パラメーターにハード コーディングされた値が割り当てられています。In the sample pipeline definition, in and out parameters are assigned with hard-coded values.

"parameters": {
    "in": "/datalake/input/SearchLog.tsv",
    "out": "/datalake/output/Result.tsv"
}

代わりに、動的パラメーターを使用することもできます。It is possible to use dynamic parameters instead. 例: For example:

"parameters": {
    "in": "/datalake/input/@{formatDateTime(pipeline().parameters.WindowStart,'yyyy/MM/dd')}/data.tsv",
    "out": "/datalake/output/@{formatDateTime(pipeline().parameters.WindowStart,'yyyy/MM/dd')}/result.tsv"
}

この場合、入力ファイルは引き続き /datalake/input フォルダーから取得され、出力ファイルは /datalake/output フォルダーに生成されます。In this case, input files are still picked up from the /datalake/input folder and output files are generated in the /datalake/output folder. ファイル名は、パイプラインのトリガー時に渡される期間の開始時間に基づいて動的に付けられます。The file names are dynamic based on the window start time being passed in when pipeline gets triggered.

次の手順Next steps

別の手段でデータを変換する方法を説明している次の記事を参照してください。See the following articles that explain how to transform data in other ways: