ฟังก์ชัน Treatas DAX ไม่ทำงานตามที่คาดไว้กำลังส่งคืนคอลัมน์ว่างทั้งหมด
ฉันพยายามทำความเข้าใจฟังก์ชัน Treatas DAX มีสองตารางสินทรัพย์และตั๋ว ตารางตั๋วมีความสัมพันธ์ระหว่างผู้ปกครองและบุตร สำหรับแต่ละมูลค่าของสินทรัพย์ [AssetKey] ฉันต้องการคำนวณจำนวนลูกในตารางตั๋ว มีสองความสัมพันธ์ระหว่างตารางเหล่านี้ หนึ่งรายการที่ใช้งานอยู่และหนึ่งรายการไม่ได้ใช้งาน
ปัญหา: เมื่อฉันใช้ฟังก์ชัน Treatas การวัดที่สมบูรณ์จำนวนเด็กจะถูกเก็บไว้ว่างเปล่า ฉันใช้สูตร -
Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),TREATAS(SUMMARIZE(Asset,Asset[AssetKey]),Tickets[ParentId]))
ในการจำลองสถานการณ์ให้ทำตามขั้นตอนด้านล่าง:
ขั้นตอนที่ 1: สร้างตารางสินทรัพย์ :
Asset = DATATABLE("AssetKey",INTEGER,"Name",STRING,{{1,"Australia"},
{2,"Belgium"},
{3,"Canada"},
{4,"Denmark"},
{5,"England"}})
สร้างตั๋วโต๊ะ
Tickets = DATATABLE("AssetKey",INTEGER,"ParentId",INTEGER,"TicketKey",INTEGER,{{3,1,1},
{1,Blank(),1},
{3,1,3},
{2,Blank(),4},
{4,2,5},
{3,1,6},
{2,Blank(),7},
{4,2,8},
{1,Blank(),9},
{5,2,10}})
ขั้นตอนที่ 2: สร้างความสัมพันธ์ระหว่างตารางสินทรัพย์และตั๋ว (หนึ่งต่อหลายตัว) ในคอลัมน์ AssetKey
![](https://post.nghiatu.com/assets/images/s/qgUPY.png)
ขั้นตอนที่ 3: ตอนนี้สร้างมาตรการด้านล่าง -
Number Of Tickets = COUNT(Tickets[TicketKey])
Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),TREATAS(SUMMARIZE(Asset,Asset[AssetKey]),Tickets[ParentId]))
ตอนนี้ปัญหา: ทำไมคอลัมน์Number of Childจึงว่างเปล่า
![](https://post.nghiatu.com/assets/images/s/x1d36.png)
ผลลัพธ์ที่คาดหวังคือ:
![](https://post.nghiatu.com/assets/images/s/VfgX6.png)
คำตอบ
ปัญหาของคุณไม่ใช่ TREATAS แต่เป็นการสรุป TREATAS คาดหวังการป้อนข้อมูลในตารางเพื่อให้คุณสรุป
ลองทำดังต่อไปนี้:
summarizedAsset = SUMMARIZE(Asset,Asset[AssetKey])
สิ่งนี้ส่งคืนคุณ 1,2,3,4,5 ตรรกะเพราะนี่คือสิ่งที่คุณขอให้ทำ ตอนนี้ TREATAS จะทำเช่นเดียวกันบนโต๊ะ Ticket ดังนั้นจะส่งคืนตารางที่มีค่าคอลัมน์หนึ่งคอลัมน์ "ว่าง", 1,2 สิ่งที่เราคาดหวังได้ สิ่งต่อไปที่คุณทำ COUNT บน AssetKey ตารางนี้เพิ่งสร้างขึ้นไม่มีคอลัมน์นี้ดังนั้นจึงส่งคืนค่าว่าง
สิ่งที่คุณกำลังมองหาคือคอลัมน์ที่กำลังคำนวณเด็ก ๆ :
Number of Child =
var Akey = Asset[AssetKey]
return CALCULATE(COUNT(Tickets[ParentId]), filter(Tickets, Akey = Tickets[ParentId]))
สิ่งนี้จะส่งคืนสิ่งที่คุณกำลังมองหา
![](https://post.nghiatu.com/assets/images/s/rl18g.png)
PS: 10 คะแนนคุณทำได้ดีเยี่ยมในการถามคำถามและง่ายสำหรับคนอื่นในการทำซ้ำ คุณทำงานแบบมือโปร !!