【发布时间】:2019-04-12 19:44:31
【问题描述】:
如果将一行添加到 csv 文件,并且该行的“列”比原始行多,则 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= 值,该值将大于可能存在的最大列数,然后删除空白列,但似乎应该有更好的解决方案.
有什么想法吗?
【问题讨论】:
-
不能在 CSV 文件中添加标题行或在前两行末尾添加逗号吗?您修改后的 CSV 格式不是很标准。
-
@AlexisOlson 我同意格式是非标准的;而且我无法控制它是如何生成的。
-
我认为这是一个错误,因为我在“正常”格式的 CSV 文件中遇到了这个问题,其中所有行都有相同的列数。如果我对现有查询调用“刷新”,我的 CSV 新添加的列不会被拾取。
-
我的错,如果我删除查询的“Columns=XX”部分,那么在我的情况下它可以正常工作!我应该仔细阅读你的问题。
标签: excel csv office365 powerquery m