protected override void ProcessRecord()
{
ProgressRecord pr = new ProgressRecord(1, "Upload file", string.Format("Upload file \"{0}\" into Azure ML Studio", Path.GetFileName(UploadFileName)));
pr.PercentComplete = 1;
pr.CurrentOperation = "Uploading...";
WriteProgress(pr);
// step 1. upload file
Task<string> uploadTask = Sdk.UploadResourceAsnyc(GetWorkspaceSetting(), FileFormat, UploadFileName);
while (!uploadTask.IsCompleted)
{
if (pr.PercentComplete < 100)
pr.PercentComplete++;
else
pr.PercentComplete = 1;
Thread.Sleep(500);
WriteProgress(pr);
}
// step 2. generate schema
pr.PercentComplete = 2;
pr.StatusDescription = "Generating schema for dataset \"" + DatasetName + "\"";
pr.CurrentOperation = "Generating schema...";
WriteProgress(pr);
JavaScriptSerializer jss = new JavaScriptSerializer();
dynamic parsed = jss.Deserialize<object>(uploadTask.Result);
string dtId = parsed["DataTypeId"];
string uploadId = parsed["Id"];
string dataSourceId = Sdk.StartDatasetSchemaGen(GetWorkspaceSetting(), dtId, uploadId, DatasetName, Description, UploadFileName);
// step 3. get status for schema generation
string schemaJobStatus = "NotStarted";
while (true)
{
if (pr.PercentComplete < 100)
pr.PercentComplete++;
else
pr.PercentComplete = 1;
pr.CurrentOperation = "Schema generation status: " + schemaJobStatus;
WriteProgress(pr);
schemaJobStatus = Sdk.GetDatasetSchemaGenStatus(GetWorkspaceSetting(), dataSourceId);
if (schemaJobStatus == "NotSupported" || schemaJobStatus == "Complete" || schemaJobStatus == "Failed")
break;
}
pr.PercentComplete = 100;
WriteProgress(pr);
WriteObject("Dataset upload status: " + schemaJobStatus);
}
}