首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用功率BI计算梯度的问题

使用功率BI计算梯度的问题
EN

Stack Overflow用户
提问于 2018-11-14 17:52:12
回答 1查看 1.1K关注 0票数 1

我正在试图计算通过数据集中包含的一系列点的趋势线的梯度。我已经研究过了,看看是否有内置的函数来完成这个任务,而且似乎没有,所以我是手动完成的。我不是DAX专家(也可能不是数学专家!)

我在excel中创建了一个表格,以了解一个简单的示例,这样我就知道我的目标是什么:

在Power环境中,在“月份和年份”列上有两个表。以下是这些表格的简略说明:

请注意,图中的“订单”在Power代码中称为“每日特殊订单”。

步骤1

创建平均月份数的度量:

代码语言:javascript
复制
Average of months =
    - AVERAGEX (
        SUMMARIZE (
            CALCULATETABLE ( Query_GSR, ALLSELECTED ( User_Friendly_Months ) ),
            Query_GSR[Month&Year],
            "AvMonths", AVERAGE ( Query_GSR[MonthNumForSlope] )
        ),
        [AvMonths]
    )

我在表达部分使用平均值,这样2018年9月的记录在"AvMonths“栏中为21,然后在2018年10月-2018年为22。我想我可以使用MIN或MAX,因为他们都会说21或22,这取决于月份(只有一个要避免的是和,因为这将把他们全部加起来)。

我还试图这样做,方法是总结并创建一个NATURALLEFTOUTERJOIN到User_Friendly_Months表中,以获得这些月份的月份号,当将该值合并到此过程的其余部分时,该度量将花费很长时间来计算(即使它最终确实在某种程度上有效)。

步骤2

对订单也要这样做:

代码语言:javascript
复制
Average of special orders =
- AVERAGEX (
    SUMMARIZE (
        CALCULATETABLE ( Query_GSR, ALLSELECTED ( User_Friendly_Months ) ),
        Query_GSR[Month&Year],
        "Special OPD", [Special orders per day]
    ),
    [Special OPD]
)

步骤3

在我的原始图片中执行步骤"C“的计算:

代码语言:javascript
复制
Column_C_Step =
SUMX (
    SUMMARIZE (
        CALCULATETABLE ( Query_GSR, ALLSELECTED ( User_Friendly_Months ) ),
        Query_GSR[Month&Year],
        "Special OPD", [Special orders per day],
        "MonthNum", AVERAGE ( Query_GSR[MonthNumForSlope] )
    ),
    ( [Special OPD] + [Average special orders] )
        * ( [MonthNum] + [Average of MonthNums] )
)

在我的示例中,该度量没有返回-11.95,而是返回零。

当我这么做时:

代码语言:javascript
复制
Check_orders_worked =
SUMX (
    SUMMARIZE (
        CALCULATETABLE ( Query_GSR, ALLSELECTED ( User_Friendly_Months ) ),
        Query_GSR[Month&Year],
        "Special OPD", [Special orders per day],
        "MonthNum", AVERAGE ( Query_GSR[MonthNumForSlope] )
    ),
    [Special OPD]
)

...I get 1188.9,这是我的Excel表格插图中的“订单”总数(所以必须正常工作)。

当我这么做时:

代码语言:javascript
复制
Check_months_worked =
SUMX (
    SUMMARIZE (
        CALCULATETABLE ( Query_GSR, ALLSELECTED ( User_Friendly_Months ) ),
        Query_GSR[Month&Year],
        "Special OPD", [Special orders per day],
        "MonthNum", AVERAGE ( Query_GSR[MonthNumForSlope] )
    ),
    [MonthNum]
)

...I get 43,这是我的插图中Month_Num的总数(同样,肯定是工作的)。

但是,当我试图在A和B上执行相当于SUMPRODUCT的值以得到C时,它返回零。

有人能弄清楚到底是怎么回事吗?

快把我逼疯了。

或者,如果有更简单的方法来进行梯度计算,我会和joy一起哭。

谢谢

更新

为了完整起见,以下是行之有效的措施:

代码语言:javascript
复制
Step_C_Measure =
VAR _OrdersAverage = [Average special orders]
VAR _MonthsAverage = [Average of MonthNums]
RETURN
    SUMX (
        SUMMARIZE (
            CALCULATETABLE ( Query_GSR, ALLSELECTED ( User_Friendly_Months ) ),
            Query_GSR[Month&Year],
            "Special OPD", [Special orders per day],
            "MonthNum", AVERAGE ( Query_GSR[MonthNumForSlope] )
        ),
        ( [Special OPD] + _OrdersAverage )
            * ( [MonthNum] + _MonthsAverage )
    )

然后步骤D:

代码语言:javascript
复制
Step_D_Measure =
VAR _MonthsAverage = [Average of MonthNums]
RETURN
    SUMX (
        SUMMARIZE (
            CALCULATETABLE ( Query_GSR, ALLSELECTED ( User_Friendly_Months ) ),
            Query_GSR[Month&Year],
            "Special OPD", [Special orders per day],
            "MonthNum", AVERAGE ( Query_GSR[MonthNumForSlope] )
        ),
        ( [MonthNum] + _MonthsAverage )
            * ( [MonthNum] + _MonthsAverage )
    )

最后求出梯度:

代码语言:javascript
复制
Special order gradient =
DIVIDE ( Step_C_Measure, Step_D_Measure, "" )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-14 19:09:34

在关于多元线性回归的一个问题中,我链接到了一个基本线性回归的社区邮政

在您的情况下,计算斜率的公式可以类似于以下内容:

代码语言:javascript
复制
Slope = 
VAR RowCount = COUNTROWS(Query_GSR)
VAR Sum_X = SUMX(Query_GSR, Query_GSR[Month_Num])
VAR Sum_Y = SUMX(Query_GSR, Query_GSR[Orders])
VAR Sum_XY = SUMX(Query_GSR, Query_GSR[Month_Num] * Query_GSR[Orders])
VAR Sum_XX = SUMX(Query_GSR, Query_GSR[Month_Num] * Query_GSR[Month_Num])
RETURN DIVIDE(RowCount * Sum_XY - Sum_X * Sum_Y, RowCount * Sum_XX - Sum_X * Sum_X)

这适用于多个月的回归,而不仅仅是两个月。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53306114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档