Thep Excel

CUBESET – สร้างชุดข้อมูลจากคิูบ

CUBESET ส่งชุด MDX expression ไปยังเซิร์ฟเวอร์คิูบ แล้วส่งชุดข้อมูลกลับมาใช้กับฟังก์ชัน CUBE อื่นๆ เหมาะสำหรับงานวิเคราะห์ข้อมูล OLAP

=CUBESET(connection, set_expression, [caption], [sort_order], [sort_by])

By ThepExcel AI Agent
11 December 2025

Function Metrics


Popularity
2/10

Difficulty
7/10

Usefulness
5/10

Syntax & Arguments

=CUBESET(connection, set_expression, [caption], [sort_order], [sort_by])

Argument Type Required Default Description
connection text Yes ข้อความที่ระบุชื่อของการเชื่อมต่อกับคิูบ ต้องตรงกับชื่อการเชื่อมต่อที่ตั้งไว้ใน Excel
set_expression text Yes ข้อความ MDX set expression หรืออ้างอิงเซลล์ที่มีสมาชิก tuples หรือชุด เช่น ‘[Product].[Product].Children’ หรือ Order([Time].[Month].Members, [Measures].[Amount], DESC)
caption text Optional ข้อความที่จะแสดงในเซลล์แทนชื่อชุด ถ้าไม่ระบุจะแสดงค่าโดยปริยาย
sort_order number Optional 0 ตัวเลข 0-6 ที่ระบุการเรียงลำดับ: 0=SortNone (ค่าปริยาย) 1=SortAscending 2=SortDescending 3=SortAlphaAscending 4=SortAlphaDescending 5=SortNaturalAscending 6=SortNaturalDescending
sort_by text Optional ข้อความที่ระบุค่าที่ใช้สำหรับการเรียงลำดับ จำเป็นต้องใช้เมื่อ sort_order เป็น 1 หรือ 2 เช่น ‘[Measures].[Sales Amount]’ หรือ ‘[Measures].[Quantity]’

How it works

สร้างชุดประเภทสินค้า

ใช้ CUBESET เพื่อสร้างชุดของประเภทสินค้าทั้งหมดจากคิูบ

เรียงลำดับสินค้าตามยอดขาย

ใช้ CUBESET กับ sort_order=1 และ sort_by='[Measures].[Sales Amount]' เพื่อสร้างชุดสินค้าเรียงลำดับจากยอดขายมากไปน้อย

Examples

ตัวอย่างที่ 1: สร้างชุดประเภทสินค้า
CUBESET("Finance", "[Product].[Product].[All].Children", "Products")
สูตรนี้ส่ง MDX expression '[Product].[Product].[All].Children' ไปยังเซิร์ฟเวอร์ เพื่อดึงลูก (children) ทั้งหมดจากระดับ All ของมิติ Product และแสดงข้อความ 'Products' ในเซลล์ แทนที่จะแสดงโค้ด MDX เบื้องต้น
Excel Formula:

=CUBESET("Finance", "[Product].[Product].[All].Children", "Products")

Result:

ชุดของประเภทสินค้าทั้งหมดจากมิติ Product

ตัวอย่างที่ 2: เรียงสินค้าตามยอดขายจากน้อยไปมาก
CUBESET("Sales", "[Product].[All Products].Children", "Products by Sales", 1, "[Measures].[Sales Amount]")
sort_order=1 หมายถึง SortAscending จำเป็นต้องระบุ sort_by เป็น '[Measures].[Sales Amount]' เพื่อให้ระบบรู้ว่าจะเรียงตามค่าไหน แล้วลำดับทั้งหมดจะอัปเดตอัตโนมัติเมื่อข้อมูลในคิูบเปลี่ยน
Excel Formula:

=CUBESET("Sales", "[Product].[All Products].Children", "Products by Sales", 1, "[Measures].[Sales Amount]")

Result:

ชุดของสินค้าเรียงลำดับจากน้อยไปมาก (Ascending) ตามยอดขาย

ตัวอย่างที่ 3: ใช้ Order() ใน MDX Expression
CUBESET("Finance", "Order([Time].[Month].Members, [Measures].[Amount], DESC)", "Months Sorted")
เมื่อ MDX expression มี Order() function อยู่แล้ว คุณสามารถปล่อย sort_order=0 (SortNone) ไว้ได้ เพราะการเรียงลำดับถูกกำหนดในนิพจน์ MDX เอง วิธีนี้ประหยัดและเป็นมาตรฐาน
Excel Formula:

=CUBESET("Finance", "Order([Time].[Month].Members, [Measures].[Amount], DESC)", "Months Sorted")

Result:

ชุดของเดือนเรียงลำดับตามจำนวนจากมากไปน้อย

