vba - 为 Power BI Desktop ODBC 数据源动态生成 SQL 语句(由打开时刷新或按钮触发)?
问题描述
Microsoft Power BI Desktop ODBC 数据源是否有在线生成 SQL 语句的机制?我可能 Power BI 有一些附加到数据源的事件,例如 beforeOpen、beforeRefresh,我可以在这些事件的处理程序中编写 Visual Basic VBA(DAX?M?)代码,并且我可以使用此代码修改 SQL 语句?
我的问题与如何在定义 Power BI Desktop 的 ODBC 数据源的 SQL 语句(可选)中使用参数(例如 Firebird)有关- 使用 ODBC 和 Firebird 使用参数非常困难,因此这是我的想法完全避免参数,而是完全生成 SQL 代码,然后这个代码生成 VB 代码可以读取参数(当前日期,来自用户输入)并相应地调整生成的 SQL。
附加信息我可以从静态查询中导入数据,然后 Power BI 在“模型”窗格中创建查询组件。当我选择“编辑查询”菜单项/命令时,Power Query 编辑器打开,我有机会更新 M 代码,即:
= Odbc.Query("dsn=MY_ODBC_SOURCE", "select s.sale_date, s.amount from sales s where s.sale_date>='01.07.2021'")
我可以在那里编辑销售日期参数并刷新查询数据。
所以,我的问题归结为另一个问题:我可以在 Power BI 中创建按钮,它可以做这两件事:1)以编程方式编辑Odbc.Query("")
源代码(通过传递来自 Power BI 表单控件的参数值);2)以编程方式刷新数据?
附加信息文章https://powerbi.microsoft.com/en-us/blog/deep-dive-into-query-parameters-and-power-bi-templates/详细介绍了 Power BI 参数的定义。也许这些参数可以从定义 ODBC 查询/数据源的 DAX/M 表达式中访问,并且可以从 Power Query 编辑器中编辑?这些参数可以是简单的数值,但自定义 SQL 的整个部分可能都可以通过这些参数或派生进行编码。不过,目前我看不到如何在 Power Query 中使用参数。
解决方案
绝大多数PowerBI 报告会在加载到 DataSet 后简单地导入所有数据并对其进行过滤/排序。
您可以通过创建Power Query 参数并将参数值粘贴到 SQL 语句中来操作 M 中的 SQL 语句。
但是您必须刷新数据集才能使参数值的任何更改生效,因为 SQL 查询仅在数据刷新期间运行。这就是为什么通常的做法是导入所有数据并在 DataSet 中对其进行过滤。
如果您的数据集处于 DirectQuery 模式,您可以交互筛选源数据,但您必须使用支持 DirectQuery 的数据源。
推荐阅读
- spring - 在 Spring 安全扩展中限制 Angular URL
- python - Pandas:删除以任何顺序存在的重复项
- java - 为什么无法在类中设置字符串但可以获取字符串?
- gridster - 尝试在不重叠内容的情况下将 Gridster 项目打印为 PDF
- vim - Vim 自动缩进大型数组文字
- java - Docker 使用 Spring 和 mysql 映像组成推送到注册表
- java - 如何在 RecycleView 中显示理想的循环数组结果
- java - OptionalInt 作为输入参数
- spring - Spring微服务jwt认证
- node.js - 在 NodeJS 中使用归档器压缩音频文件