次の方法で共有


U-SQL ユーザー定義演算子 (UDO) の開発

このアーティクルでは、U-SQL ジョブ内のデータを処理するユーザー定義演算子を開発する方法について説明します。

U-SQL でのユーザー定義演算子の定義と使用

U-SQL ジョブを作成して送信するには

  1. Visual Studio メニューの [ ファイル > ] [新しい > プロジェクト > ] [U-SQL プロジェクト] の順に選択します。

  2. [OK] を選択します。 Visual Studio によって、Script.usql ファイルを使用するソリューションが作成されます。

  3. ソリューション エクスプローラーで、Script.usql を展開してから Script.usql.cs をダブルクリックします。

  4. 以下のコードをファイルに貼り付けます。

    using Microsoft.Analytics.Interfaces;
    using System.Collections.Generic;
    namespace USQL_UDO
    {
        public class CountryName : IProcessor
        {
            private static IDictionary<string, string> CountryTranslation = new Dictionary<string, string>
            {
                {
                    "Deutschland", "Germany"
                },
                {
                    "Suisse", "Switzerland"
                },
                {
                    "UK", "United Kingdom"
                },
                {
                    "USA", "United States of America"
                },
                {
                    "中国", "PR China"
                }
            };
            public override IRow Process(IRow input, IUpdatableRow output)
            {
                string UserID = input.Get<string>("UserID");
                string Name = input.Get<string>("Name");
                string Address = input.Get<string>("Address");
                string City = input.Get<string>("City");
                string State = input.Get<string>("State");
                string PostalCode = input.Get<string>("PostalCode");
                string Country = input.Get<string>("Country");
                string Phone = input.Get<string>("Phone");
                if (CountryTranslation.Keys.Contains(Country))
                {
                    Country = CountryTranslation[Country];
                }
                output.Set<string>(0, UserID);
                output.Set<string>(1, Name);
                output.Set<string>(2, Address);
                output.Set<string>(3, City);
                output.Set<string>(4, State);
                output.Set<string>(5, PostalCode);
                output.Set<string>(6, Country);
                output.Set<string>(7, Phone);
                return output.AsReadOnly();
            }
        }
    }
    
  5. Script.usql を開き、次の U-SQL スクリプトを貼り付けます。

    @drivers =
        EXTRACT UserID      string,
                Name        string,
                Address     string,
                City        string,
                State       string,
                PostalCode  string,
                Country     string,
                Phone       string
        FROM "/Samples/Data/AmbulanceData/Drivers.txt"
        USING Extractors.Tsv(Encoding.Unicode);
    
    @drivers_CountryName =
        PROCESS @drivers
        PRODUCE UserID string,
                Name string,
                Address string,
                City string,
                State string,
                PostalCode string,
                Country string,
                Phone string
        USING new USQL_UDO.CountryName();
    
    OUTPUT @drivers_CountryName
        TO "/Samples/Outputs/Drivers.csv"
        USING Outputters.Csv(Encoding.Unicode);
    
  6. Data Lake Analytics アカウント、データベース、スキーマを指定します。

  7. ソリューション エクスプローラーから Script.usql を右クリックし、[スクリプトのビルド] を選択します。

  8. ソリューション エクスプローラーから、[Script.usql] を右クリックし、[スクリプトの送信] を選択します。

  9. Azure サブスクリプションに接続していない場合は、Azure アカウントの資格情報を入力するように求められます。

  10. [Submit](送信) をクリックします。 送信が完了すると、[結果] ウィンドウに送信結果とジョブのリンクが示されます。

  11. [ 更新 ] ボタンを選択して、最新のジョブの状態を確認し、画面を更新します。

出力を表示するには

  1. [サーバー エクスプローラー] で、[Azure] を展開し、[Data Lake Analytics] を展開し、Data Lake Analytics アカウントを展開し、[ストレージ アカウント] を展開し、[既定のストレージ] を右クリックして、[エクスプローラー] を選択します。

  2. [サンプル]、[出力] の順にクリックしてから、 Drivers.csvをダブルクリックします。

次のステップ