2016-04-27 9 views
0

ich einen tabellarischen Modus Analyseserver mit einer SQL Server-Datenbank verbunden habe. Ich mag die Gesamt x pro Monat bekommen, und ich habe die Gesamt x pro Tag. So zum Beispiel, habe ich eine Tabelle DailyEvent mit den ersten 2 Spalten so, und ich mag, dass die Spalte „MonthXCount“:für jeden Monat in DAX Gesamtsumme Get

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

so die Gesamt XCount für April 11, so dass für jeden Tag im April ich will 11. Die Gesamtzahl X für Mai ist 4 (bisher).

Was ich jetzt haben, ist ein MonthToDate insgesamt denke ich, wie folgt berechnet:

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

Aber ich möchte dann eine Spalte haben, der den letzten Wert des Monats in für jeden Tag des Monats bringt.

Das Endziel ist es, ein XCount nach Monat Grafik in PowerBI, also muss ich möglicherweise nicht die Spalte hier hinzufügen ... Ich könnte in der Lage sein, nur sagen, PowerBi den letzten Tag des Monats, aber ich bin mir nicht sicher, wie ich das machen soll und dachte, das wäre einfacher.

+1

das ist definitiv ein mdx Frage? oder sollte es dax sein? – whytheq

+0

Dies ist definitiv eine Frage DAX. – BICube

Antwort

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

Vielen Dank, aber ich bin mir nicht sicher, wo ich das hinstellen soll? Ich benutze Visual Studio und schaue mir die Model.bim Datei an. Ich habe gerade die obige Gleichung als neue Spalte in der FX-Box eingegeben. Ich bin neu und weiß nicht, wie ich das anwenden soll, was Sie vorgeschlagen haben. – jcam77

+0

Welche Sprache verwenden Sie in VStudio? SqlConnection sqlConnection1 = neue SqlConnection ("Ihre Verbindungszeichenfolge"); SqlCommand cmd = neuer SqlCommand(); SqlDataReader-Leser; cmd.CommandText = "SELECT * FROM Kunden"; cmd.CommandType = Befehlstyp.Text; cmd.Connection = sqlConnection1; sqlConnection1.Open(); reader = cmd.ExecuteReader(); // Daten sind hier über das DataReader-Objekt zugänglich. sqlConnection1.Close(); – WickedFan

0

Haben Sie eine Kalendertabelle in Ihrem Modell, die mit Ihrer Datentabelle verbunden ist?

Wenn ja, sagen wir mal die Kalender Tabelle DimDate genannt wird und dass es eine Spalte YearMonth, dann wäre die Formel genannt enthält:

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

Wenn Sie keinen Kalender Tabelle , dann können Sie eine berechnete Spalte in der Tabelle mit dem Namen YearMonth mit dieser Formel erstellen:

=LEFT(DailyEvent[TimeID], 6) 

dann mit der Summe des Monatsumsatzes berechnen:

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

Hoffe, das hilft!

Ein Hinweis in Bezug auf die von Ihnen verwendete Formel: Zeitintelligenzfunktionen wie TOTALMTD erfordern Kalendertabellen. Stellen Sie daher sicher, dass Sie vor der Verwendung ein Datenmodell hinzufügen.

Edit:

Eine andere Lösung könnte sein, eine Datumsspalte zu erstellen:

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

fallen dann diese Spalte in der X-Achse des Diagramms und der XCount Spalte in der Y-Achse.

0

Sie eine Kennzahlberechnung in Energie BI nutzen könnte, oder in SSAS-Modell, wenn es eine Kalender-Tabelle ist, stellen Sie sicher, dass es als Datum-Tabelle markiert ist sonst die Logik Zeit nicht funktionieren. Früher habe ich die folgende Abfrage (DAX) den Monat berechnet

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

To Date Wenn jedoch kein Kalender ist oder Sie arbeiten mit dem be-Speichen-Kalender, das helfen kann Running Totals Whitout a Traditional Calendar Table