CROSSJOIN สร้างตารางใหม่โดยการรวมแถวทั้งหมดจากตารางที่ระบุ โดยสร้างทุก Combination ที่เป็นไปได้ (ทุกแถวจากตารางแรกจับคู่กับทุกแถวจากตารางที่สอง) ผลลัพธ์คือตารางที่มีจำนวนแถวเท่ากับผลคูณของจำนวนแถวของแต่ละตาราง
=CROSSJOIN(<table1>, <table2>)
=CROSSJOIN(<table1>, <table2>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| table1 | table | Yes | ตารางตัวแรกที่ต้องการนำมาสร้าง Combination | |
| table2 | table | Yes | ตารางตัวที่สองที่ต้องการนำมาสร้าง Combination | |
| table3 | table | Optional | ไม่มีตารางเพิ่มเติม | ตารางเพิ่มเติม (ถ้ามี) สามารถใส่ได้หลายตัว |
เช่น ต้องการสร้างตารางทุก Combination ของ Product และ Scenario (Best/Worst Case) เพื่อวิเคราะห์ผลลัพธ์
สร้างตารางที่ใช้ในการทดสอบสูตรหรือโมเดลต่างๆ
Product X Year = CROSSJOIN( VALUES('Product'[ProductName]), VALUES('Date'[CalendarYear]) )Product X Year = CROSSJOIN( VALUES('Product'[ProductName]), VALUES('Date'[CalendarYear]) )
ตารางที่มีทุกชื่อสินค้าคู่กับทุกปีที่มีข้อมูล
Missing Combinations = EXCEPT( CROSSJOIN(VALUES(Store[StoreName]), VALUES(Product[ProductName])), SUMMARIZE(Sales, Store[StoreName], Product[ProductName]) )Missing Combinations =
EXCEPT(
CROSSJOIN(VALUES(Store[StoreName]), VALUES(Product[ProductName])),
SUMMARIZE(Sales, Store[StoreName], Product[ProductName])
)
ตาราง Store และ Product ที่ไม่มียอดขาย
Deck of Cards = CROSSJOIN( DATATABLE("Suit", STRING, {{"Heart"}, {"Diamond"}, {"Spade"}, {"Club"}}), DATATABLE("Rank", STRING, { {"A"}, {"2"}, {"3"}, {"4"}, {"5…Deck of Cards =
CROSSJOIN(
DATATABLE("Suit", STRING, {{"Heart"}, {"Diamond"}, {"Spade"}, {"Club"}}),
DATATABLE("Rank", STRING, { {"A"}, {"2"}, {"3"}, {"4"}, {"5"}, {"6"}, {"7"}, {"8"}, {"9"}, {"10"}, {"J"}, {"Q"}, {"K"}})
)
ตารางไพ่ 52 ใบ
CROSSJOIN ไม่สนใจ Relationship หรือคอลัมน์ที่ตรงกัน มันจะสร้างทุก Combination ของแถวทั้งหมด ส่วน NATURAL…JOIN จะรวมตารางโดยอาศัยคอลัมน์ที่ชื่อตรงกัน และความสัมพันธ์
ควรหลีกเลี่ยงการใช้กับตารางขนาดใหญ่มากๆ เพราะจำนวนแถวจะเพิ่มขึ้นแบบทวีคูณ (เช่น ตาราง A มี 1 ล้านแถว, ตาราง B มี 1 ล้านแถว -> CROSSJOIN จะได้ 1 ล้านล้านแถว) ทำให้ Memory เต็มได้ง่าย
CROSSJOIN เป็นฟังก์ชันที่สร้าง ผลคูณคาร์ทีเซียน (Cartesian Product) ของแถวทั้งหมดจากสองตารางหรือมากกว่านั้น ผลลัพธ์คือตารางใหม่ที่มีทุก Combination ที่เป็นไปได้ของแถวจากตารางต้นฉบับ
เช่น ถ้า Table A มี 3 แถว และ Table B มี 4 แถว CROSSJOIN(Table A, Table B) จะได้ตารางใหม่ที่มี 3 x 4 = 12 แถว