SQL Server 获取DAX中每个月的总额

cetgtptt  于 2022-11-21  发布在  其他
关注(0)|答案(3)|浏览(149)

我有一个连接到sql server数据库的表格模式分析服务器。我想得到每月的总数x,并且我有每天的总数x。例如,我有一个表DailyEvent,它的前2列如下所示,我想得到列“MonthXCount”:

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

所以四月的总X计数是11,所以四月的每一天我都想要11。五月的总X计数是4(到目前为止)。
我现在拥有的是MonthToDate总计,计算方式如下:

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

但是我希望有一个列,把一个月的最后一个值放进一个月的每一天。
最终目标是在PowerBI中创建一个按月划分的XCount图表,因此我可能不需要在此处添加列......我可能只需要告诉PowerBI绘制一个月的最后一天,但我不确定如何执行此操作,我认为这样会更容易。

aydmsdu9

aydmsdu91#

SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;

cmd.CommandText = "begin transaction t    
    update table dailyevent
    set monthxcount = (select top(1) monthxcount 
                            from dailyevent 
                            where MONTH(timeID) = 4 
                            order by monthxcount desc)
    where MONTH(timeID) = 4

    --commit only if the rows affected corresponds to the number of rows found for the month of april.

    commit";
cmd.CommandType = CommandType.Text;
cmd.Connection = sqlConnection1;

sqlConnection1.Open();

reader = cmd.ExecuteReader();
// Data is accessible through the DataReader object here.

sqlConnection1.Close();
dzjeubhm

dzjeubhm2#

您的模型中是否有连接到数据表的日历表?
如果是,假设日历表名为 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轴上。

xt0899hw

xt0899hw3#

您可以在Power BI或SSAS模型中使用度量计算,如果存在日历表,请确保将其标记为日期表,否则时间逻辑将不起作用。

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

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

相关问题