MDX باستثناء الوظيفة في مكان البند
سؤال
أواجه مشكلة في تقييد الاستعلام في MDX ، باستخدام الوظيفة باستثناء FUNCTION AN WHERE CHELAUSE. أحتاج إلى استرداد مجموعة من البيانات ولكن ليس في مجموعة محددة. ثم قمت بإنشاء الاستعلام التالي:
select {[Measures].[Amount], [Measures].[Transaction Cost], [Measures].[Transaction Number]} ON COLUMNS,{[ManualProcessing].[All ManualProcessings].[MAGNETICSTRIPE], ManualProcessing].[All ManualProcessings].[MANUAL]} ON ROWS
FROM [Transactions]
where except([Product].[All Products].Children,{[Product].[All Products].[Debit})
يبدو أن هذا يعمل بشكل جيد ، لكن عندما أحاول إضافة تقييد آخر إلى Slicer ، حصلت على هذا الخطأ: لا توجد وظيفة تتطابق مع توقيع (مجموعة ، عضو).
أنا أعمل حاليًا على موندريان 3.1
هل من الممكن إضافة قيود متعددة إلى Slicer عندما أغني الوظيفة باستثناء الوظيفة؟ هل هناك أي طريقة أخرى للحصول على هذا؟
المحلول 2
من الواضح أن هذا لا يمكن القيام به على موندريان ، لأن هناك خطأ لا يسمح بالقطاعات المركبة. لقد وجدت حلولًا لطيفة باستخدام خادم OLAP Mondrian. إنه إنشاء عضو يستبعد المجموعة التي لم أكن أريدها. تبدو هكذا.
WITH member [Product].[Except] as ([Product].[All Products]) -
([Product].[All Products].[Debit])
SELECT {[Measures].[Amount],[Measures].[Transaction Cost], [Measures].[Transaction Number]} ON COLUMNS,
{[ManualProcessing].[All ManualProcessings].[MAGNETICSTRIPE],[ManualProcessing].[All ManualProcessings].[MANUAL]} ON ROWS
FROM [Transactions]
WHERE[Product].[Except]
نصائح أخرى
ال باستثناء الوظيفة يعمل فقط مع مجموعات. ولكن يمكنك استخدام أبعاد n على where
:
select {[Measures].[Amount], [Measures].[Transaction Cost], [Measures].[Transaction Number]} ON COLUMNS,{[ManualProcessing].[All ManualProcessings].[MAGNETICSTRIPE], ManualProcessing].[All ManualProcessings].[MANUAL]} ON ROWS
FROM [Transactions]
where
(
except([Product].[All Products].Children,{[Product].[All Products].[Debit}),
except([Set],[Set to exclude])
)
هذا يعمل في خدمات التحليل 2005 ، يجب أن يعمل في موندريان