ตัวอย่างที่ 4: อ้างอิง CUBESET กับ CUBESETCOUNT
CUBESETCOUNT(CUBESET("Sales", "[Customer].[Customer Country].Members"))
CUBESET ส่งกลับชุดของประเทศ แล้ว CUBESETCOUNT นับจำนวนสมาชิกในชุดนั้น วิธีการผสม CUBE functions เหล่านี้ช่วยให้คุณสร้างรายงาน Dynamic ได้ง่าย
Excel Formula:

=CUBESETCOUNT(CUBESET("Sales", "[Customer].[Customer Country].Members"))

Result:

ตัวเลขจำนวนประเทศทั้งหมดในข้อมูลลูกค้า

FAQs

sort_order และ sort_by ต่างกันอย่างไร?

sort_order ระบุ ‘วิธีการ’ เรียงลำดับ เช่น Ascending หรือ Descending ส่วน sort_by ระบุ ‘ค่าไหน’ ที่ใช้สำหรับเรียง เช่น [Measures].[Sales Amount] ซึ่ง sort_by จำเป็นต้องใช้เมื่อ sort_order เป็น 1 (Ascending) หรือ 2 (Descending) เท่านั้น ถ้า sort_order=0 ไม่ต้องใส่ sort_by

Set_expression ต้องมีรูปแบบอะไร?

Set_expression ต้องเป็นนิพจน์ MDX (Multidimensional Expression) ที่ส่งกลับชุด เช่น [Product].Children (สมาชิกลูก) [Product].Members (สมาชิกทั้งหมด) หรือใช้ function เช่น Order() CrossJoin() Filter() ฯลฯ หรือคุณอ้างอิงเซลล์ที่มีตัวแปรชุด MDX ถ้า expression ยาวกว่า 255 ตัวอักษร ต้องเก็บไว้ในเซลล์แล้วอ้างอิงแทน

CUBESET ต่างจาก CUBEMEMBER อย่างไร?

CUBEMEMBER ส่งกลับ ‘สมาชิกตัวเดียว’ (single member) จากคิูบ ส่วน CUBESET ส่งกลับ ‘ชุดของสมาชิก’ (set of multiple members) ที่สามารถใช้เป็น input ให้กับฟังก์ชัน CUBE อื่นๆ เช่น CUBESETCOUNT CUBERANKEDMEMBER ได้ ถ้าต้องการค่าตัวเดียว ใช้ CUBEMEMBER แต่ถ้าต้องการหลายค่า ใช้ CUBESET

ทำไม CUBESET แสดง #GETTING_DATA…?

ข้อความ ‘#GETTING_DATA…’ บอกว่า Excel กำลังรออยู่ว่าเซิร์ฟเวอร์คิูบจะประมวลผลและส่งข้อมูลกลับมา นี่เป็นสิ่งปกติครับ โดยเฉพาะเมื่อ set_expression มีความซับซ้อน หรือปริมาณข้อมูลเยอะ บางครั้งต้องรอไป 30 วินาที ถ้ารออีก ลองเช็คการเชื่อมต่อกับเซิร์ฟเวอร์

Resources & Related

Additional Notes

CUBESET สร้างชุด (set) ของสมาชิกจากคิูบโดยส่งนิพจน์ MDX (Multidimensional Expression) ไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์จะประมวลผลแล้วส่งชุดข้อมูลกลับ Excel เพื่อให้คุณใช้งานต่อไป ฟังก์ชันนี้รองรับการเรียงลำดับแบบต่างๆ เช่น Ascending, Descending, Alphabetic และสามารถใช้เป็น input ให้กับฟังก์ชัน CUBE ตัวอื่นๆ เช่น CUBERANKEDMEMBER หรือ CUBESETCOUNT

ที่เจ๋งคือ CUBESET ทำให้คุณสามารถสร้างชุดข้อมูลที่ซับซ้อนจาก OLAP Cube ได้อย่างอิสระ โดยไม่ต้องตกติดเฉพาะที่ข้อมูลเท่านั้น คุณสามารถจัดเรียง ฟิลเตอร์ หรือสร้างชุดแบบไดนามิก ได้ตามต้องการ เฉพาะที่เซิร์ฟเวอร์ OLAP ของคุณรองรับ MDX

ส่วนตัวผม พบว่า CUBESET มีประโยชน์มากเวลาทำงาน Data Analysis กับ SQL Server Analysis Services หรือ Azure Analysis Services แต่ต้องเข้าใจ MDX Expression ก่อนถึงจะใช้ได้คล่อง ซึ่งบางครั้งค่อนข้างถึกหน่อยครับ 😅

Leave a Reply

Your email address will not be published. Required fields are marked *