ฟังก์ชัน Treatas DAX ไม่ทำงานตามที่คาดไว้กำลังส่งคืนคอลัมน์ว่างทั้งหมด

Aug 15 2020

ฉันพยายามทำความเข้าใจฟังก์ชัน 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

ขั้นตอนที่ 3: ตอนนี้สร้างมาตรการด้านล่าง -

Number Of Tickets = COUNT(Tickets[TicketKey])

Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),TREATAS(SUMMARIZE(Asset,Asset[AssetKey]),Tickets[ParentId]))

ตอนนี้ปัญหา: ทำไมคอลัมน์Number of Childจึงว่างเปล่า

ผลลัพธ์ที่คาดหวังคือ:

คำตอบ

1 Aldert Aug 16 2020 at 23:23

ปัญหาของคุณไม่ใช่ 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]))

สิ่งนี้จะส่งคืนสิ่งที่คุณกำลังมองหา

PS: 10 คะแนนคุณทำได้ดีเยี่ยมในการถามคำถามและง่ายสำหรับคนอื่นในการทำซ้ำ คุณทำงานแบบมือโปร !!