我希望基于Server表中包含的信息构建报告。Server包含多个表(每个数据类型一个)。
我在power查询中编写了这个函数:
let
GetTableFromDataBase = (schema as text, id_file as text, tablename as text) => let
Source = Sql.Database("xxx.database.windows.net", "xxx", [Query="SELECT * FROM "&schema&"."&tablename&" WHERE [id_file]="&id_file])
in
Source
in
GetTableFromDataBase然后,我用3列(模式、id_file、tablename)调用查询上的函数,以获取我需要的每个表,但是这一步我得到了以下警告消息:
步骤导致在DirectQuery模式下不支持的查询
有没有办法做到这一点而不失去DirectQuery模式?
编辑:我尝试了其他一些使用directquery进行动态导入的方法,这个查询(使用参数)在DirectQuery中是支持的:
let
Source = Sql.Database(ServerAdress, DbName),
GoTable = Table.SelectRows(Source{[Schema=schema,Item=tablename]}[Data],each [id_file]=id_file)
in
GoTable但是,如果我使用相同的查询并将其转换为一个函数,然后使用相同的参数PowerBi切换到导入模式调用它,这是一个简单的查询,为什么它不兼容DirectQuery?
谢谢
发布于 2020-11-04 19:16:54
应用于查询编辑器中的DirectQuery的任何转换都必须传回给server。Power知道如何使用基本操作,如选择和筛选列,但它不能应用任何任意函数,因为它不一定知道如何将其转换为SQL。特别是,用户定义的自定义函数本质上是一个从SQL角度进行的黑匣子转换,即使它应该如何被转换似乎是显而易见的。
它与参数一起工作的原因是,一旦设置了这些参数,它们就是不需要插入不知道在SQL中解释什么的步骤的常量值。
https://stackoverflow.com/questions/64679094
复制相似问题