下準備については1つ前のエントリを参照してください。
下準備で作ったプロジェクトに以下のアセンブリをNuGetから追加します(プレリリースで)
- Microsoft.Azure.Management.DataLake.Analytics
そして下準備のプログラムに以下のような感じのプログラムを追加します。
// data upload var ms = new MemoryStream(); var sw = new StreamWriter(ms); sw.WriteLine("taro,12"); sw.WriteLine("jiro,14"); ms.Seek(0, SeekOrigin.Begin); adlsFileSystemClient.FileSystem.Create("/sample1/data.csv", "Data Lakeストレージのアカウント名", ms, overwrite: true); // 実行するクエリ var query = @" @src = EXTRACT Name string, Age int FROM ""/sample1/data.csv"" USING Extractors.Csv(); OUTPUT @src TO ""/sample1/output.csv"" USING Outputters.Csv();"; // init var adlaClient = new DataLakeAnalyticsAccountManagementClient(tokenCredentials) { SubscriptionId = SubscriptionId }; var adlaJobClient = new DataLakeAnalyticsJobManagementClient(tokenCredentials) { SubscriptionId = SubscriptionId }; var adlaCatalogClient = new DataLakeAnalyticsCatalogManagementClient(tokenCredentials) { SubscriptionId = SubscriptionId }; // add account(これいるのかな?? Createは動かなかった…) adlaClient.Account.AddDataLakeStoreAccount("datalake", "dlsample", "dlsampleadls", new AddDataLakeStoreParameters(new DataLakeStoreAccountInfoProperties())); var jobId = Guid.NewGuid(); var properties = new USqlJobProperties(query); var parameters = new JobInformation("copy", JobType.USql, properties); var jobInfo = adlaJobClient.Job.Create(jobId, parameters, "Data Lake Analyticsのアカウント名"); while (jobInfo.State != JobState.Ended) { Console.WriteLine($"Waiting... {jobInfo.State}"); Task.Delay(1000).Wait(); jobInfo = adlaJobClient.Job.Get(jobId, "Data Lake Analyticsのアカウント名"); } var jobResult = jobInfo.Result.Value; Console.WriteLine(jobResult); Console.ReadKey();