Доброе утро / день всем,
Когда вы запускаете запрос к Google BigQuery API, вы получаете ответ в JSON-файле, который странным образом структурирован.
Вы можете найти столбецимена в $ColumnName = $Response.schema.fields.name
, но значения для столбцов в $Row = $Response.rows
.
Вот как выглядят строки:
{
"f": [
"@{v=@2019-11-04 14:14:49}",
"@{v=@8349531079148439128}",
"@{v=Returning Visitor}",
"@{v=1}",
"@{v=Yes}",
"@{v=Good news!}",
"@{v=1}",
"@{v=0}",
"@{v=1}",
"@{v=google}",
"@{v=organic}",
"@{v=(not set)}",
"@{v=(not provided)}",
"@{v=mobile}",
"@{v=/}",
"@{v=/}",
"@{v=No}",
"@{v=Yes}",
"@{v=No}"
]
},
{
"f": [
"@{v=@2019-11-04 08:52:48}",
"@{v=@3602395308467676896}",
"@{v=New Visitor}",
"@{v=4a9bcd67a01d}",
"@{v=Yes}",
"@{v=We\u0027re happy to carry out the work.}",
"@{v=}",
"@{v=1}",
"@{v=0}",
"@{v=ivr}",
"@{v=sms}",
"@{v=ivr-deflect}",
"@{v=(not set)}",
"@{v=mobile}",
"@{v=/}",
"@{v=/}",
"@{v=Yes}",
"@{v=No}",
"@{v=No}"
]
}
Таким образом, каждая строка присваивается "f" и значениямкаждому столбцу присваивается «v», внутри «f».
Поэтому, чтобы получить их в правильном формате, я написал пару циклов ниже:
$Data = @()
for($j=0; $j -lt $RowCount; $j++){
$Datarow = New-Object PSObject
For($i=0; $i -lt $ColumnCount; $i++){
$Datarow | Add-Member -type NoteProperty -Name $ColumnName[$i] -Value $Row[$j].f.v[$i]
}
$Data += $Datarow
}
Но, как вы можетепредставьте, это цитата медленная. Особенно на нашей немного устаревшей серверной машине, где это будет запланировано.
Знаете ли вы о лучших способах сделать это?
С уважением, Jarek