สมมติว่า เรามีลูกบาศก์ที่มีมิติ 'ร้านขายของชำ' ซึ่งมีลำดับชั้น 2 ระดับ:
- Fruits & Vegetables Dep.
- Fruits
- ผัก
- มะเขือเทศ
- แตงกวา
- แผนกเบเกอรี่
- แผนกนม
คำถามคือ - ฉันจะเพิ่มระดับลำดับชั้นภายในแบบสอบถาม mdx ของรายงาน RDL ได้อย่างไรเพื่อให้สมาชิก 'มะเขือเทศ' และ 'แตงกวา' ย้ายไปยังระดับที่ 3 ใหม่ภายใต้ 'ผัก' ระดับที่ 2 ดั้งเดิม ฉันต้องทำสิ่งนั้นโดยไม่มีการเปลี่ยนแปลงใด ๆ กับ Cube ทั้งหมดนี้ทำได้โดยใช้ mdx ล้วนๆ เท่านั้น
เมื่อฉันพยายามสร้างชุดจากการคำนวณสำหรับระดับที่ 3 ที่ต้องการ และใช้ร่วมกับส่วนที่เหลือของลำดับชั้นเริ่มต้นดังนี้:
WITH SET [Level 3] AS
case
when [Grocery store].[Hierarchy].[Level 2].CURRENTMEMBER = [Grocery store].[Hierarchy].&[Tomatoes] OR
[Grocery store].[Hierarchy].[Level 2].CURRENTMEMBER = [Grocery store].[Hierarchy].&[Cucumbers]
then [Grocery store].[Hierarchy].[Level 2].CURRENTMEMBER
else null end
SELECT {[Measures].[Sales]} ON COLUMNS,
CrossJoin(Hierarchize( {[Grocery store].[Hierarchy].[Level 2]}
-{[Grocery store].[Hierarchy].&[Tomatoes],
[Grocery store].[Hierarchy].&[Cucumbers]}),
[Level 3]) ON ROWS
FROM [CUBE]
ฉันพบข้อผิดพลาดที่บอกว่าฟังก์ชัน crossjoin ไม่สามารถใช้ 'ร้านขายของชำ' ขนาดเดียวกันได้สองครั้ง