Power BI(数据集)
Power BI(数据流)
Power Apps(数据流)
Excel
Dynamics 365 Customer Insights
Analysis Services 函数参考文档 File.Contents
Lines.FromBinary
Csv.Document

若要从 Web 加载文本或 CSV 文件,请选择 Web 连接器 ,输入文件的 Web 地址,然后按照任何凭据提示操作。

文本/CSV 分隔符

Power Query会将 CSV 视为结构化文件,使用逗号作为分隔符,这是文本文件的一种特殊情况。 如果选择文本文件,Power Query将自动尝试确定它是否具有分隔符分隔值,以及该分隔符是什么。 如果它可以推断出分隔符,则会自动将其视为结构化数据源。

非结构化文本

如果文本文件没有 结构,则会在源文本中每行编码一列,每行都有一个新行。 作为非结构化文本的示例,可以考虑使用包含以下内容的记事本文件:

Hello world.
This is sample data.

加载时,会显示一个导航屏幕,其中每一行都加载到各自的行中。

在此对话框中只能配置一项内容,即 “文件来源” 下拉列表选择。 通过此下拉列表,可以选择用于生成文件的 字符集 。 目前,不会推断字符集,并且仅当 UTF-8 BOM 以 UTF-8 BOM 开头时,才会推断出 UTF-8。

在此处找到示例 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
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 编辑器中生成一个 columns=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")))