0

わかりました、ここに行きます。

ファクト テーブル (Fact_Sales) があります。場合によっては、一部の売上が SPECIAL (請求明細行だけでなく、請求書全体) としてフラグ付けされます。したがって、フィールド IsSpecial は、特定の請求書のすべての請求書明細行で TRUE になります。

これは TRUE/FALSE フラグです (したがって、ファクト テーブルでビットを使用したいと思います)。

データの例を次に示します: (サンプルを忘れてください。テーブルを投稿したり、HTML テーブルを作成したり、テキストをスペース付きのテーブルとしてフォーマットしたりすることはできません)...想像してみてください...

現在、私の SSAS2005 キューブは良好で、非常にうまく機能しています。

最初の試行: InvoiceID または NULL を FLAG フィールドに配置し、それを DISTINCT COUNT します

私の最初の試みでは、InvoiceID または NULL を IsSpecial フィールド (これはバイトではありませんでした) に入れ、メジャーを新しいメジャー グループに追加することによって直接 DISTINCT COUNT を実行しました (したがって、ここでは MDX はありません)。ただし、SSAS はそれほど明快ではなく、NULL をオカレンスとしてカウントします。したがって、私は常に「1」を最小値と見なします(「NULL」の発生が多いため、カウントは 1 です)。ベース メジャー ソースを Preserve Null または ZeroOrBlank に変更しようとしましたが、それでもどこでも値 '1' が表示されます (実際に IsSpecial がある場合を除く)。

2 回目の試行: IsSpecial 'メジャー' を DISTINCT カウントする MDX クエリを作成しています

ここでそれを読みました:http://ask.sqlservercentral.com/questions/50286/calculated-member-to-get-distinct-count-on-a-condi.html。私の問題は、比較する次元がないことです。つまり、私は何を期待していますか?

3 回目の試行: 寸法を作成します。 番号。私が行きたい道に注意してください。私の顧客は、すべてのメジャーを 2 つのメンバー (特別な請求書と通常の請求書) に分割したくありません。「Nb of Special Invoice」という名前の 1 つの新しいメジャーのみが必要です。

お気づきかもしれませんが、私の SSAS 機能はあまり良くありません。3 ~ 4 年間触れていないので、私のクライアントは私にそうしてほしいと思っています...

ありがとう

4

1 に答える 1

1

ディメンション に属性を作成したくないのはなぜですか? 計算スクリプトに何も書く必要がなく、アクセスが速く、ユーザーにとって使いやすいです。

SPECIAL フラグはメジャーではありません。合計のような意味のある集計を持つ数値ではありません。これは分類です。つまり、"Special" や "Standard" などのメンバー値を持つ属性に入れる必要があります。

ユーザー インターフェイスをメジャー "Nb of Invoices" として実装する場合でも、最良の方法は属性を使用することです[Dim1].[SpecialFlag]

([Measures].[Nb of Invoices], [Dim1].[SpecialFlag].[Special])
于 2013-10-24T21:50:21.693 に答える