2016-04-27 28 views
0

私はSQL Serverデータベースに接続された表形式のモード解析サーバーを持っています。私は1ヶ月あたり合計xを取得したい、そして、私は1日あたり合計xを持っています。したがって、たとえば、私はこのような最初の2列のテーブルDailyEventを持っている、と私はコラム「MonthXCount」をしたい:DAXの各月の合計金額を取得

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

だから、4月の総XCountは、私が欲しい月に毎日のためになるよう、11です11. mayの総Xカウントは4(これまでのところ)です。

は、私が今持っていることのように算出私は思うMonthToDate合計、次のとおりです。

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

しかし、私はその後、月の毎日のために月の最後の値を置く列を持っていると思います。

最終目標は、PowerBIの月グラフでXCountを持つことです。ここで列を追加する必要はないかもしれません...月の最終日をグラフにするようにPowerBiに指示することはできますが、それをどうやって行うのか分からず、これがより簡単になると思った。

+1

は間違いで役立つ可能性がある場合、それは日

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

ヶ月算出し、 mdx質問ですか?それともダックスですか? – 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 =新しいSqlConnection( "接続文字列"); SqlCommand cmd =新しいSqlCommand(); SqlDataReaderリーダー。 cmd.CommandText = "SELECT * FROM Customers"; cmd.CommandType = CommandType.Text; cmd.Connection = sqlConnection1; sqlConnection1.Open(); reader = cmd.ExecuteReader(); // DataReaderオブジェクトからデータにアクセスできます。 sqlConnection1.Close(); – WickedFan

0

データテーブルに接続されたモデルにカレンダーテーブルがありますか?

はい、のカレンダー表がDimDateと呼ばれているとしましょう、それがYEARMONTHという列が含まれていることをした場合、次の式は次のようになります。

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

あなたはカレンダー表を持っていない場合

=LEFT(DailyEvent[TimeID], 6) 

が続いて月の売上高の合計を計算します:、あなたは、この式でYEARMONTHと呼ばれるテーブル内の計算列を作成することができます

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

使用していた式に関するメモ: TOTALMTDなどの時間インテリジェンス関数には、カレンダーテーブルが必要です。したがって、データモデルを使用する前に、データモデルに必ず追加してください。

編集:次に、グラフのY軸にXCount列のX軸方向にその列を削除

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

別の解決策は、日付列を作成することができました。

0

Power BIまたはSSASモデルでメジャー計算を使用できます。カレンダーテーブルがある場合は、それが日付テーブルとしてマークされていることを確認してください。そうでない場合、時間ロジックは機能しません。私は次のクエリ(DAX)を使用しかし、そこにはカレンダーがありませんか、BE-スポークカレンダーで作業している、これは Running Totals Whitout a Traditional Calendar Table

関連する問題