U-SQL ユーザー定義演算子 (UDO) の開発
このアーティクルでは、U-SQL ジョブ内のデータを処理するユーザー定義演算子を開発する方法について説明します。
U-SQL でのユーザー定義演算子の定義と使用
U-SQL ジョブを作成して送信するには
Visual Studio メニューの [ ファイル > ] [新しい > プロジェクト > ] [U-SQL プロジェクト] の順に選択します。
[OK] を選択します。 Visual Studio によって、Script.usql ファイルを使用するソリューションが作成されます。
ソリューション エクスプローラーで、Script.usql を展開してから Script.usql.cs をダブルクリックします。
以下のコードをファイルに貼り付けます。
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(); } } }
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);
Data Lake Analytics アカウント、データベース、スキーマを指定します。
ソリューション エクスプローラーから Script.usql を右クリックし、[スクリプトのビルド] を選択します。
ソリューション エクスプローラーから、[Script.usql] を右クリックし、[スクリプトの送信] を選択します。
Azure サブスクリプションに接続していない場合は、Azure アカウントの資格情報を入力するように求められます。
[Submit](送信) をクリックします。 送信が完了すると、[結果] ウィンドウに送信結果とジョブのリンクが示されます。
[ 更新 ] ボタンを選択して、最新のジョブの状態を確認し、画面を更新します。
出力を表示するには
[サーバー エクスプローラー] で、[Azure] を展開し、[Data Lake Analytics] を展開し、Data Lake Analytics アカウントを展開し、[ストレージ アカウント] を展開し、[既定のストレージ] を右クリックして、[エクスプローラー] を選択します。
[サンプル]、[出力] の順にクリックしてから、 Drivers.csvをダブルクリックします。