私はMDX全体にかなり慣れていませんが、以下は私をバタバタさせています。FILTER
私が使用しているステートメントは演技しています...奇妙なことに。コードサンプルとそれに続く説明:
SELECT
{
FILTER(
MEMBERS([Time].[5-4-4 Week Year]),
[Measures].[Ship Gross Units] > 0
)
}
ON COLUMNS,
{
FILTER(
MEMBERS([Group].[Alternate Hierarchies]),
[Measures].[Ship Gross Units] > 0
)
}
ON ROWS
FROM SBD.SBD
WHERE
(
[FiscalYear].[FY09],
[Scenario].[Actuals Total],
[Measures].[Ship Gross Units],
[Channel].[FOS]
)
会計年度の週ごとに、特定の販売チャネルの総ユニット数を取得しようとしています(一部の列がわずかにわかりにくくなっています)。これらのフィルターはすべて、SKUレベルで分割する必要があることが多いため、適切に配置されています。また、マシン上で切り捨てられたデータセットを処理する方が簡単です(DBに作業を任せてください)。
問題は、このクエリがFOSチャネルで0の売上を返すことです。それは奇妙に思えたので、行フィルターを削除しました。
SELECT
{
FILTER(
MEMBERS([Time].[5-4-4 Week Year]),
[Measures].[Ship Gross Units] > 0
)
}
ON COLUMNS,
MEMBERS([Group].[Alternate Hierarchies])
ON ROWS
FROM SBD.SBD
WHERE
(
[FiscalYear].[FY09],
[Scenario].[Actuals Total],
[Measures].[Ship Gross Units],
[Channel].[FOS]
)
そして突然、FOSチャネルに売り上げが表示されます。これは私の心を吹き飛ばします。以前は、売上を示す行のみを受信するようにフィルタリングしていると想定していましたが、何も取得しませんでした。今、私はすべてを示しています、そして売上高のある行があります。Perlなどでこの問題を回避するのは簡単ですが、私はむしろ「正しく」解決したいと思います。
ちょっとした細部を誤解しているのは確かですが、机に頭をぶつけるのはうんざりです。
ありがとう!