小编Ale*_*son的帖子

DAX中的递归

我不知道这是否可能,但我希望能够创建一个计算列,其中每一行依赖于它上面的行.

一个典型的例子是Fibonacci序列,其中序列由递归关系F(n) = F(n-1) + F(n-2)和种子定义F(1) = F(2) = 1.

在表格中,

Index  Fibonacci
----------------
 1      1
 2      1
 3      2
 4      3
 5      5
 6      8
 7     13
 8     21
 9     34
10     55
...    ...
Run Code Online (Sandbox Code Playgroud)

我希望能够将Fibonacci列构建为计算列.

现在,我知道Fibonacci序列有一个很好的封闭形式,我可以定义

Fibonacci = (((1 + SQRT(5))/2)^[Index] - ((1 - SQRT(5))/2)^[Index])/SQRT(5)
Run Code Online (Sandbox Code Playgroud)

或者使用Pascal三角形浅对角线:

Fibonacci =
SUMX (
    ADDCOLUMNS (
        SELECTCOLUMNS (
            GENERATESERIES ( 0, FLOOR ( ( [Index] - 1 ) / 2, …
Run Code Online (Sandbox Code Playgroud)

dax

8
推荐指数
1
解决办法
552
查看次数

强制 DAX SWITCH 函数使用严格(惰性)短路评估

设置: 类似于MSDN 论坛上的这个问题,我有一个可以在各种其他度量之间切换的度量(其中一些度量比其他度量复杂得多)。该措施看起来像这样(我的实际措施有更多情况):

VariableMeasure =
VAR ReturnType =
    SELECTEDVALUE ( ParamReturnType[ReturnType] )
SWITCH (
    ReturnType,
    "NAV", [Nav],
    "Income", [Income],
    "ROI", [Roi],
    "BM", [Benchmark],
    BLANK ()
)
Run Code Online (Sandbox Code Playgroud)

上下文: 切换度量的原因是能够通过选择ReturnType带有切片器的来选择要在报表上显示的度量,然后所选度量在矩阵视觉中显示为列标题。例如,我的矩阵可能如下所示:

矩阵视觉

(如您所见,它没有显示,BM因为它没有被选中。)


问题:问题是,当我刚刚NAV选择该度量时,尽管它是一种廉价的计算度量,但它仍然几乎与所有选择的度量一样慢。当我使用 DAX Studio 分析查询时,应该是一个简单的查询需要大约 2.7 秒。事实上,如果我用除[Nav]切换度量之外的度量注释掉这些行,性能会显着提高,运行时间不到 100 毫秒(快 30 倍)。DAX Studio 显示公式引擎 (FE) 负责大约 2.7 秒的 99.5%,而存储引擎 (SE) 使用不到 20 毫秒。


研究: 我阅读了以下 SQL BI 文章,其中提到了惰性/严格评估和短路:

了解 DAX 中的急切与严格评估

使用变量优化 IF 和 SWITCH 表达式

我的措施类似于第二个链接中的最后一个例子,但不像在他们的情况下那样从“短路评估”中受益。

此 Power BI 社区问题与 …

ssas lazy-evaluation switch-statement dax powerbi

6
推荐指数
1
解决办法
872
查看次数

Power BI中的多元线性回归

假设我有一组回报,我想计算其β值与不同的市场指数.让我们在一个名为Returns一个具体示例的表中使用以下数据集:

  Date       Equity  Duration  Credit  Manager
-----------------------------------------------
01/31/2017   2.907%   0.226%   1.240%   1.78%
02/28/2017   2.513%   0.493%   1.120%   3.88%
03/31/2017   1.346%  -0.046%  -0.250%   0.13%
04/30/2017   1.612%   0.695%   0.620%   1.04%
05/31/2017   2.209%   0.653%   0.480%   1.40%
06/30/2017   0.796%  -0.162%   0.350%   0.63%
07/31/2017   2.733%   0.167%   0.830%   2.06%
08/31/2017   0.401%   1.083%  -0.670%   0.29%
09/30/2017   1.880%  -0.857%   1.430%   2.04%
10/31/2017   2.151%  -0.121%   0.510%   2.33%
11/30/2017   2.020%  -0.137%  -0.020%   3.06%
12/31/2017   1.454%   0.309%   0.230%   1.28%
Run Code Online (Sandbox Code Playgroud)

现在在Excel中,我可以使用该LINEST函数来获取beta值:

= LINEST(Returns[Manager], Returns[[Equity]:[Credit]], TRUE, TRUE)
Run Code Online (Sandbox Code Playgroud)

它会吐出一个如下所示的数组:

0.077250253 -0.184974002 …
Run Code Online (Sandbox Code Playgroud)

excel-formula linear-regression dax powerbi

5
推荐指数
1
解决办法
5009
查看次数

是否可以使用 DAX 在 Power BI 中取消透视?

我需要使用 DAX 创建以下图表,而不使用 Power Query。

图表图像

这必须通过以下 2 个表来完成:

表格1

表3

有谁知道如何在不使用 Power Query 的情况下创建此图表?您可以使用日历表。

dax powerbi

5
推荐指数
1
解决办法
2万
查看次数

在 Power BI 中创建按国家/地区和品牌返回 DISTINCT COUNT 的度量

我有一张如下表:

Country, Advertiser, Brand, Spend
C1,      A1,         B1,    10
C1,      A1,         B2,    5
C1,      A2,         B3,    0
C1,      A2,         B4,    20
C2,      A1,         B1,    8
C2,      A1,         B5,    7
C2,      A2,         B6,    4
C2,      A2,         B3,    3
C2,      A2,         B7,    2
C2,      A3,         B8,    9
Run Code Online (Sandbox Code Playgroud)

我想DISTINCT COUNT按国家/地区获得品牌,这很简单:

C1 => 4
C2 => 6
Run Code Online (Sandbox Code Playgroud)

如何创建Power BI可以嵌入表格或树状图中的度量?我已经试过了:

Measure = COUNTX(DISTINCT(sourceTable),sourceTable[Brand])
Run Code Online (Sandbox Code Playgroud)

它返回DISTINCT COUNT每个国家的品牌总数(不是)...

我也在下面尝试过,但没有用:

DistinctBrandCount =
    CALCULATE(DISTINCTCOUNT(SampleDataForDashboard[Brand]),
        GROUPBY(SampleDataForDashboard, SampleDataForDashboard[Country]))
Run Code Online (Sandbox Code Playgroud)

dax powerbi powerbi-desktop

5
推荐指数
1
解决办法
3万
查看次数

如何创建一个切换使用哪个关系的开关?

我想创建一个切换按钮,用于更改查看报告的日期(按会计日期或生效日期).

目前,我按会计日期按生效日期和非活动关系存在活跃关系.

在此输入图像描述

使用USERELATIONSHIP函数我能够在两个日期之前传递数据:

Total Premium by AccDate =
    CALCULATE( Sum(Premiums[Premium]),
        USERELATIONSHIP(Premiums[AccountingDate], Dates[Date]))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

所以我的问题是,如何放置一个按钮(开关),以便最终用户只需点击该按钮(无论是生效日期还是会计日期),所有视觉效果都会根据开关显示数据?

我需要使用书签吗?或者还有其他一些技巧?

dax powerbi powerbi-embedded

5
推荐指数
1
解决办法
1073
查看次数

拉出对应于最大值或最小值的行的最佳方法

假设我有TableATableB那没有关系。

TableA创建计算列计算,根据两个表中涉及多个列的复杂表达式最小值(例如,见这里我的答案)。

MinValue = MINX(TableA, [ComplexExpression])
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我真正要寻找的是ID出现最小值的行。


为了一个具体的例子,让我们看看以下内容:

TableA

ID   X     Y
-------------
1   2.1  -1.3
2   3.5   0.5
3   6.5   5.9
4   3.1   4.2
5   2.8  -2.7
6   5.7  -1.5
Run Code Online (Sandbox Code Playgroud)

TableB

ID   X     Y
-------------
A   2.3   2.7
B   2.8  -4.8
C   4.1   1.1
D  -0.5   0.9
E  -3.7   2.4
Run Code Online (Sandbox Code Playgroud)

我添加了一个计算列来TableA给出最小的欧几里德距离。

MinDist = MINX(TableB, ROUND(SQRT((TableA[X]-TableB[X])^2 + (TableA[Y]-TableB[Y])^2), 2))
Run Code Online (Sandbox Code Playgroud)

现在,我想找到对应于最近点的IDfrom TableB。也就是说,我想要下表:

ID   X …
Run Code Online (Sandbox Code Playgroud)

dax powerbi

5
推荐指数
1
解决办法
92
查看次数

分组总和的平均值

我希望创建一个度量,该度量取多个总和的平均值,并按 ID 分组。一个例子是,如果您有一个客户数据库,每个客户都购买了各种各样的东西,并且您想找到客户花费的平均金额,按客户分组所有购买的总和,然后对结果进行平均。

我已经考虑过按表分组,但如果我这样做,则过滤器将无法正确应用于结果(除非有一种方法可以在 Power BI 中创建两者之间的关系,但我还没有找到该功能)。

有没有办法创建这个度量?

编辑:对表格和目标的更简洁的解释:

输入表

CustomerID | Total Transaction Amount | Payment Type
-----------|--------------------------|-------------
1          | 10.00                    | Card
1          |  5.00                    | Cash
2          |  5.00                    | Cash
Run Code Online (Sandbox Code Playgroud)

输出值

平均客户支出:(10.00
客户 1 花费 15 总和 10 + 5,客户 2 共花费 5)

用户点击交易类型下的现金过滤器:
平均客户支出更新为:(5.00
客户 1 总共花费了 5 次现金,客户 2 总共花费了 5 次现金)

dax powerbi

5
推荐指数
1
解决办法
9352
查看次数

Power Query 检查字符串是否包含列表中的字符串

有没有办法检查文本字段以查看它是否包含列表中的任何字符串?

要检查的示例字符串:

The raisin is green
The pear is red
The apple is yellow
Run Code Online (Sandbox Code Playgroud)

列出要验证的示例

red
blue
green
Run Code Online (Sandbox Code Playgroud)

结果将是

任何一个:

green
red
null
Run Code Online (Sandbox Code Playgroud)

或者:

TRUE
TRUE
FALSE
Run Code Online (Sandbox Code Playgroud)

contains list m powerquery

5
推荐指数
2
解决办法
2万
查看次数

具有“所有”单元格数据的PowerBI Matrix?

如何在Excel中创建关系矩阵中,我要求了一种在Excel中创建关系矩阵的方法-为方便起见,在此处复制:

1 A X
1 A Y
1 B X             A   B   C
1 B Z         1  X,Y X,Z
2 A Z   ==>   2   Z   X   Y
2 B X         3   Y   Z
3 A Y
3 A Z
2 C Y
Run Code Online (Sandbox Code Playgroud)

目前,我正在评估O365 PowerBI的相同功能。有一种看起来很有希望的矩阵可视化效果,但是对于单元格数据,无法选择“全部”或“连接”操作(如TEXTJOIN)。它只有“第一”或“最后”。

有什么办法可以在PowerBI中获得该关系矩阵功能?

dax office365 powerbi

5
推荐指数
1
解决办法
102
查看次数