首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态SQL数据导入和直接查询

动态SQL数据导入和直接查询
EN

Stack Overflow用户
提问于 2020-11-04 11:21:16
回答 1查看 421关注 0票数 1

我希望基于Server表中包含的信息构建报告。Server包含多个表(每个数据类型一个)。

我在power查询中编写了这个函数:

代码语言:javascript
运行
复制
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中是支持的:

代码语言:javascript
运行
复制
let
    Source = Sql.Database(ServerAdress, DbName),
    GoTable = Table.SelectRows(Source{[Schema=schema,Item=tablename]}[Data],each [id_file]=id_file)
in
    GoTable

但是,如果我使用相同的查询并将其转换为一个函数,然后使用相同的参数PowerBi切换到导入模式调用它,这是一个简单的查询,为什么它不兼容DirectQuery?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-11-04 19:16:54

应用于查询编辑器中的DirectQuery的任何转换都必须传回给server。Power知道如何使用基本操作,如选择和筛选列,但它不能应用任何任意函数,因为它不一定知道如何将其转换为SQL。特别是,用户定义的自定义函数本质上是一个从SQL角度进行的黑匣子转换,即使它应该如何被转换似乎是显而易见的。

它与参数一起工作的原因是,一旦设置了这些参数,它们就是不需要插入不知道在SQL中解释什么的步骤的常量值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64679094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档