1

2 つの浮動小数点数の計算に一致するエントリの結果を返すクエリがあります。IE、2 つの数値の加重合計が特定の範囲内にある場合:

Select 

    NON EMPTY Measures.AllMembers on 0
from (  
    Select
        Filter(MyDim.[p1].Children * MyDim.[p2].Children, 
               MyDim.[p1].CurrentMember.MemberValue * 0.5 +
           MyDim.[p2].CurrentMember.MemberValue * 0.5 >= 70 
           and
           MyDim.[p1].CurrentMember.MemberValue * 0.5 +
           MyDim.[p2].CurrentMember.MemberValue * 0.5 <= 90)
              on 0 
from MyCube])

このクエリは c# コードによって生成され、0.5 と 70 と 90 が変更されます。

まず、これを行うより良い方法はありますか?

次に、測定結果の範囲を返すクエリを作成するにはどうすればよいでしょうか? 何かのようなもの

-----------------------------------------------
< 70       | blah blah blah measures measures
70 - 90    | blah blah blah measures measures 
> 90       | blah blah blah measures measures
-----------------------------------------------

これをすべて単独で実行する (つまり、魔法でバケットを作成する) のは素晴らしいことですが、最初に可能な範囲を見つけてから、クエリ全体を手動 (またはコード) で書き出す必要があります。今のところ、個々のクエリを次々と実行するのではなく、WITH メンバーやセットなどを作成する方法を見つけることさえできません。

編集:1つのパラメーターについて、これは私が言うとうまくいきます

WITH
Member MyDim.p1.[<70] as
    Aggregate(Filter(MyDim.p1.members,
        MyDim.p1.CurrentMember.MemberValue < 70))
Member Mydim.p1.[70 - 90] as
    Aggregate(Filter(MyDim.p1.members,
        MyDim.p1.CurrentMember.MemberValue >= 70
        and MyDim.p1.CurrentMember.MemberValue <= 90))
Member MyDim.p1.[>90] as
    Aggregate(Filter(MyDim.p1.members,
        MyDim.p1.CurrentMember.MemberValue> 90))
Select {MyDim.p1.[<70],MyDim.p1.[70 - 90], MyDim.p1.[>90] on 1,
measures.Members on 0
from MyCube

これは、2 パラメータ クエリでは機能しないようです。

編集: 詳細情報 「パラメータ」とはどういう意味ですか? 異なる階層からの値? はい、正確に。上記のクエリの p1 と p2。

バケットをどのように決定しますか? あなたは「魔法」の背後にある理論的根拠を説明していません。 理想的には、立方体を構築するときに「離散化」が行うのと同じように、同じ数の観測値を持つバケットに分割されます。これは「魔法」です。最小値と最大値を取得し、範囲をサイズ (最大 - 最小)/n の n 個 (たとえば 10 個) のバケットに分割するだけで解決することを計画しています。

「うまくいかない」とはどういう意味ですか? 何を試し、どのようなエラー メッセージが表示されましたか? もう一度書き直して、クエリと結果をここに投稿する必要があります。数時間で完了します。私が試したのは2番目のクエリだったと思いますが、フィルタービットにp1 * p2があり、フィルター条件に加重合計があります。私はそれをすべて p1 階層に入れようとしていました。メモリから、実行されましたが、何もフィルタリングせずにすべての結果が返されました。これが曖昧であることを感謝し、ここで更新します。私はそれが大規模に間違っていると思ったので、その特定の実験を最初の質問に入れることを気にしませんでした.

4

0 に答える 0