2016-04-27 120 views
0

我有一個連接到sql server數據庫的表格模式分析服務器。我想每月獲得總數x,並且每天有x個總數。因此,例如,我與前兩列像這樣的表DailyEvent,我想列「MonthXCount」:獲取DAX中每個月的總額

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

所以四月份的總XCOUNT是11,所以每天都在4月,我想11.可能的總計數是4(到目前爲止)。

我現在已經是一個MonthToDate總,我認爲,計算公式爲:

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

但我想,然後有一個放一個月的最後一個值在當月的每一天一列。

最終目標是在PowerBI中按月顯示一個XCount圖表,所以我可能不需要在這裏添加列...我可能只能告訴PowerBi繪製月份的最後一天,但我我不知道該怎麼做,並認爲這會更容易。

+1

是肯定的MDX的問題?或者它應該是dax? – whytheq

+0

這絕對是一個DAX問題。 – BICube

回答

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

非常感謝,但我不知道該把這個放在哪裏?我使用visual studio並查看Model.bim文件。我只是在上面的公式中輸入了fx框中的新列。我是新手,不知道如何應用你的建議。 – jcam77

+0

您在VStudio中使用哪種語言? SqlConnection sqlConnection1 = new SqlConnection(「Your Connection String」); SqlCommand cmd = new SqlCommand(); SqlDataReader閱讀器; cmd.CommandText =「SELECT * FROM Customers」; cmd.CommandType = CommandType.Text; cmd.Connection = sqlConnection1; sqlConnection1.Open(); reader = cmd.ExecuteReader(); // Data可通過此處的DataReader對象訪問。 sqlConnection1.Close(); – WickedFan

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) 

然後,在圖形和在Y軸的XCOUNT列的X軸下降該列。

0

您可以在Power BI或SSAS模型中使用度量計算,如果有日曆表,請確保將其標記爲日期表,否則時間邏輯將不起作用。我用下面的查詢(DAX),它計算本月至今

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

然而,如果沒有日曆或您與BE輻日曆的工作,這可能會幫助 Running Totals Whitout a Traditional Calendar Table