Превращение ответа Azure Cost Management API во фрейм данных - PullRequest
0 голосов
/ 07 мая 2020

У меня проблема с преобразованием ответа Azure Cost Management во фрейм данных. Это то, что я получаю от AzureRMR:

response_example <-
  list(id = 'subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CostManagement/query/00000000-0000-0000-0000-000000000000',
       name = '00000000-0000-0000-0000-000000000000',
       type = 'Microsoft.CostManagement/query',
       location = NULL,
       sku = NULL,
       eTag = NULL,
       properties = list(
         nextLink = 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CostManagement/query?api-version=2019-11-01&$skiptoken=000000%3D%3D',
         columns = list(
           list(name = "UsageDate",
                type = "Number"),
           list(name = "Currency",
                type = "String")
         ),
         rows = list(
           list(as.integer(20200401),
                "EUR"),
           list(as.integer(20200402),
                "EUR")
         )
       ))

response_example
#> $id
#> [1] "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CostManagement/query/00000000-0000-0000-0000-000000000000"
#> 
#> $name
#> [1] "00000000-0000-0000-0000-000000000000"
#> 
#> $type
#> [1] "Microsoft.CostManagement/query"
#> 
#> $location
#> NULL
#> 
#> $sku
#> NULL
#> 
#> $eTag
#> NULL
#> 
#> $properties
#> $properties$nextLink
#> [1] "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CostManagement/query?api-version=2019-11-01&$skiptoken=000000%3D%3D"
#> 
#> $properties$columns
#> $properties$columns[[1]]
#> $properties$columns[[1]]$name
#> [1] "UsageDate"
#> 
#> $properties$columns[[1]]$type
#> [1] "Number"
#> 
#> 
#> $properties$columns[[2]]
#> $properties$columns[[2]]$name
#> [1] "Currency"
#> 
#> $properties$columns[[2]]$type
#> [1] "String"
#> 
#> 
#> 
#> $properties$rows
#> $properties$rows[[1]]
#> $properties$rows[[1]][[1]]
#> [1] 20200401
#> 
#> $properties$rows[[1]][[2]]
#> [1] "EUR"
#> 
#> 
#> $properties$rows[[2]]
#> $properties$rows[[2]][[1]]
#> [1] 20200402
#> 
#> $properties$rows[[2]][[2]]
#> [1] "EUR"

Создано 07.05.2020 с помощью пакета реплекс (v0.3.0)

Мне удалось получить имена столбцов:

library(tidyverse)
colnames <- map_chr(response_example[["properties"]][["columns"]], 1)
colnames
#> [1] "UsageDate" "Currency"

Создано 07.05.2020 с помощью пакета REPEX (v0.3.0)

Редактировать : Я нашел способ получить желаемый результат:

t1 <- map_dfc(transpose(response_example[["properties"]][["rows"]]) %>% set_names(colnames), as.character)
t1
#> # A tibble: 2 x 2
#>   UsageDate Currency
#>   <chr>     <chr>   
#> 1 20200401  EUR     
#> 2 20200402  EUR

t2 <- map_dfr(transpose(response_example[["properties"]][["rows"]]) %>% set_names(colnames), as.character)
t2
#> # A tibble: 2 x 2
#>   UsageDate Currency
#>   <chr>     <chr>   
#> 1 20200401  EUR     
#> 2 20200402  EUR

Создано 07.05.2020 пакетом реплекс (v0.3.0)

Я все еще ищу самый чистый способ построить фрейм данных с правильными именами столбцов и значениями в строках. Ответ многостраничный, и мне нужно связать ответы вместе в al oop.

...