Excel:即使缺少一行,是否有办法从 power 查询中更新 table?
Excel: Is there a way to update the table from power query even if a row is missing?
希望你今天过得愉快。最近我试图在 Excel 中创建一个报告,并试图从 HTML 文件中获取所需的数据。 HTML 文件基本上是存储所有问题的网页,然后在 table 中过滤我们当天需要的内容。我没有直接从 Web 获取数据的选项,因为公司不允许加载项登录该站点并从那里获取数据,并且由于数据库的安全性,从 Web 获取数据不起作用弹出并且不让你得到任何东西,所以解决方法是每次我需要制作报告时将页面保存为 HTML 并覆盖连接到 Excel 工作簿的旧页面。
我设法创建了从 HTML 文件加载到 excel 中的 tabled 所需的图表,但我偶然发现了 Power Query 方面的问题。我保存 HTML 文件的页面中的 tables 不一样,这意味着有时会丢失一列,因为它没有问题,数据库会自动将其隐藏在 table,所以当我刷新查询时,它会显示错误“table 中缺少 X 列”。我知道它丢失了,但我不想每次丢失一列时都获取数据并重做所有内容以便图表正确更新。
有没有一种方法可以在 Power Query 高级编辑器中编写代码,这样 table 无论如何都会更新,即使列丢失也不需要每次都 code/get 数据?我在这里试图做的是自动化一个过程,这样获取数据的工作量最少,对我来说更好。
提前致谢!
*编辑:这是查询的源M代码:
let
Source = Web.Page(File.Contents("D:\AUTO.html")),
Data1 = Source{1}[Data],
#"Changed Type" = Table.TransformColumnTypes(Data1,{{"Customer Impact", type text}, {"Yes", Int64.Type}, {"No", Int64.Type}, {"WIP", Int64.Type}, {"T:", Int64.Type}})
in
#"Changed Type"
问题在于 #"Changed Type"
步骤,因为它试图转换不存在的列。
最简单的解决方案是完全取消该步骤,让数据通过而不分配类型。也就是说,将您的查询替换为:
let
Source = Web.Page(File.Contents("D:\AUTO.html")),
Data1 = Source{1}[Data]
in
Data1
如果输入很重要,您可以编写更动态的步骤来分配不会中断的类型。在这种情况下,您需要提供有关该逻辑应如何工作的详细信息(例如,“客户影响”始终存在且应为文本,其余部分应全部为整数)。
希望你今天过得愉快。最近我试图在 Excel 中创建一个报告,并试图从 HTML 文件中获取所需的数据。 HTML 文件基本上是存储所有问题的网页,然后在 table 中过滤我们当天需要的内容。我没有直接从 Web 获取数据的选项,因为公司不允许加载项登录该站点并从那里获取数据,并且由于数据库的安全性,从 Web 获取数据不起作用弹出并且不让你得到任何东西,所以解决方法是每次我需要制作报告时将页面保存为 HTML 并覆盖连接到 Excel 工作簿的旧页面。
我设法创建了从 HTML 文件加载到 excel 中的 tabled 所需的图表,但我偶然发现了 Power Query 方面的问题。我保存 HTML 文件的页面中的 tables 不一样,这意味着有时会丢失一列,因为它没有问题,数据库会自动将其隐藏在 table,所以当我刷新查询时,它会显示错误“table 中缺少 X 列”。我知道它丢失了,但我不想每次丢失一列时都获取数据并重做所有内容以便图表正确更新。
有没有一种方法可以在 Power Query 高级编辑器中编写代码,这样 table 无论如何都会更新,即使列丢失也不需要每次都 code/get 数据?我在这里试图做的是自动化一个过程,这样获取数据的工作量最少,对我来说更好。
提前致谢!
*编辑:这是查询的源M代码:
let
Source = Web.Page(File.Contents("D:\AUTO.html")),
Data1 = Source{1}[Data],
#"Changed Type" = Table.TransformColumnTypes(Data1,{{"Customer Impact", type text}, {"Yes", Int64.Type}, {"No", Int64.Type}, {"WIP", Int64.Type}, {"T:", Int64.Type}})
in
#"Changed Type"
问题在于 #"Changed Type"
步骤,因为它试图转换不存在的列。
最简单的解决方案是完全取消该步骤,让数据通过而不分配类型。也就是说,将您的查询替换为:
let
Source = Web.Page(File.Contents("D:\AUTO.html")),
Data1 = Source{1}[Data]
in
Data1
如果输入很重要,您可以编写更动态的步骤来分配不会中断的类型。在这种情况下,您需要提供有关该逻辑应如何工作的详细信息(例如,“客户影响”始终存在且应为文本,其余部分应全部为整数)。