我需要采取以下(CSV):
deviceId,ip,mac,serial,version,platform,vtpDomain,stack num, stack ports, stack model, stack version, stack image, stack MAC, stack Serial AA_MDF_2960X_2,10.10.10.10,abab.abab.abab, 123123123,15.0(2a)EX5,cisco WS-C2960X-48FPS-L,'AAHS',,,,,,,
,,,,,,,1,52,WS-C2960X-48FPD-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
,,,,,,,2,52,WS-C2960X-48FPS-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
,,,,,,,3,52,WS-C2960X-48FPS-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
,,,,,,,*4,52,WS-C2960X-48FPS-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
AA_MDF_2960X_2,10.10.10.10,abab.abab.abab, 123123123,15.0(2a)EX5,cisco WS-C2960X-48FPS-L,'AAES',,,,,,,
,,,,,,,1,52,WS-C2960X-48FPD-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
,,,,,,,2,52,WS-C2960X-48FPS-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
,,,,,,,3,52,WS-C2960X-48FPS-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
,,,,,,,*4,52,WS-C2960X-48FPS-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
看起来像:
列类有重复的信息。交换机堆栈中的每个主站都有名称,IP,MAC,序列号,版本,型号,位置。我的示例中显示了两个主控,每个堆栈一个。显示堆栈中每个交换机(包括主站)的相同信息。此外,还有表示堆栈中位置的数字(以及显示主站的' *'),交换机端口和堆栈映像。 以Name开头的每一行都是交换机堆栈中的主服务器。以空格开头的行是该堆栈中的开关。我需要有关堆栈中的交换机(包括主机)的信息,这些信息放在具有Master信息的行中的单个单元格中。 我可以创建一个excel公式来填充缺少的项目,它看起来像:
(In R123)=if(A123="",R122,A123)
哪个好,但仍然让我删除行,数据仍然是错误的格式。这感觉就像走错了路。此外,我正在寻找一种更自动化的处理方式是数据。 我希望能够采用CSV,打开[Something],刷新,以图片的格式导出新的CSV。 我可以使用power query,Excel或Power Pivot来关闭。 使用Power Query,我可以添加索引列。然后我可以添加一个自定义列来检查第一列是否为空并返回结果。我不知道如何制作Power Query参考"上面的单元格"当列是空白时。
即使建议如何对此问题进行说明以获得有用的Google搜索结果也会有所帮助。凌乱的数据,Power Query数据重新格式化等都太模糊了。
任何人都可以告诉我在引用这两种数据时使用的术语是什么?我认为后者可能是表格式的,绝对不是规范化的。
编辑:我在CSV示例中添加了标题。
我现在在电源查询中使用以下内容:
let
Source = Csv.Document(File.Contents("C:\rawdata.csv"),[Delimiter=",", Columns=17, Encoding=1252, QuoteStyle=QuoteStyle.None]),
#"Promoted Headers" = Table.PromoteHeaders(Source),
#"Removed Columns" = Table.RemoveColumns(#"Promoted Headers",{"mac", "serial", "platform"}),
#"Added Custom" = Table.AddColumn(#"Removed Columns", "Notes_StepOne", each Text.Combine({[stack num],[#" stack model"],[#" stack version"],[#" stack image"],[#" stack MAC"],[#" stack Serial"] ,"#(000D)#(000A)"})),
#"Replaced Value" = Table.ReplaceValue(#"Added Custom","",null,Replacer.ReplaceValue,{"deviceId", "ip", "version", "vtpDomain"}),
#"Filled Down" = Table.FillDown(#"Replaced Value",{"deviceId", "ip", "version", "vtpDomain"}),
#"Group By" = Table.Group(#"Filled Down", {"deviceId", "ip", "version", "vtpDomain"}, {{"notes", each Text.Combine([Notes_StepOne]), type text}})
in
#"Group By"
编辑:用括号括号替换引号" Notes_StepOne" 做得好的亚历杭德罗!
答案 0 :(得分:0)
这是一个潜在的解决方案:
您生成的结果可以是列的组合,也可以是换行符。对于自定义列公式,它看起来像这样:
Text.Combine({[first column], [second column], "#(000D)#(000A)"})
在您要分组的列中填写值。您可以通过转到“变换”选项卡并选择“填充”来填充Power Query中的值下来。
做一个分组依据。用户界面不允许您通过将文本列添加到一起进行分组,因此您可能希望将其添加为单独的步骤(单击fx按钮将创建新步骤)。它看起来像这样:
= Table.Group(#"Filled Down", {"first column", "second column"}, {{"notes", each Text.Combine([custom column made in the first part]), type text}})