Преобразование данных в таблице из строки в столбец в PowerBI

#powerbi #pivot #dax

Вопрос:

У меня есть данные в формате таблицы ниже , где в столбце 1 имя повторяется после каждых 4 строк.

Колонка1 Колонка2
Дата 11:10:20
Использование Mem 44%
Загрузка процессора 35%
Использование диска 20%
Дата 11:11:20
Использование Mem 40%
Загрузка процессора 34%
Использование диска 24%
Дата 11:12:20
Использование Mem 34%
Загрузка процессора 20%
Использование диска 18%

Я хочу преобразовать его в формат таблицы ниже. Я попытался повернуть/открутить, но безуспешно. Есть ли какой-нибудь способ, которым я могу это сделать?

Дата Использования Mem Использование процессора Использование Диска
11:10:20 44% 35% 20%
11:11:20 40% 34% 24%
11:12:20 34% 20% 18%

Ответ №1:

Выполните следующие действия в разделе power query введите описание изображения здесь
введите описание изображения здесь
введите описание изображения здесь

Выберите столбец 2 и столбцы индекса из пользовательской таблицы

введите описание изображения здесь
введите описание изображения здесь
введите описание изображения здесь

Комментарии:

1. Большое спасибо, Ашок… это именно то, что я искал… 🙂

Ответ №2:

Хитрость заключается в использовании дополнительного столбца группировки:

 let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WckksSVXSUTI0tDI0sDIyUIrViVbyTc1VKC1OTAdJmJiogsWcA0LhYsamEDGXzOJsuKCRAVQQYaAhVgMNsBhogs1AEwwDjbAZaIzFhXDHIBtoaAEUjAUA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(
        Source,{{"Column1", type text}, {"Column2", type text}}),
    #"Added Index" = Table.AddIndexColumn(
        #"Changed Type", "Index", 0, 1, Int64.Type),
    #"Integer-Divided Column" = Table.TransformColumns(
        #"Added Index", {{"Index", each Number.IntegerDivide(_, 4), Int64.Type}}),
    #"Pivoted Column" = Table.Pivot(
        Table.TransformColumnTypes(#"Integer-Divided Column", {{"Index", type text}}, "en-US"), 
        List.Distinct(Table.TransformColumnTypes(#"Integer-Divided Column", {{"Index", type text}}, "en-US")[Index]), 
        "Index", 
        "Column2"),
    #"Transposed Table" = Table.Transpose(
        #"Pivoted Column"),
    #"Promoted Headers" = Table.PromoteHeaders(
        #"Transposed Table", [PromoteAllScalars=true]),
    #"Changed Type1" = Table.TransformColumnTypes(
        #"Promoted Headers",{
            {"CPU usage", Percentage.Type}, 
            {"Date", type time}, 
            {"Disk usage", Percentage.Type}, 
            {"Mem usage", Percentage.Type}
        }
    )
in
    #"Changed Type1"