达克斯度量是每个SSAS表格模型,Power BI和Power Pivot解决方案的核心。您编写了许多DAX度量,并可能在其他度量中引用其中的一些。因此,您编写和通过其他度量引用的DAX度量的数量增长很快。特别是在复杂的解决方案中,您可能有数百种DAX度量。尽管您的解决方案可以完美运行,但是进行微小的更改或在解决方案中添加新的度量或解决现有度量中的问题可能会令人头疼。在本文中,我将更进一步,展示一种简单的方法来获取整个数据模型的依赖关系,然后可视化Power BI中的依赖关系。您可以在本文末尾找到下载链接。
一个简单的搜索 谷歌 带给您许多讨论该主题的有用文章。在我看来,一些最好的方法如下:
- Document 依存关系 Between 达克斯 Calculations 通过 克里斯·韦伯
- Measure 依存关系 in Power BI 通过 马特·阿灵顿
- Visual 依存关系 Between your 达克斯措施s 通过 伊姆·费尔德曼
在这篇文章中,我使用了DMV,它为我们提供了我们想要的一切。 ( 克里斯·韦伯 已经在这里讨论了DMV: Document 依存关系 Between 达克斯 Calculations)。运行DMV,我们可以看到其他度量引用了哪些度量,在计算出的列中引用了哪些列等等。
这是非常有用的DMV,可帮助我们更好地了解正在处理的模型。我们也可以使用此方法进行文档编制。
这个怎么运作
此方法非常简单,您只需要在SSAS表格模型或Power BI Desktop文件之上运行以下DMV,然后将结果导入Power BI。
SELECT * FROM $ System.DISCOVER_CALC_DEPENDENCY
对于Power BI,您需要 查找本地端口号 那你就好了乍一看似乎唯一不是很简单的部分就是在Power BI Desktop模型中查找数据库。
找到打开的Power BI Desktop文件的本地端口号之后,一种简单的方法是在连接到Power BI Desktop模型时从SQL Server Management Studio(SSMS)查找数据库名称:
- 打开SSMS
- 选择“Analysis Services” as “Server Type”
- 输入“本地主机:PORT_NUMBER” as “Server Name” then click “Connect”
- 扩大“Databases”查看数据库名称
Getting Tabular Model Object 依存关系 Data from SSAS表格
- 打开Power BI桌面
- 选择“ SQL服务器 分析服务数据库”,然后单击“连接”
- 输入“服务器”和“数据库”
- 确保选择“导入”模式
- 扩大“MDX or 达克斯 Query” and copy/paste the following DMV then click OK
SELECT * FROM $ System.DISCOVER_CALC_DEPENDENCY
- 将数据导入Power BI后,单击“编辑查询”以打开“ 功率查询编辑器”
- 在查询编辑器中,使用更多用户友好名称重命名列
- 我也希望将大写的每个单词都大写“Object Type” and “Referenced 对象类型” columns. You can do this 通过 selecting both columns then right click and select “Capitalize each Word” from “Transform” sub-menu
- “Close & Apply”
- 最后一步是创建一个非常简单的方法来计算当前过滤器上下文中的依赖项数量
Object Count = COUNTROWS('Model Object 依存关系')
Visualising Tabular Object 依存关系 in Power BI
现在我们已成功将数据加载到Power BI中,是时候可视化依赖项了。如前所述,您可以使用网络自定义视觉。我用 ”强制指向图”,但是您可以使用其他几种可用的自定义视觉效果。
导入自定义外观后,将其放在页面上,然后将``参考对象''放置到``源'',将``对象名称''放置到``目标'',将``对象计数''放置到``重量''。根据模型的大小和模型依赖项的数量,您应该会看到类似以下的屏幕截图。
如您所见,视觉效果看起来非常凌乱且难以理解。原因是我们正在显示所有模型依赖性。为了使其更具可读性和实用性,我们可以在页面上将“对象类型”和“引用对象类型”列作为切片器。现在,如果您在两个切片器中都选择“测量”,则将看到测量依赖性。
现在看起来更好,但是仍然不好。让’s设置视觉效果使其更好。
- 点击“Force-Directed Graph” visual
- 点击格式标签“Visualization” pane
- 扩大“Links” then turn the “Arrow”选项打开。这将显示依赖关系的流程
- 扩大“Nodes” and change “Max name length”到50。默认值是10,它会截断对象名称并使它们不可读
您可以添加更多视觉效果,以从SSAS表格模型或Power BI Desktop对象依赖项获得更多见解。
这是我为您制作的示例的屏幕截图。您可以从右侧的表中单击引用的对象名称,以在“力向图”中查看所有从属度量,并在另一张表中查看从属度量的DAX表达式。
要查看哪些度量引用了计算列,只需选择“Calc_columns” from the “Referenced 对象类型” slicer.
嗨,非常感谢您的帖子。我按照说明进行操作,但仍然无法获得calc依赖关系。当我运行查询SELECT * FROM $ System.DISCOVER_CALC_DEPENDENCY时,我得到了以下结果:详细信息:“AnalysisServices:不提供任何担保。”[用英语类似*发现没有支持的依赖项节点。*
如何找出发生此错误的原因?
提前致谢!
嗨,纳撒尼,
欢迎来到BIInsight.com。
您在使用SSAS吗?如果是,那么什么版本?
如果您使用的是Power BI,则不应’根本没有任何问题。
干杯。
I’在使用Power BI和Dax Studio的过程中,此人遇到了相同的错误(发现了不受支持的依赖项节点),但似乎没人能弄清楚 //github.com/DaxStudio/DaxStudio/issues/236
感谢Nathany分享了JP的链接’s problem in GitHub.
看,如果你’再次使用DISCOVER_CALC_DEPENDENCY DMV记录您的模型/报告或用于审核目的,那么我对您来说是个好消息。
你可以用我的工具 Power BI Documenter.
然后检查“Dependencies”标签,您可以查看DAX对象依赖项的图形表示或将依赖项下载为CSV。
在此处找到有关Power BI Documenter的更多信息: //www.datavizioner.com.
要了解如何使用Power BI Documenter,请查看以下内容: //www.datavizioner.com/blog/how-to-use-power-bi-documenter.
我在Power BI Documenter中测试了上传到GitHub的文件JP,它的工作原理很吸引人。
但是如果你’d想让我进一步调查DISCOVER_CALC_DEPENDENCY,然后将您的文件上传到GitHub并在此处共享链接,我’我会尽快看看。
顺便说一句,如果以上都不是您的理想选择,我还有另一篇文章 不带DMV的Power BI中的SSAS / Power BI文档.
干杯。
感谢您分享这个。我也有同样的问题。请问您是否解决了这个问题?
嗨,Kseniia,
欢迎来到BIInsight.com。
显然,DISCOVER_CALC_DEPENDENCY的问题是在几个月前提出的。 Microsoft已经知道了这一点,但是目前没有建议修复的具体时间。
您的用例是什么?
如果您将其用于文档目的,则可以使用我的工具Power BI Documenter,该工具可以为您提供所有依赖关系,即使在RLS级别也是如此。这是该应用程序的直接链接: //app.datavizioner.com.
要了解更多信息,请查看以下内容: //datavizioner.com.
希望有帮助。
干杯
你好我’我通过重构我所有的m表达式以确保它们不起作用来解决该问题’引用任何其他查询。那已经解决了。我不’认为DMV正在正确处理M表达式和/或分区依赖性。
嗨,布莱恩,
感谢您分享您的体验。
我想我们使用DVM从模型中获取元数据,因此更改转换步骤以获取DMV结果听起来并不正确。
我认为在新的增强型元数据发布之后,该问题就开始发生了,但我尚未对其进行测试/确认。
干杯
嗨,纳撒尼,如果您’度量,计算列或计算表已损坏,因此’首先要检查。但是我一直在计算,没有断断续续的计算,我相信这是Darren God(DAX Studio)向Microsoft报告的错误。一世’ve追溯到DMV无法处理引用其他查询的Power Query查询(例如,合并到另一个查询中的查询)。一世’通过使我所有的Power Query m表达式完全独立,可以暂时解决该问题(例如,将要合并的其他查询的整个定义合并到您正在使用的查询中)
嗨,布莱恩,非常感谢您的工作。巧合的是’m shoked! rsrs) I’我一次只应用了一个M步,以查看DISCOVER_CALC_DEPENDENCY何时中断,而我却和您一样:在合并步骤中出现了错误。您的回复让我及时得出结论。非常感谢,我将与我的团队分享这个错误!
没问题。一世’已经向Microsoft提出了支持票,否则他们不会’除非他们看到多个客户受到影响,否则往往会优先考虑事情。它’必须取消固定数据加载体系结构但现在真的需要更多地了解Dax依赖关系,这是一个可怕的工作?
抱歉,请阅读下面的主题! (可移动视图)无论如何,希望您可以在遇到困难时使用解决方法。