获取DAX中每个月的总金额

时间:2016-04-27 17:55:52

标签: sql-server dax ssas-tabular

我有一个连接到sql server数据库的表格模式分析服务器。我想得到每月的总x,我每天总x。因此,例如,我有一个表DailyEvent,前两列是这样的,我想要列" MonthXCount":

TimeID   XCount MonthXCount
20160429  3          11
20160430  8          11
20160501  4           4

所以4月份的总XCount是11,所以4月份的每一天我想要11个。可能的总X数是4(到目前为止)。

我现在所拥有的是MonthToDate总数,我认为计算如下:

=TOTALMTD(SUM('DailyEvent'[XCount]),'DailyEvent'[TimeID])

但是我希望有一个专栏,将月份的最后一个值放在该月的每一天。

最终目标是在PowerBI中有一个按月计算的XCount,所以我可能不需要在这里添加列...我可能只能告诉PowerBi绘制该月的最后一天,但是我&# 39;我不知道该怎么做,并认为这会更容易。

3 个答案:

答案 0 :(得分:0)

cat fifo

答案 1 :(得分:0)

您的模型中是否有连接到数据表的日历表?

如果是,请说日历表名为 DimDate ,并且它包含一个名为 YearMonth 的列,则公式为:

Month Sales := SUMX(
                    VALUES(DimDate[YearMonth]),
                    SUM(DailyEvent[XCount])
                    )

如果您没有日历表,那么您可以使用以下公式在表格中创建名为YearMonth的计算列:

=LEFT(DailyEvent[TimeID], 6)

然后用:

计算月销售额的总和
Month Sales := SUMX(
                    VALUES(DailyEvent[YearMonth]),
                    SUM(DailyEvent[XCount])
                    )

希望这有帮助!

关于您使用的公式的说明: 时间智能功能,例如TOTALMTD,需要日历表。因此,在使用数据模型之前,请务必添加一个。

编辑:

另一种解决方案可能是创建日期列:

     = DATE(
            LEFT(DailyEvent[TimeID], 4), 
            MID(DailyEvent[TimeID], 5, 2), 
            1)

然后将该列放在图形的X轴上,将XCount列放在Y轴上。

答案 2 :(得分:0)

您可以在Power BI或SSAS模型中使用度量计算,如果有日历表,请确保将其标记为日期表,否则时间逻辑将不起作用。我使用以下查询(DAX)计算月初日期

MtD :=CALCULATE(SUM('DailyEvent'[XCount]),DATESMTD('DateTabe'[calendarDate]))

但是,如果没有日历,或者您正在使用be-spoke日历,这可能有所帮助 Running Totals Whitout a Traditional Calendar Table