1
select measures.name on 0,
datediff("d", [Fecha].[Date].currentmember.member_value, [Dim Date].[Date].currentmember.member_value) on 1
from cube

エラー: マネージド ストアド プロシージャ datediff の実行が次のエラーで失敗しました: 呼び出しのターゲットによって例外がスローされました。引数 'Date1' は型 'Date' に変換できません

mdx で datediff を実行するための要件はありますか? ディメンションでは、これらのメンバーは日時として定義されていますが、これが結果に影響するかどうかはわかりません...

更新: データソース ビューで計算を行うことで問題を解決し、必要なインジケーターを作成するために MDX で使用できるメジャーをキューブに追加しました。もちろん、これはすべて SSAS を使用して結果をテストし、SSDT をメンバーの作成に使用しています。これが最良のシナリオかどうかはわかりませんが、このアプローチが多くの人に役立つことを願っています。ハッピーMDX ;)

4

2 に答える 2

0

デフォルトでは、軸には member_value ではなく、常に文字列であるメンバー名が表示されます。Member_Value はメジャーです。

With Member MyDateDiff as
  datediff("d", [Fecha].[Date].currentmember.member_value, [Dim Date].[Date].currentmember.member_value)
Select 
  (Measures.MyDateDiff, Measures.Name) on 0
  (Fecha.Date.Members, [Dim Date].[Date].Members) on 1
From cube

編集

私もこれにはまだ慣れていませんが、あなたのコメントの後、同様のクエリを正しく行うために行ったプロセスについて詳しく説明する必要があると思いました.

まず、自分が思っているデータを取得していることを確認してください。これらの Member_Value メジャーを列デ​​ィメンションに取得します。

With 
  Member FechaDate as
      [Fecha].[Date].currentmember.member_value
  Member MyDate as
      [Dim Date].[Date].currentmember.member_value
Select 
      (Measures.FechaDate, Measures.MyDate) on 0
      (Fecha.Date.Members, [Dim Date].[Date].Members) on 1
From cube

日付値を取得していますか? はいの場合は、datediff 関数を試してください。そうでない場合は、ディメンションの定義を確認してください。属性の 1 つの ValueColumn が、日付値フィールドなどではなくキー フィールドに設定されていても驚かないでしょう。

于 2012-09-26T19:05:35.087 に答える
0

2 つの手順が必要になる場合がありますが、日付を追加する方法で問題ありません。Bill の Member アプローチは優れていますが、日付オブジェクトではなく文字列として返されます。正しい形式であれば、次のことができるはずです。

Member MyDate as
DATEDADD("d", 1, VBAMDX!CDate([Dim Date].[Date].currentmember.member_value))

日付文字列がどのようにフォーマットされるかによっては、もう少し作業が必要になる場合があります。

于 2012-09-28T08:12:28.407 に答える