0

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

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

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

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

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

但是我想有一个列,将月份的最后一个值放入该月的每一天。

最终目标是在 PowerBI 中按月绘制 XCount 图表,因此我可能不需要在此处添加列...我可能可以告诉 PowerBi 绘制该月的最后一天,但我不确定如何做到这一点,并认为这会更容易。

4

3 回答 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();
于 2016-04-27T18:15:45.563 回答
0

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

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

但是,如果没有日历或者您正在使用定制日历,这可能有助于 在传统日历表之外运行总计

于 2016-05-02T16:14:25.070 回答
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 轴上。

于 2016-05-01T19:52:43.110 回答