CUBEVALUE ดึงค่าที่รวม (aggregated value) จากคิูบ OLAP ผ่านการเชื่อมต่อ Power Pivot ใช้กำหนดมิติและสมาชิกเพื่อได้ยอดขาย กำไร หรือตัวชี้วัดอื่นจากคิูบ
=CUBEVALUE(connection, [member_expression1], [member_expression2], ...)
=CUBEVALUE(connection, [member_expression1], [member_expression2], ...)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| connection | Text | Yes | ข้อความที่ระบุชื่อการเชื่อมต่อกับคิููบ (เช่น “Sales”) ที่ถูกเก็บไว้ในเวิร์กบุ๊ก | |
| member_expression1 | Text (MDX) | Optional | ข้อความของ MDX expression ที่ระบุมิติและสมาชิกในคิูบ เช่น “[Measures].[Sales]” หรือ “[Time].[2024]” | |
| member_expression2 | Text (MDX) | Optional | ข้อความของ MDX expression เพิ่มเติมเพื่อระบุมิติและสมาชิกในคิููบ สามารถมีได้หลายตัวขึ้นอยู่กับโครงสร้างคิููบ |
ใช้ CUBEVALUE เพื่อดึงยอดขายรวมสำหรับเขตและปีที่กำหนด เช่น ยอดขายของเขต North ในปี 2004
ใช้ CUBEVALUE เพื่อดึงกำไรรวมสำหรับสินค้าเฉพาะหรือหมวดหมู่สินค้า
CUBEVALUE("Sales", "[Measures].[Sales]", "[Time].[2024]", "[Product].[Beverages]")=CUBEVALUE("Sales", "[Measures].[Sales]", "[Time].[2024]", "[Product].[Beverages]")
1,250,000
CUBEVALUE($A$1, "[Measures].[Profit]", $B2, C$3)=CUBEVALUE($A$1, "[Measures].[Profit]", $B2, C$3)
350,000
IF(ISTEXT(CUBEVALUE("Sales", "[Measures].[Orders]", "[Product].[Unknown]")), "ไม่มีข้อมูล", CUBEVALUE("Sales", "[Measures].[Orders]", "[Product].[Unknown]"))=IF(ISTEXT(CUBEVALUE("Sales", "[Measures].[Orders]", "[Product].[Unknown]")), "ไม่มีข้อมูล", CUBEVALUE("Sales", "[Measures].[Orders]", "[Product].[Unknown]"))
ไม่มีข้อมูล
CUBEVALUE("Sales", "[Measures].[Sales]", CUBESET("Sales", "[Product].[Category]", "[Product].[Category].[Beverages]"))=CUBEVALUE("Sales", "[Measures].[Sales]", CUBESET("Sales", "[Product].[Category]", "[Product].[Category].[Beverages]"))
2,500,000
ใช่ ผมต้องมีแหล่งข้อมูล OLAP cube เช่น Power Pivot หรือ SQL Server Analysis Services จึงจะใช้ CUBEVALUE ได้ หากใช้ข้อมูลทั่วไป ให้ใช้ VLOOKUP หรือ INDEX MATCH แทน
ผมอธิบายให้ CUBEMEMBER ส่งกลับสมาชิก (member) ของคิูบเป็นข้อความ ส่วน CUBEVALUE ส่งกลับค่าที่รวม (aggregated value) เป็นตัวเลข เช่น CUBEMEMBER ให้ “[Product].[Beverages]” แต่ CUBEVALUE ให้ 1,250,000
ผมพบว่า NULL value จากคิูบแสดงเป็น 0 หรือข้อความว่าง ซึ่งอาจปิดบังข้อมูลที่ขาด ต้องใช้ IF+ISTEXT เพื่อแยกแยะค่า NULL และข้อมูลที่ค่าจริง ๆ เป็น 0
CUBEVALUE เป็นฟังก์ชันที่ดึงค่าจากคิูบ OLAP (Online Analytical Processing) ซึ่งเป็นแหล่งข้อมูลหลายมิติของ Power Pivot หรือ SQL Server Analysis Services ต้องระบุการเชื่อมต่อและใช้ MDX expressions (Multidimensional Expression) เพื่อกำหนดมิติและสมาชิก เช่น [Measures].[Sales] หรือ [Time].[2024] ผลลัพธ์คือค่าที่รวมจากคิูบตามเงื่อนไขที่กำหนด
ที่เจ๋งคือ ผม สามารถใช้ CUBEVALUE ร่วมกับ CUBESET เพื่อดึงค่าสำหรับชุดสมาชิกที่กำหนดได้ และสามารถผสมผสาน absolute reference ($A$1) กับ member expressions เพื่อสร้างรายงานแบบไดนามิก เมื่อข้อมูล NULL ฟังก์ชันจะแสดง 0 หรือข้อความว่าง ต้องใช้ IF+ISTEXT เพื่อจัดการ
ส่วนตัวผม ใช้ CUBEVALUE เมื่อต้องดึงค่าจากคิูบเพียงอย่างเดียว หากต้องดึงสมาชิกหรือชุดให้ใช้ CUBEMEMBER หรือ CUBESET แทน เนื่องจาก CUBEVALUE มักให้ผลลัพธ์เป็นตัวเลข 😎