Power BI 为什么检测到循环依赖

Power BI why circular dependency is detected

当我尝试在维度#product(或#region)和#bridge table之间建立关系时,你能解释一下为什么我运行进入这个循环依赖的警告信息吗?产品 x 区域的笛卡尔?

我已通过单列 P@G 将#bridge 与销售和预算联系起来 是产品和地区的串联。

在此处下载文件:PBIX

一个快速而肮脏的解决方案是使用 VALUES 创建 #product#region 的新版本。这可能不是最好的方法...

NewProduct = VALUES('#product'[product])

这个新表可以通过 1:* 关系链接到 #bridge,因此可以用作仪表板上的切片器。

Alberto 在 sqlbi 博客上写过:Circular dependency sqlbi blog

解决方法很简单。不要在 DAX 桥 tables 中使用 CALCULATE 函数。而是稍后将所有这些列添加到与 计算列 相同的 table。

我更改了桥的原始代码 table 是:

ADDCOLUMNS (
    CROSSJOIN ( '#product', '#region' ),
    "P@R", COMBINEVALUES("@",'#product'[product], '#region'[region]),
    "sales", CALCULATE ( SUM ( Budget[target] ) ),
    "IsSale", IF ( CALCULATE ( SUM ( Budget[target] ) ) > 0, "Yes", "No" )
)

简单点:

ADDCOLUMNS (
    CROSSJOIN ( '#prodact', '#region' ),
    "P@R", COMBINEVALUES("@",'#prodact'[product], '#region'[region])
)

我修改了 bridge table 的 DAX 代码,以便只留下连接所需的列。我需要计算的列添加为计算列。就是这样。纯属偶然,我在试验时发现了这一点。

为了玩桥牌 tables 我推荐这篇 Alberto Ferrari 的文章:https://www.sqlbi.com/articles/avoiding-circular-dependency-errors-in-dax/。它启发了我去解决这个问题。我从 Alberto 的文本中得到的是函数 VALUES 和 ALL 对桥 tables 没有好处。他提到了在 DAX tables 桥中使用 CALCULATE 函数的问题。该函数以某种方式被转换为 ALL 和 FILTER 函数的混合体。使用 DINSTINCT 和 ALLNOBLANKROW 等函数代替 VALUE 和 ALL。

工作 PBIX 文件。万岁!