Невозможно отобразить результат просмотра данных в Power shell - PullRequest
1 голос
/ 22 апреля 2020

Я новичок в azure проводнике данных и запросах Kusto. Я изучаю ниже пример онлайн

https://dataexplorer.azure.com/clusters/help/databases/Samples

Вот запрос, который я получаю результаты в Обозревателе данных, но не могу отобразить в Power Shell

   StormEvents
   | where DamageProperty >0
   | limit 2
   | project StormSummary.TotalDamages

Ниже приведена справочная ссылка для кода, который я пытаюсь выполнить запрос в Powershell (Пример 2 на странице ссылки ниже)

https://docs.microsoft.com/en-us/azure/data-explorer/kusto/api/powershell/powershell

I изменил только «$ Query» и изменил последнюю строку кода, как показано ниже

 $dataView | Format-Table -AutoSize 

Я получаю вывод как

  StormSummary_TotalDamages
  -------------------------
 {}  

Я попытался изменить запрос без «TotalDamages» в «StormSummary». TotalDamages ", но в результате просмотра данных, который я не могу получить снова" TotalDamages ".

 StormSummary                               
  ------------                               
 {TotalDamages, StartTime, EndTime, Details}

1 Ответ

1 голос
/ 22 апреля 2020

Кто-то помог мне исправить мою проблему. Я публикую его, чтобы помочь другим.

Объяснение: Результатом запроса является импорт в строку Json, преобразование его из json и преобразование структуры данных столбцов и строк обратно в отдельные объекты PSObject. помог мой вопрос.

Код: Согласно Примеру 2, упомянутому в моем вопросе. мы звоним

 $reader = $queryProvider.ExecuteQuery($query, $crp)

После этого я удалил существующий код и изменил, как показано ниже:

Модифицированный код для получения данных прогнозируемого поля (TotalDamages):

 $json = [Kusto.Cloud.Platform.Data.ExtendedDataReader]::ToJsonString($reader)
 $data = $json | ConvertFrom-Json

 $columns = @{}
 $count = 0
 foreach ($column in $data.Tables[0].Columns) {
   $columns[$column.ColumnName] = $count
    $count++
 }
$items = foreach ($row in $data.Tables[0].Rows) {
$hash = @{}
foreach ($property in $columns.Keys){
    $hash[$property] = $row[$columns[$property]]
}
[PSCustomObject]$hash
}
foreach($item in $items)
{
   Write-Host "TotalDamages: "$item.StormSummary.TotalDamages
 }

Выход:

  TotalDamages:  6200000
  TotalDamages:  2000
...