Expression.Error: The column 'Column1' of the table wasn't found
Expression.Error: The column 'Column1' of the table wasn't found
在 power 查询中,我使用以下来源查找加拿大股票的股息信息。
如果我输入 ENS 就可以了。
如果我输入 MSFT,它会延迟 Try...Otherwise 并正确评估为“NA”。
如果我输入 HCA,它不起作用并且出现以下错误,“Expression.Error:未找到 table 的列 'Column1'。”
在此先感谢您的帮助。
(Ticker as text) as table =>
let Source = Web.Page(Web.Contents("https://www.ca.dividendinvestor.com/?symbol="&Ticker)),
Data = try Source{1}[Data] otherwise #table({"Column1", "Column2"}, {{"Dividend Yield:","NA"}}),
#"Changed Type" = Table.TransformColumnTypes(Data,{{"Column1", type text}, {"Column2", type text}}),
#"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Column1] = "Dividend Yield:")) in
#"Filtered Rows"
将代码用作函数时,您看不到发生了什么。
将您的代码更改为:
let Ticker="ENS",
Source = Web.Page(Web.Contents("https://www.ca.dividendinvestor.com/?symbol="&Ticker)),
Data = try Source{1}[Data] otherwise #table({"Column1", "Column2"}, {{"Dividend Yield:","NA"}}),
#"Changed Type" = Table.TransformColumnTypes(Data,{{"Column1", type text}, {"Column2", type text}}),
#"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Column1] = "Dividend Yield:")) in
#"Filtered Rows"
然后逐步完成
当代码为 ENS 时,第一步 return 是这个,它有不止一行,因此第二行的 Source{1} 完美运行
当代码为 MSFT 时,第一步 return 是这个,它只有一行,因此源{1}出错 [因为没有第二行] 并转到 其他部分
当代码为 HCA 时,您 return 第二行数据列中 table 的结果。如果您单击它并查看 table,它没有 column1 或 column2,这就是您在下一步 #"Changed Type" 中所指的内容,因此会出错。它只有种类、名称、children 和文本
如果无论标题如何都需要使用列,请使用 Table.ColumnNames() 来提取动态名称。下面的代码提取第一列的动态名称以用于过滤
let Ticker="HCA",
Source = Web.Page(Web.Contents("https://www.ca.dividendinvestor.com/?symbol="&Ticker)),
Data = try Source{1}[Data] otherwise #table({"Column1", "Column2"}, {{"NA","NA"}}),
#"Filtered Rows" = Table.SelectRows(Data, each (
Record.Field(_, Table.ColumnNames(Data){0})
= "Element")) in
#"Filtered Rows"
感谢上面关于分析步骤的建议。你指引我走向正确的道路。这是我使用 powerquery 的第一周,我学到了很多东西。
我首先使用了以下查询:
(代码为文本)as table =>
让
来源 = Web.Page(Web.Contents("https://www.ca.dividendinvestor.com/?symbol="&Ticker)),
Data = 尝试 Source{1}[Data] 否则 #table({"Column1", "Column2"}, {{"Kind:","NA"}})
在
数据
然后我在下面添加了第二个查询来过滤我需要的行:
让
来源 = Excel.CurrentWorkbook(){[Name="tblCompanySymbols"]}[内容],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"company ticker symbol", type text}}),
#“调用的自定义函数”= Table.AddColumn(#“更改类型”,“fxGetDividendCA”,每个 fxGetDividendCA([公司代码])),
#"Expanded fxGetDividendCA" = Table.ExpandTableColumn(#"调用自定义函数", "fxGetDividendCA", {"Column1", "Column2"}, {"fxGetDividendCA.Column1", "fxGetDividendCA.Column2" }),
#"Filtered Rows" = Table.SelectRows(#"Expanded fxGetDividendCA", each ([fxGetDividendCA.Column1] = "Dividend Yield:")) 在#"Filtered Rows"
在 power 查询中,我使用以下来源查找加拿大股票的股息信息。 如果我输入 ENS 就可以了。 如果我输入 MSFT,它会延迟 Try...Otherwise 并正确评估为“NA”。 如果我输入 HCA,它不起作用并且出现以下错误,“Expression.Error:未找到 table 的列 'Column1'。”
在此先感谢您的帮助。
(Ticker as text) as table =>
let Source = Web.Page(Web.Contents("https://www.ca.dividendinvestor.com/?symbol="&Ticker)),
Data = try Source{1}[Data] otherwise #table({"Column1", "Column2"}, {{"Dividend Yield:","NA"}}),
#"Changed Type" = Table.TransformColumnTypes(Data,{{"Column1", type text}, {"Column2", type text}}),
#"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Column1] = "Dividend Yield:")) in
#"Filtered Rows"
将代码用作函数时,您看不到发生了什么。 将您的代码更改为:
let Ticker="ENS",
Source = Web.Page(Web.Contents("https://www.ca.dividendinvestor.com/?symbol="&Ticker)),
Data = try Source{1}[Data] otherwise #table({"Column1", "Column2"}, {{"Dividend Yield:","NA"}}),
#"Changed Type" = Table.TransformColumnTypes(Data,{{"Column1", type text}, {"Column2", type text}}),
#"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Column1] = "Dividend Yield:")) in
#"Filtered Rows"
然后逐步完成
当代码为 ENS 时,第一步 return 是这个,它有不止一行,因此第二行的 Source{1} 完美运行
当代码为 MSFT 时,第一步 return 是这个,它只有一行,因此源{1}出错 [因为没有第二行] 并转到 其他部分
当代码为 HCA 时,您 return 第二行数据列中 table 的结果。如果您单击它并查看 table,它没有 column1 或 column2,这就是您在下一步 #"Changed Type" 中所指的内容,因此会出错。它只有种类、名称、children 和文本
如果无论标题如何都需要使用列,请使用 Table.ColumnNames() 来提取动态名称。下面的代码提取第一列的动态名称以用于过滤
let Ticker="HCA",
Source = Web.Page(Web.Contents("https://www.ca.dividendinvestor.com/?symbol="&Ticker)),
Data = try Source{1}[Data] otherwise #table({"Column1", "Column2"}, {{"NA","NA"}}),
#"Filtered Rows" = Table.SelectRows(Data, each (
Record.Field(_, Table.ColumnNames(Data){0})
= "Element")) in
#"Filtered Rows"
感谢上面关于分析步骤的建议。你指引我走向正确的道路。这是我使用 powerquery 的第一周,我学到了很多东西。
我首先使用了以下查询:
(代码为文本)as table => 让 来源 = Web.Page(Web.Contents("https://www.ca.dividendinvestor.com/?symbol="&Ticker)), Data = 尝试 Source{1}[Data] 否则 #table({"Column1", "Column2"}, {{"Kind:","NA"}}) 在 数据
然后我在下面添加了第二个查询来过滤我需要的行:
让
来源 = Excel.CurrentWorkbook(){[Name="tblCompanySymbols"]}[内容],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"company ticker symbol", type text}}),
#“调用的自定义函数”= Table.AddColumn(#“更改类型”,“fxGetDividendCA”,每个 fxGetDividendCA([公司代码])),
#"Expanded fxGetDividendCA" = Table.ExpandTableColumn(#"调用自定义函数", "fxGetDividendCA", {"Column1", "Column2"}, {"fxGetDividendCA.Column1", "fxGetDividendCA.Column2" }),
#"Filtered Rows" = Table.SelectRows(#"Expanded fxGetDividendCA", each ([fxGetDividendCA.Column1] = "Dividend Yield:")) 在#"Filtered Rows"