Agrupar Valores quando a ordem é importante

Olá a Todos, nesse vídeo podemos ver como usar o parâmetro GroupKind.Local na Função Table.Group.

Nosso objetivo hoje é transformar a Wikipédia da lista de episódios do Naruto em uma tabela simples para saber qual o intervalo de episódios é filler. No Final teremos uma tabela assim:

O Código que usamos é esse para a Lista:

let
    Source = Web.Page(Web.Contents("https://pt.wikipedia.org/wiki/Lista_de_epis%C3%B3dios_de_Naruto")),
    #"Filtered Rows" = Table.SelectRows(Source, each Text.Contains([Caption], "emporada")),
    #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"Data"}),
    #"Expanded Data" = Table.ExpandTableColumn(#"Removed Other Columns", "Data", {"Nº", "Título original", "Título original2", "Título(s) em português", "Data de estreia"}, {"Nº", "Título original", "Título original2", "Título(s) em português", "Data de estreia"}),
    #"Removed Other Columns1" = Table.SelectColumns(#"Expanded Data",{"Nº"}),
    #"Removed Duplicates" = Table.Distinct(#"Removed Other Columns1"),
    #"Filtered Rows1" = Table.SelectRows(#"Removed Duplicates", each (Text.Length([Nº]) < 20)),
    #"Replaced Value" = Table.ReplaceValue(#"Filtered Rows1","
","@",Replacer.ReplaceText,{"Nº"}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Replaced Value", "Nº", Splitter.SplitTextByDelimiter("@", QuoteStyle.Csv), {"Nº.1", "Nº.2"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Nº.1", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Nº.2"}, {{"Min", each List.Min([Nº.1]), type nullable number}, {"Max", each List.Max([Nº.1]), type nullable number}}, GroupKind.Local),
    #"Merged Queries" = Table.NestedJoin(#"Grouped Rows", {"Min"}, FromTo, {"Nº.1"}, "FromTo", JoinKind.LeftOuter),
    #"Merged Queries1" = Table.NestedJoin(#"Merged Queries", {"Max"}, FromTo, {"Nº.1"}, "FromTo.1", JoinKind.LeftOuter),
    #"Expanded FromTo" = Table.ExpandTableColumn(#"Merged Queries1", "FromTo", {"Ep"}, {"Ep Min"}),
    #"Expanded FromTo.1" = Table.ExpandTableColumn(#"Expanded FromTo", "FromTo.1", {"Ep"}, {"Ep Max"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Expanded FromTo.1",{"Min", "Max", "Ep Min", "Ep Max", "Nº.2"}),
    #"Renamed Columns" = Table.RenameColumns(#"Reordered Columns",{{"Nº.2", "Type"}})
in
    #"Renamed Columns"

E esse para a tabela DePara:

let
    Source = Web.Page(Web.Contents("https://pt.wikipedia.org/wiki/Lista_de_epis%C3%B3dios_de_Naruto")),
    #"Filtered Rows" = Table.SelectRows(Source, each Text.Contains([Caption], "emporada")),
    #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"Caption", "Data"}),
    #"Added Index" = Table.AddIndexColumn(#"Removed Other Columns", "T", 1, 1, Int64.Type),
    #"Expanded Data" = Table.ExpandTableColumn(#"Added Index", "Data", {"Nº", "Título original", "Título original2", "Título(s) em português", "Data de estreia"}, {"Nº", "Título original", "Título original2", "Título(s) em português", "Data de estreia"}),
    #"Removed Other Columns1" = Table.SelectColumns(#"Expanded Data",{"T", "Nº"}),
    #"Removed Duplicates" = Table.Distinct(#"Removed Other Columns1"),
    #"Filtered Rows1" = Table.SelectRows(#"Removed Duplicates", each (Text.Length([Nº]) < 20)),
    #"Grouped Rows" = Table.Group(#"Filtered Rows1", {"T"}, {{"All", each Table.AddIndexColumn(_, "E", 1, 1, Int64.Type), type table [T=number, Nº=text, E=number]}}),
    #"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", {"Nº", "E"}, {"Nº", "E"}),
    #"Replaced Value" = Table.ReplaceValue(#"Expanded All","
","@",Replacer.ReplaceText,{"Nº"}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Replaced Value", "Nº", Splitter.SplitTextByEachDelimiter({"@"}, QuoteStyle.Csv, false), {"Nº.1", "Nº.2"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Nº.1", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Ep", each "T" & Number.ToText([T], "00") & "E" & Number.ToText([E], "00")),
    #"Removed Other Columns2" = Table.SelectColumns(#"Added Custom",{"Nº.1", "Ep"})
in
    #"Removed Other Columns2"

Segue vídeo em inglês na íntegra:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *