CUBEMEMBER ส่งกลับสมาชิกหรือ tuple จากคิวบ์ OLAP โดยใช้ MDX expression เพื่อระบุตำแหน่ง ใช้สำหรับตรวจสอบความมีตัวตนของสมาชิกและสร้าง tuple สำหรับ cube function อื่น
=CUBEMEMBER(connection, member_expression, [caption])
=CUBEMEMBER(connection, member_expression, [caption])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| connection | text | Yes | ชื่อของการเชื่อมต่อกับคิวบ์ ปกติเป็นชื่อที่ตั้งไว้ใน Data Models หรือชื่อแหล่งข้อมูล SSAS | |
| member_expression | text/range | Yes | MDX expression ที่ประเมินเป็นสมาชิกเดียว หรือ tuple ผ่านวงเล็บเหลี่ยม เช่น [Dimension].[Hierarchy].[Member] สามารถอ้างอิงเซลล์ได้ | |
| caption | text | Optional | ข้อความที่แสดงในเซลล์แทนชื่อจริงของสมาชิก หากไม่ระบุจะแสดงชื่อของสมาชิกเอง |
ใช้ CUBEMEMBER เพื่อตรวจสอบว่าปี 2004 มีอยู่ในมิติ Fiscal Time ของคิูบหรือไม่
ใช้ CUBEMEMBER เพื่อสร้าง tuple จากสมาชิกที่อยู่ในเซลล์ต่าง ๆ เช่น สมาชิกจากมิติ Time Product และ Store
CUBEMEMBER("Sales", "[Time].[Fiscal].[2004]")=CUBEMEMBER("Sales", "[Time].[Fiscal].[2004]")
2004
CUBEMEMBER("Sales", "([Time].[Fiscal].[2004], [Product].[Category].[Electronics])", "2004 Electronics")=CUBEMEMBER("Sales", "([Time].[Fiscal].[2004], [Product].[Category].[Electronics])", "2004 Electronics")
2004 Electronics
CUBEMEMBER("Sales", A1)=CUBEMEMBER("Sales", A1)
ค่าสมาชิกตามสูตร MDX ใน A1
CUBEMEMBER("Sales", (B4, C6))=CUBEMEMBER("Sales", (B4, C6))
Tuple ของสมาชิกจาก B4 และ C6
MDX (Multidimensional Expressions) เป็นภาษาของระบบ OLAP เหมือน SQL สำหรับ cubes ครับ ผมคิดว่าเขียนแบบ [Dimension].[Hierarchy].[Member] เช่น [Time].[Fiscal].[2004] หรือ [Geography].[Country].[Thailand] วงเล็บเหลี่ยมเป็นสิ่งที่ห้ามลืม ส่วน tuple คือรวมหลายสมาชิก เช่น ([Time].[2004], [Product].[Electronics]) อันนี้ผมเห็นหลายคนลืมวงเล็บนอก
ผมเห็นประเด็นนี้ชัด ๆ ครับ CUBEMEMBER ส่งกลับสมาชิกหรือ tuple เพื่อเช็คว่าหาได้ไหม ส่วน CUBEVALUE ส่งกลับค่าตัวเลขจริง ๆ จากคิวบ์ ผมใช้ CUBEMEMBER ก่อนเสมอเพื่อ validate tuple ก่อนส่งไป CUBEVALUE จะได้ค่าถูกต้องและไม่ได้ #N/A ตั้งแต่เริ่ม
Tuple คือชุดของสมาชิก หนึ่งตัวจากแต่ละมิติ ใช้ระบุตำแหน่งเฉพาะในคิวบ์หลายมิติ เช่น ([Time].[2004], [Product].[Sales], [Location].[Bangkok]) ก็คือจุดตัดระหว่างปี 2004 ประเภท Sales และเมืองกรุงเทพ ผมใช้ tuple เมื่อต้องเอา aggregate value จากเซลล์เดียว ไม่ใช่ช่วง
จะได้ #N/A error ครับ ผมเห็นเรื่องนี้บ่อยตอนเขียน MDX ต้องเช็ค (1) วงเล็บเหลี่ยมครบไหม (2) ชื่อ dimension hierarchy member ถูกไหม (3) tuple มี element จากแต่ละมิติไหม ถ้าเกิน 255 ตัวอักษรก็เก็บไว้ในเซลล์ใช่ ไม่ใช่ยัดเข้าสูตรโดยตรง
CUBEMEMBER ดึงสมาชิก (member) หรือชุดของสมาชิก (tuple) จากคิวบ์ OLAP โดยใช้ MDX expression ที่ให้ตำแหน่งที่ชัดเจน วิธีการนี้เหมือนการให้ที่อยู่ GPS ไปยังสมาชิกที่ต้องการในสเปซหลายมิติของคิวบ์ ฟังก์ชันจะตรวจสอบความถูกต้องของ expression ก่อนส่งกลับผลลัพธ์
ที่เจ๋งคือ CUBEMEMBER validate ว่าสมาชิกจริง ๆ มีอยู่ในคิวบ์หรือไม่ และช่วยหลีกเลี่ยง #N/A error จากฟังก์ชัน cube อื่น โดยการตรวจสอบ tuple ก่อนส่งเข้า ทำให้การสร้างแดชบอร์ด OLAP ที่มีความเสี่ยงจากข้อมูลไม่ครบถ้วนนั้นปลอดภัยขึ้น
ส่วนตัวผมใช้ CUBEMEMBER เมื่อต้องสร้าง dynamic dashboard ที่เชื่อมต่อกับ Excel Data Models หรือ SSAS cubes ผมเคยติดปัญหากับ tuple ที่ซับซ้อน แต่หลังจากใช้ CUBEMEMBER เพื่อ validate ก่อนก็ง่ายขึ้นมาก 😎