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

แนะนำการใช้งานฟังก์ชัน CROSSJOIN ซึ่งเป็นฟังก์ชันของ DAX (Data Analysis Expression) เพื่อใช้งานใน Power BI, Power Pivot ของ Excel และ SSAS ได้ พร้อมตัวอย่างการใช้งานและไฟล์ตัวอย่างให้ดาวน์โหลด
DAX Function CROSSJOIN พร้อมตัวอย่างการใช้งาน
ทักษะ (ระบุได้หลายทักษะ)

สิ่งสำคัญของการใช้งาน Power BI ที่ขาดไม่ได้และเป็นเรื่องสำคัญมาก ๆ อย่างหนึ่งนั้นคือ DAX (Data Analysis Expressions) ซึ่งจะมาช่วยคำนวณสรุปผลข้อมูลที่มี โดย DAX จะถูกไปใช้ในการคำนวณ 3 ส่วนหลัก ๆ ได้แก่

  1. Measures – สร้างการคำนวณในรูปแบบของ Aggregation หลาย ๆ แถวในตาราง
  2. Calculated columns – สร้างการคำนวณให้เกิดคอลัมน์ใหม่ เป็นการคำนวณแบบทีละแถว
  3. 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 ตาราง ได้แก่

  1. ตาราง Sales ที่มีรายละเอียดการขายสินค้า ซึ่งแต่ละมีวันที่ขายแต่ละรายการขายอยู่ที่คอลัมน์ OrderDate, ขายโดยพนักงานคนใดอยู่ที่คอลัมน์ EmployeeCode และยอดขายแต่ละรายการอยู่ที่คอลัมน์ Sales amount
ตารางข้อมูล Sales มีคอลัมน์วันที่ขายอยู่ที่คอลัมน์ OrderDate, ขายโดยพนักงานคนใดอยู่ที่คอลัมน์ EmployeeCode และยอดขายแต่ละรายการอยู่ที่คอลัมน์ Sales amount
  1. ตาราง Employee ที่มีรายละเอียดพนักงานตามรายการ EmployeeCode
ตารางข้อมูล Employee ที่มีมีรายละเอียดพนักงานตามรายการ EmployeeCode
  1. ตาราง Year มีข้อมูล 1 คอลัมน์ เป็นข้อมูลปี 2017, 2018 และ 2019
  2. ตาราง Month มีข้อมูลเลขเดือนและชื่อเดือนทั้ง 12 เดือน จำนวน 3 คอลัมน์ ได้แก่ คอลัมน์ MonthNum, คอลัมน์ MonthName และคอลัมน์ MonthAbbr


 

ตารางข้อมูล Year กับตารางข้อมูล Month

โดยจากข้อมูลตาราง 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 จากการใช้ฟังก์ชัน CROSSJOIN

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

YearmonthKey = YEAR(Sales[OrderDate])&MONTH(Sales[OrderDate])

ตารางข้อมูล Sales ที่มีการสร้างคอลัมน์ YearMonthKey

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

YearmonthKey = YearMonth[Year]&YearMonth[MonthNum]

ตารางข้อมูล YearMonth ที่มีการสร้างคอลัมน์ YearMonthKey

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

ส่วน 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 มาใช้เป็นตัวกรองตามปี กับตามเดือน

โดยจากรูปจะเป็นการกรองดูยอดขายสินค้า ในกลุ่มสินค้า Beverages ในปี 2017

ตัวอย่างการใช้งาน DAX Function CROSSJOIN ใน Microsoft Power BI

[subscribedownload]1407|||ไฟล์ตัวอย่างการใช้งาน
DAX Function CROSSJOIN[/subscribedownload]

ข้อมูลอ้างอิงจากเว็บไซต์


 

บทความเกี่ยวกับ DAX ที่น่าสนใจ


 

แนะนำหลักสูตรการอบรม

เรียนรู้คำสั่ง DAX เพื่อใช้งานด้าน Data Analysis, Data Analytic, BI โดยใช้ Power BI
ในหลักสูตร Data Analysis Expression (DAX) for Power BI (2 Days)

 

และมีหลักสูตรการอบรมเกี่ยวกับ Power BI เพิ่มเติมดังนี้ :


 

หรือรูปแบบ Online ที่ 
Microsoft Power BI for Business Analytics (64 บทเรียน)