【发布时间】:2017-03-06 06:42:58
【问题描述】:
我决定在 Excel 2016 中使用 Power Query 来加载和解释我从 Oracle 数据库中检索的一些数据。我有几张要根据特定执行代码 EXE_ID 加载的工作表,根据我打算查看的数据,这些工作表可能会有所不同。
我想要做的应该是相对简单的,至少根据我到目前为止看到的所有教程:我只想在一张表中指定 EXE_ID 并希望每张表中的所有查询都是能够阅读并相应地加载信息。问题是我总是遇到某种错误。
这是我最近的尝试:
我创建了一个简单的表,其中包含一个名为 Current_EXE_ID 的表头和下面的单个值 43。
之后我创建了一个空白查询,并在其中添加了以下代码:
let
Source = Excel.CurrentWorkbook(){[Name="GetExeId"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Current_EXE_ID", type text}}),
#"Current_EXE_ID" = #"Changed Type"{0}[Current_EXE_ID]
in
#"Current_EXE_ID"
我的想法只是读取表中的值 43,将其转换为文本并将其存储在 #"Current_EXE_ID" 变量中,以便我可以从不同的工作表中检索它。
当我尝试在不同工作表的查询中包含变量并尝试访问它时,我收到以下错误消息:
[Expression.Error] 导入 CUrrent_EXE_ID 不匹配导出。做过 你错过了一个模块参考?
这是我的做法:
let
Source = Oracle.Database("<DB_NAME>", [Query="SELECT * #(lf)FROM TABLE_NAME#(lf)WHERE EXE_ID = " & #"Current_EXE_ID"])
in
Source
我也尝试了不同的方法,例如创建一个参数表,并通过空白查询页面附加以下代码:
(ParameterName as text) =>
let
ParamSource = Excel.CurrentWorkbook(){[Name="Parameters"]}[Content],
ParamRow = Table.SelectRows(ParamSource, each ([Parameter] = ParameterName)),
Value=
if Table.IsEmpty(ParamRow)=true
then null
else Record.Field(ParamRow{0},"Value")
in
Value
我将函数命名为 fnGetExeId 并将其合并到 Oracle SQL 查询中
让 Source = Oracle.Database("", [Query="SELECT * #(lf)FROM TABLE_NAME#(lf)WHERE EXE_ID =" & fnGetExeId("EXE_ID") ]) 在 来源
但我最终得到了这个错误:
Expression.Error:我们不能将运算符 & 应用于文本和数字类型。 细节: 运算符=& Left=SELECT * #(lf)FROM TABLE_NAME#(lf)WHERE EXE_ID = 右=43
如果有人至少可以解释错误原因,那就太好了!
提前致谢! 米格尔
【问题讨论】:
标签: oracle powerquery