刷新 CSV 导入时 Power Query 无法添加列
Power Query not able to add columns when refreshing CSV import
如果将一行添加到 csv 文件,并且该行比原始行多 "columns",Power Query 不会在刷新现有查询时为新行添加列。
如果生成新查询,则会出现额外的列。我猜这是因为 PQ 在创建查询时查看前 200(默认)行来决定格式。
原始 csv 文件:
key1:value1,key2:value2
key3:value3,key4:value4
原始M代码
let
Source = Csv.Document(File.Contents("d:\Users\Ron\Desktop\myCSV.csv"),[Delimiter=",", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None])
in
Source
它将导入并生成:(如预期的那样)
修改 CSV:
key1:value1,key2:value2
key3:value3,key4:value4
key5:value5,key6:value6,key7:value7
刷新查询:
请注意,第三行的第三列未导入。
新查询将选取第三列,但 Columns=
参数更改为 3
。
我已尝试从 M-Code
中的 Source
语句中删除 Columns=2
参数(如其他帖子中所建议),但这不会创建第三列(除非第一行中存在额外的列)。
如果 Columns=2
参数 更改为 为 Columns=3
,则将按需要导入所有三列,但无法知道提高潜在列数。
我想一个解决方法是指定一个 Columns=
值,该值将大于可能存在的最大列数,然后删除空白列,但似乎应该是一个更好的解决方案。
有什么想法吗?
我认为最简单的方法是使用换行符作为分隔符将其加载为单个列,然后在查询编辑器中拆分列。
let
Source = Csv.Document(File.Contents("d:\Users\Ron\Desktop\myCSV.csv"),[Delimiter="#(lf)", Encoding=1252, QuoteStyle=QuoteStyle.None]),
#"Split Column by Delimiter" = Table.SplitColumn(Source, "Column1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3"})
in
#"Split Column by Delimiter"
如果将一行添加到 csv 文件,并且该行比原始行多 "columns",Power Query 不会在刷新现有查询时为新行添加列。
如果生成新查询,则会出现额外的列。我猜这是因为 PQ 在创建查询时查看前 200(默认)行来决定格式。
原始 csv 文件:
key1:value1,key2:value2
key3:value3,key4:value4
原始M代码
let
Source = Csv.Document(File.Contents("d:\Users\Ron\Desktop\myCSV.csv"),[Delimiter=",", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None])
in
Source
它将导入并生成:(如预期的那样)
修改 CSV:
key1:value1,key2:value2
key3:value3,key4:value4
key5:value5,key6:value6,key7:value7
刷新查询:
请注意,第三行的第三列未导入。
新查询将选取第三列,但 Columns=
参数更改为 3
。
我已尝试从 M-Code
中的 Source
语句中删除 Columns=2
参数(如其他帖子中所建议),但这不会创建第三列(除非第一行中存在额外的列)。
如果 Columns=2
参数 更改为 为 Columns=3
,则将按需要导入所有三列,但无法知道提高潜在列数。
我想一个解决方法是指定一个 Columns=
值,该值将大于可能存在的最大列数,然后删除空白列,但似乎应该是一个更好的解决方案。
有什么想法吗?
我认为最简单的方法是使用换行符作为分隔符将其加载为单个列,然后在查询编辑器中拆分列。
let
Source = Csv.Document(File.Contents("d:\Users\Ron\Desktop\myCSV.csv"),[Delimiter="#(lf)", Encoding=1252, QuoteStyle=QuoteStyle.None]),
#"Split Column by Delimiter" = Table.SplitColumn(Source, "Column1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3"})
in
#"Split Column by Delimiter"