DAX Function CROSSJOIN พร้อมตัวอย่างการใช้งาน

สิ่งสำคัญของการใช้งาน Power BI ที่ขาดไม่ได้และเป็นเรื่องสำคัญมาก ๆ อย่างหนึ่งนั้นคือ DAX (Data Analysis Expressions) ซึ่งจะมาช่วยคำนวณสรุปผลข้อมูลที่มี โดย DAX จะถูกไปใช้ในการคำนวณ 3 ส่วนหลัก ๆ ได้แก่
- Measures – สร้างการคำนวณในรูปแบบของ Aggregation หลาย ๆ แถวในตาราง
- Calculated columns – สร้างการคำนวณให้เกิดคอลัมน์ใหม่ เป็นการคำนวณแบบทีละแถว
- Calculated table – สร้างการคำนวณให้เกิดตารางใหม่
DAX Function CROSSJOIN
ส่งกลับตารางที่มีผลคูณคาร์ทีเซียนของแถวทั้งหมดจากตารางทั้งหมดในอาร์กิวเมนต์ คอลัมน์ในตารางใหม่คือคอลัมน์ทั้งหมดในตารางอาร์กิวเมนต์ทั้งหมด
รูปแบบของ Syntax
CROSSJOIN(<table>, <table>[, <table>])
พารามิเตอร์
พารามิเตอร์ | รายละเอียด |
table | ตาราง หรือ DAX expression ใด ๆ ที่แสดงผลเป็นตาราง ที่จะมาทำ CROSSJOIN |
การคืนค่า
ตารางที่มีผลคูณคาร์ทีเซียนของแถวทั้งหมดจากตารางทั้งหมดในอาร์กิวเมนต์
ข้อสังเกตที่ควรทราบ
- สำหรับตาราง table ที่ระบุในอาร์กิวเมนต์ฟังก์ชัน CROSSJOIN นั้น ต้องไม่มีชื่อคอลัมน์ระหว่างตารางซ้ำกัน มิฉะนั้นผลลัพธ์ฟังก์ชัน CROSSJOIN จะส่งคืนค่าข้อผิดพลาด
- จำนวนแถวทั้งหมดที่ได้จากผลลัพธ์ฟังก์ชัน CROSSJOIN เท่ากับผลคูณของจำนวนแถวจากตารางทั้งหมดในอาร์กิวเมนต์ รวมถึงจำนวนคอลัมน์ทั้งหมดในตารางผลลัพธ์ฟังก์ชัน CROSSJOIN คือผลรวมของจำนวนคอลัมน์ทุกตาราง ตัวอย่างเช่น ถ้า TableA มีจำนวน rA แถวและมีจำนวน cA คอลัมน์, TableB มีจำนวน rB แถว และมีจำนวน cB คอลัมน์ และ TableC มีจำนวน rC แถวและจำนวน cC คอลัมน์ ฉะนั้นตารางผลลัพธ์ฟังก์ชัน CROSSJOIN จะมีจำนวนแถวเท่ากับ rA × rb × rC และจำนวนคอลัมน์เท่ากับ cA + cB + cC
- ฟังก์ชันนี้ไม่ได้รับการสนับสนุนสำหรับใช้ในโหมด DirectQuery เมื่อใช้ในการ calculated column หรือกฎ row-level security (RLS)
ตัวอย่างการใช้งาน
ตัวอย่างการใช้ฟังก์ชัน CROSSJOIN ในการสร้างตาราง YearMonth ใหม่ จากข้อมูลตาราง Year และข้อมูลตาราง Month
จากตัวอย่างเป็นข้อมูลการขายสินค้า ที่มีตารางข้อมูล จำนวน 4 ตาราง ได้แก่
- ตาราง Sales ที่มีรายละเอียดการขายสินค้า ซึ่งแต่ละมีวันที่ขายแต่ละรายการขายอยู่ที่คอลัมน์ OrderDate, ขายโดยพนักงานคนใดอยู่ที่คอลัมน์ EmployeeCode และยอดขายแต่ละรายการอยู่ที่คอลัมน์ Sales amount

- ตาราง Employee ที่มีรายละเอียดพนักงานตามรายการ EmployeeCode

- ตาราง Year มีข้อมูล 1 คอลัมน์ เป็นข้อมูลปี 2017, 2018 และ 2019
- ตาราง Month มีข้อมูลเลขเดือนและชื่อเดือนทั้ง 12 เดือน จำนวน 3 คอลัมน์ ได้แก่ คอลัมน์ MonthNum, คอลัมน์ MonthName และคอลัมน์ MonthAbbr

