达克斯措施 依存关系 in SSAS表格 and Power BI

达克斯度量是每个SSAS表格模型,Power BI和Power Pivot解决方案的核心。您编写了许多DAX度量,并可能在其他度量中引用其中的一些。因此,您编写和通过其他度量引用的DAX度量的数量增长很快。特别是在复杂的解决方案中,您可能有数百种DAX度量。尽管您的解决方案可以完美运行,但是进行微小的更改或在解决方案中添加新的度量或解决现有度量中的问题可能会令人头疼。在本文中,我将更进一步,展示一种简单的方法来获取整个数据模型的依赖关系,然后可视化Power BI中的依赖关系。您可以在本文末尾找到下载链接。

一个简单的搜索 谷歌 带给您许多讨论该主题的有用文章。在我看来,一些最好的方法如下:

在这篇文章中,我使用了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”

从SSMS连接到Power BI Desktop模型

  • 扩大“Databases”查看数据库名称

在SSMS中浏览Power BI桌面模型

 

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

将SSAS表格元数据导入Power BI

  • 将数据导入Power BI后,单击“编辑查询”以打开“ 功率查询编辑器”
  • 在查询编辑器中,使用更多用户友好名称重命名列

Power BI中具有DMV的SSAS表格模型对象相关性

  • 我也希望将大写的每个单词都大写“Object Type” and “Referenced 对象类型” columns. You can do this 通过 selecting both columns then right click and select “Capitalize each Word” from “Transform” sub-menu

在Power BI中将每个词大写

  • “Close & Apply”
  • 最后一步是创建一个非常简单的方法来计算当前过滤器上下文中的依赖项数量
Object Count = COUNTROWS('Model Object 依存关系')

Visualising Tabular Object 依存关系 in Power BI

现在我们已成功将数据加载到Power BI中,是时候可视化依赖项了。如前所述,您可以使用网络自定义视觉。我用 ”强制指向图”,但是您可以使用其他几种可用的自定义视觉效果。

导入自定义外观后,将其放在页面上,然后将``参考对象''放置到``源'',将``对象名称''放置到``目标'',将``对象计数''放置到``重量''。根据模型的大小和模型依赖项的数量,您应该会看到类似以下的屏幕截图。

在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对象依赖项获得更多见解。

这是我为您制作的示例的屏幕截图。达克斯措施 依存关系 in SSAS表格 and Power BI您可以从右侧的表中单击引用的对象名称,以在“力向图”中查看所有从属度量,并在另一张表中查看从属度量的DAX表达式。 达克斯措施 依存关系 in SSAS表格 and Power BI要查看哪些度量引用了计算列,只需选择“Calc_columns” from the “Referenced 对象类型” slicer.SSAS表格和Power BI中DAX计算的列依赖关系

您可以从此处下载Power BI模板(PBIT)文件。

12 thoughts on “达克斯措施 依存关系 in SSAS表格 and Power BI

  1. 嗨,非常感谢您的帖子。我按照说明进行操作,但仍然无法获得calc依赖关系。当我运行查询SELECT * FROM $ System.DISCOVER_CALC_DEPENDENCY时,我得到了以下结果:详细信息:“AnalysisServices:不提供任何担保。”[用英语类似*发现没有支持的依赖项节点。*
    如何找出发生此错误的原因?
    提前致谢!

    1. 嗨,纳撒尼,如果您’度量,计算列或计算表已损坏,因此’首先要检查。但是我一直在计算,没有断断续续的计算,我相信这是Darren God(DAX Studio)向Microsoft报告的错误。一世’ve追溯到DMV无法处理引用其他查询的Power Query查询(例如,合并到另一个查询中的查询)。一世’通过使我所有的Power Query m表达式完全独立,可以暂时解决该问题(例如,将要合并的其他查询的整个定义合并到您正在使用的查询中)

      1. 嗨,布莱恩,非常感谢您的工作。巧合的是’m shoked! rsrs) I’我一次只应用了一个M步,以查看DISCOVER_CALC_DEPENDENCY何时中断,而我却和您一样:在合并步骤中出现了错误。您的回复让我及时得出结论。非常感谢,我将与我的团队分享这个错误!

        1. 没问题。一世’已经向Microsoft提出了支持票,否则他们不会’除非他们看到多个客户受到影响,否则往往会优先考虑事情。它’必须取消固定数据加载体系结构但现在真的需要更多地了解Dax依赖关系,这是一个可怕的工作?

    2. 抱歉,请阅读下面的主题! (可移动视图)无论如何,希望您可以在遇到困难时使用解决方法。

有什么想法吗?在这里与我们分享:

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.