Преобразование данных обернутой таблицы в столбцы - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь выполнить удаление веб-страниц с помощью power bi, где я использую данные со следующего сайта:

https://pt.wikipedia.org/wiki/Jogo_do_bicho

После передачи URL-адрес сайта, данные были организованы в следующем формате:

Screenshot 1, где число является индексом, относящимся к животному, имеющему его специфику c тысяч, как мне разместить все в столбце с все индексы?

Пример прилагается:

Screenshot 2

1 Ответ

1 голос
/ 09 мая 2020

Я попытаюсь добавить детали позже, но я думаю, что это сработает:

let
    Source = Web.Page(Web.Contents("https://pt.wikipedia.org/wiki/Jogo_do_bicho")){0}[Data],
    ToLists = List.Skip(Table.ToColumns(Source),1),
    #"Converted to Table" = Table.FromList(ToLists, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandListColumn(#"Converted to Table", "Column1"),
    #"Added Custom" = Table.AddColumn(#"Expanded Column1", "Pivot", each if Text.Length([Column1]) = 2 then "Group" else "Animal"),
    #"Added Index" = Table.AddIndexColumn(#"Added Custom", "Index", 0, 1),
    #"Integer-Divided Column" = Table.TransformColumns(#"Added Index", {{"Index", each Number.IntegerDivide(_, 2), Int64.Type}}),
    #"Pivoted Column" = Table.Pivot(#"Integer-Divided Column", List.Distinct(#"Integer-Divided Column"[Pivot]), "Pivot", "Column1"),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Pivoted Column", "Animal", Splitter.SplitTextByDelimiter("#(lf)#(cr)", QuoteStyle.Csv), {"Animal", "Values"}),
    #"Trimmed Text" = Table.TransformColumns(#"Split Column by Delimiter",{{"Animal", Text.Trim, type text}, {"Values", Text.Trim, type text}}),
    #"Changed Type" = Table.TransformColumnTypes(#"Trimmed Text",{{"Group", Int64.Type}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"Index"}),
    #"Sorted Rows" = Table.Sort(#"Removed Columns",{{"Group", Order.Ascending}})
in
    #"Sorted Rows"

Изменить: Главное здесь - преобразовать таблицу в список столбцы с использованием Table.ToColumns. Это превращает его в список списков, который мы можем преобразовать в таблицу и развернуть в один длинный столбец.

После того, как все столбцы сложены в один столбец, мы хотим отделить идентификатор группы от деталей , что мы можем сделать в этом случае, проверив длину текста и определив настраиваемый столбец, который помечает каждую строку другой категорией данных.

Имея такую ​​категоризацию строк, мы хотим развернуть эту новый настраиваемый столбец, но нам нужен столбец индекса, чтобы он знал, что остается вместе. Добавьте столбец индекса и разделите целое число на два, чтобы получить 0,0,1,1,2,2,3,3,..., чтобы каждая пара получила свой уникальный идентификатор. Теперь мы можем, наконец, выполнить поворот.

После поворота выполните любую очистку, которую захотите, например, разделение столбцов, обрезку пробелов, изменение типов столбцов, удаление ненужных столбцов и сортировку.

...