Text/CSV
总结
项目 | 说明 |
---|---|
发布状态 | 正式版 |
产品 | Excel Power BI(语义模型) Power BI(数据流) Fabric(数据流 Gen2) Power Apps(数据流) Dynamics 365 Customer Insights Analysis Services |
功能参考文档 | File.Contents Lines.FromBinary Csv.Document |
注意
由于部署计划和特定于主机的功能,某些功能可能只存在于一个产品中。
支持的功能
- 导入
从 Power Query Desktop 连接到本地文本/CSV 文件
加载本地文本或 CSV 文件:
在获取数据中选择文本/CSV 选项。 此操作将启动本地文件浏览器,你可在其中选择文本文件。
选择打开以打开该文件。
从导航器中,可以选择转换数据以在 Power Query 编辑器中转换数据,也可以选择加载以加载数据。
从 Power Query Online 连接到文本/CSV 文件
加载本地文本或 CSV 文件:
在数据源页中,选择文本/CSV。
在连接设置中,输入所需本地文本或 CSV 文件的文件路径。
从数据网关选择本地数据网关。
输入用户名和密码。
选择下一步。
从导航器中,选择转换数据以开始在 Power Query 编辑器中转换数据。
从 Web 加载
若要从 Web 加载文本或 CSV 文件,请选择 Web 连接器,输入文件的 Web 地址,并按照任何凭据提示操作。
文本/CSV 分隔符
Power Query 会将 CSV 视为带逗号分隔符的结构化文件,这是一种特殊的文本文件。 如果选择文本文件,Power Query 将自动尝试确定是否具有分隔符分隔的值,以及分隔符是什么。 如果可以推断分隔符,将自动将其视为结构化数据源。
非结构化文本
如果文本文件没有结构,你将获得一列,其中在源文本中编码的每行都对应一个新行。 作为非结构化文本的示例,可以考虑包含以下内容的记事本文件:
Hello world.
This is sample data.
加载时,会显示一个导航屏幕,其中每一行都加载到自己的行中。
在此对话框中只能配置一项内容,即文件原始格式下拉选择框。 通过此下拉列表,可以选择用于生成文件的字符集。 目前,不会推断字符集,仅当以 UTF-8 BOM 开头时,才会推断 UTF-8。
CSV
可以在此处找到示例 CSV 文件。
除了文件原始格式外,CSV 还支持指定分隔符以及如何处理数据类型检测。
可用的分隔符包括冒号、逗号、等号、分号、空格、制表符、自定义分隔符(可以是任意字符串)和固定宽度(按某些标准字符数拆分文本)。
最后一个下拉列表允许你选择如何处理数据类型检测。 它可以基于前 200 行、整个数据集检测,也可以选择不执行自动数据类型检测,而是将所有列默认设置为“文本”。 警告:如果对整个数据集执行此操作,可能会导致编辑器中数据的初始加载速度较慢。
由于推理可能不正确,因此在加载之前需要仔细检查设置。
Structured Text
当 Power Query 可以检测文本文件的结构时,它会将文本文件视为分隔符分隔的值文件,并在打开 CSV 时提供相同的选项,这实质上只是一个扩展名指示分隔符类型的文件。
例如,如果将以下示例另存为文本文件,它将读取为具有制表符分隔符而不是非结构化文本。
Column 1 Column 2 Column 3
This is a string. 1 ABC123
This is also a string. 2 DEF456
这可用于其他任何类型的基于分隔符的文件。
编辑源
编辑源步骤时,将显示与最初加载时略有不同的对话框。 你将看到带有各种下拉列表的屏幕,具体取决于你当前将文件视为文本还是 csv 文件。
换行符下拉列表允许你选择是否要应用引号内的换行符。
例如,如果编辑上面提供的“结构化”示例,则可以添加换行符。
Column 1 Column 2 Column 3
This is a string. 1 "ABC
123"
This is also a string. 2 "DEF456"
如果换行符设置为忽略带引号的换行符,将加载换行符,如同没有换行符(带额外的空格)一样。
如果换行符设置为应用所有换行符,将加载额外的行,换行符之后的内容是该行中的唯一内容(确切输出可能取决于文件内容的结构)。
使用文件打开格式为下拉列表,可以编辑要加载文件的格式,这一点对于故障排除非常重要。 对于技术上不是 CSV 的结构化文件(如另存为文本文件的制表符分隔的值文件),仍应将文件打开格式为设置为 CSV。 此设置还确定对话框的其余部分提供哪些下拉列表。
按示例显示文本/CSV
Power Query 中的按示例显示文本/CSV 是 Power BI Desktop 和 Power Query Online 中正式发布的功能。 使用文本/CSV 连接器时,你将在导航器左下角看到使用示例提取表选项。
选择该按钮时,将进入使用示例提取表页面。 在此页上,为要从文本/CSV 文件中提取的数据指定示例输出值。 输入列的第一个单元格后,将填写列中的其他单元格。若要正确提取数据,可能需要在列中输入多个单元格。 如果列中的某些单元格不正确,可以修复第一个不正确的单元格,并再次提取数据。 检查前几个单元格中的数据,以确保数据已成功提取。
注意
建议按列顺序输入示例。 成功填写列后,创建一个新列并开始在新列中输入示例。
该表构造完成后,可以选择加载或转换数据。 请注意生成的查询如何包含为数据提取推断的所有步骤的详细细分。 这些步骤只是可以根据需要自定义的常规查询步骤。
疑难解答
从 Web 加载文件
如果要从 Web 请求文本/csv 文件并提升标头,并且正在检索足够的文件,而你需要关注潜在的限制,则应考虑使用 Binary.Buffer()
包装 Web.Contents
调用。 在这种情况下,在提升标头之前缓冲文件将导致文件仅请求一次。
使用大型 CSV 文件
如果在 Power Query Online 编辑器中处理大型 CSV 文件,可能会收到内部错误。 建议先使用较小的 CSV 文件,应用编辑器中的步骤,完成后,将路径更改为更大的 CSV 文件。 使用此方法,可以更高效地工作,并减少在在线编辑器中遇到超时的可能性。 我们不希望在刷新期间遇到此错误,因为我们允许的超时持续时间较长。
被解释为结构化的非结构化文本
在极少数情况下,在段落中具有类似逗号的文档可能会被解释为 CSV。 如果发生此问题,请在 Power Query 编辑器中编辑源步骤,然后在文件打开格式为下拉选择框中选择文本,而不是 CSV。
Power BI Desktop 中的列
导入 CSV 文件时,Power BI Desktop 会在 Power Query 编辑器中生成 列=x(其中 x 是初始导入期间 CSV 文件中的列数)。 如果随后添加更多列并且数据源设置为“刷新”,则不会刷新超出初始 x 列数的任何列。
错误:主机关闭的连接
从 Web 源加载文本/CSV 文件并提升标头时,有时可能会遇到以下错误:"An existing connection was forcibly closed by the remote host"
或者 "Received an unexpected EOF or 0 bytes from the transport stream."
这些错误可能是主机采用保护措施并关闭可能临时暂停的连接引起的,例如,在等待其他数据源连接进行联接或追加操作时。 若要解决这些错误,请尝试添加 Binary.Buffer(建议)或 Table.Buffer 调用,该调用将下载文件、将其加载到内存中,并立即关闭连接。 这应防止在下载期间发生暂停,并让主机在检索内容之前强行关闭连接。
下面的示例阐释了这种解决方法。 在将生成的表传递到 Table.PromoteHeaders 之前,需要完成此缓冲。
- 原始:
Csv.Document(Web.Contents("https://.../MyFile.csv"))
- 对于
Binary.Buffer
:
Csv.Document(Binary.Buffer(Web.Contents("https://.../MyFile.csv")))
- 对于
Table.Buffer
:
Table.Buffer(Csv.Document(Web.Contents("https://.../MyFile.csv")))