首页 文章

获取DAX中每个月的总金额

提问于
浏览
0

我有一个连接到SQL Server数据库的表格模式分析服务器 . 我想得到每月的总x,我每天总x . 因此,例如,我有一个表DailyEvent,前两列像这样,我想要列“MonthXCount”:

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

所以4月份的总XCount是11,所以对于4月份的每一天我都想要11.对于may的总X计数是4(到目前为止) .

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

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

但是我希望有一个列,将该月的最后一个值放入该月的每一天 .

最终目标是在PowerBI中有一个XCount的月份图,所以我可能不需要在这里添加列...我可能只能告诉PowerBi绘制该月的最后一天,但我不确定怎么做,并认为这会更容易 .

3 回答

  • 0
    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();
    
  • 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轴上 .

  • 0

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

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

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

相关问题