โดยจากข้อมูลตาราง Sales สามารถหายอดขายรวมสินค้า (Total Sales) ด้วยการสร้าง measure Total Sales ดังนี้
Total Sales = SUM(Sales[Sales amount])
และจากตาราง Year กับตาราง Month เราสามารถที่จะสร้างตารางใหม่ด้วยข้อมูลจาก 2 ตารางนี้ เพื่อให้ได้ข้อมูลเดือนในแต่ละปี 2017, 2018 และ 2019 ซึ่งนำไปใช้เป็นตาราง Dimension ในมุมมองของปีกับเดือนหรือ YearMonth Dimension ด้วยการสร้างตารางใหม่ (calculated table) ชื่อ YearMonth โดยใช้ฟังก์ชัน CROSSJOIN ดังนี้
YearMonth = CROSSJOIN('Year','Month') //สร้างตาราง YearMonth

หลังจากได้ตาราง YearMonth แล้ว ต่อจากนั้นต้องทำให้ตาราง Sales กับตารางใหม่ YearMonth มีความสัมพันธ์กัน หรือให้มี Relationship ระหว่างกัน เพื่อสามารถดูยอดขายรวมสินค้า จาก measure Total Sales ในมุมมองของปีกับเดือนจากตาราง YearMonth ได้
ฉะนั้นจากข้อมูลในตาราง Sales กับข้อมูลในตาราง YearMonth สามารถสร้างคอลัมน์ใหม่มาเพื่อให้ทั้งสองตารางนี้ มีความสัมพันธ์กันได้
โดยตาราง Sales สร้างคอลัมน์ใหม่ (calculated columns) ชื่อ YearmonthKey ดังนี้
YearmonthKey = YEAR(Sales[OrderDate])&MONTH(Sales[OrderDate])

และตาราง YearMonth สร้างคอลัมน์ใหม่ (calculated columns) ชื่อ YearmonthKey ดังนี้
YearmonthKey = YearMonth[Year]&YearMonth[MonthNum]

ที่ Model View เราสามารถสร้างความสัมพันธ์ระหว่างตาราง Sales กับตาราง YearMonth ได้ด้วยการลากเส้นเชื่อมกันระหว่างคอลัมน์ YearmonthKey ของแต่ละตาราง

จากนี้ เราสามารถนำตารางที่สร้างใหม่ YearMonth ที่เกิดจากใช้ฟังก์ชัน CROSSJOIN มาเป็นตาราง YearMonth Dimension เพื่อนำไปออก Visualization กับตาราง Sales (Fact Table) ได้
ตัวอย่างการใช้งาน CROSSJOIN ใน Visualization
ในตัวอย่างนี้นำตารางใหม่ YearMonth มาแสดงเป็น Visualization- แบบ Clustered column chart ที่แสดงยอดขายรวมสินค้า Total Sales ตาม Year กับ MonthName ซึ่งกราฟนี้ทำให้เห็นมุมมองยอดขายสินค้าในแต่ละเดือนของปีนั้น ๆ
- แบบ Stacked bar chart ที่แสดงยอดขายรวมสินค้า Total Sales ตามชื่อพนักงานขาย Name ซึ่งในแต่ละพนักงานขายแบ่งยอดขายรวมสินค้าตามเดือน MonthName ซึ่งกราฟนี้ทำให้เห็นมุมมองยอดขายของพนักงานขายแต่ละคน ว่ามียอดขายแต่ละเดือนเป็นเท่าไร และมียอดขายรวมแต่ละคนเป็นเท่าไร
- แบบ Slicer ที่นำคอลัมน์ Year กับ MonthAbbr มาใช้เป็นตัวกรองตามปี กับตามเดือน

Download
DAX Function CROSSJOIN
รับข่าวสารจาก 9Expert Trainingการดาวน์โหลดไฟล์นั้น แสดงว่าคุณได้ยอมรับ Privacy Policy ของเราแล้ว
ข้อมูลอ้างอิงจากเว็บไซต์
บทความเกี่ยวกับ DAX ที่น่าสนใจ
- Data Analysis Expression (DAX) คืออะไร
- DAX Measures และ Calculated Column
- การสร้าง DAX Measures ใน Power BI
- DAX Functions A to Z รวมสูตร 26 สูตร ที่น่าสนใจ พร้อมวิธีใช้งาน
แนะนำหลักสูตรการอบรม
เรียนรู้คำสั่ง DAX เพื่อใช้งานด้าน Data Analysis, Data Analytic, BI โดยใช้ Power BIในหลักสูตร Data Analysis Expression (DAX) for Power BI (2 Days)
- Power BI Desktop for Business Analytics (2 Days)
- Power BI Advanced Visualization and AI (2 Days)
- Power BI Advanced Power Query (2 Days)
- Data Model for Power BI (2 Days)