我正在尝试用power bi做网络搜刮,其中我使用的数据来自以下网站。
https:/pt.wikipedia.orgwikiJogo_do_bicho。
传递网站URL后,数据以如下格式组织起来。
其中数字是与动物相关的索引 有其特定的千, 我如何把所有的东西组织在一个列 与所有的索引?
我有一个例子附在后面。
我稍后会尝试添加细节,但我认为这将是工作。
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
. 这就把它变成了一个列表,我们可以把它转换成一个表,并展开成一个长列。
一旦所有的列都堆叠成一个单一的列,我们就想把组ID和细节分开,在这种情况下,我们可以通过检查文本的长度和定义一个自定义列来实现,这个自定义列用不同的数据类别来标记每一行。
在对行进行分类后,我们要对那个新的自定义列进行透视,但我们要有一个索引列,这样它就知道哪些内容会留在一起。添加一个索引列和整数除以二,这样你就会得到 0,0,1,1,2,2,3,3,...
使得每个对子都有自己唯一的ID。现在我们终于可以进行pivot了。
一旦进行了pivot,就可以进行任何你想做的清理工作,例如,分割列、修剪空白、改变列类型、删除不需要的列和排序。