Memperlakukan fungsi DAX tidak berfungsi seperti yang diharapkan, Ini mengembalikan kolom kosong lengkap

Aug 16 2020

Saya mencoba memahami fungsi Treatas DAX. Ada dua tabel Aset dan Tiket . Tabel tiket memiliki hubungan orang tua dan anak. Untuk setiap nilai Asset [AssetKey], saya ingin menghitung jumlah anak di tabel Tiket. Ada dua hubungan di antara tabel-tabel ini. Satu aktif dan satu tidak aktif.

Masalah: Ketika saya menggunakan fungsi Treatas, ukur lengkap Jumlah Anak yang disimpan kosong. Saya menggunakan rumus -

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

Untuk mereplikasi skenario, ikuti langkah-langkah di bawah ini:

Langkah 1: Buat Aset Tabel :

Asset = DATATABLE("AssetKey",INTEGER,"Name",STRING,{{1,"Australia"},
{2,"Belgium"},
{3,"Canada"},
{4,"Denmark"},
{5,"England"}})

Buat Tiket Meja

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}})

Langkah2: buat hubungan antara tabel Aset dan Tiket (satu ke banyak) di kolom AssetKey.

Langkah3: Sekarang buat Pengukuran di bawah ini -

Number Of Tickets = COUNT(Tickets[TicketKey])

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

Sekarang masalahnya: Mengapa kolom Jumlah Anak menjadi kosong.

Output yang diharapkan adalah:

Jawaban

1 Aldert Aug 16 2020 at 23:23

Masalah Anda bukanlah TREATAS tetapi RINGKASAN. TREATAS mengharapkan input tabel sehingga Anda meringkasnya.

Coba yang berikut ini:

summarizedAsset = SUMMARIZE(Asset,Asset[AssetKey])

Ini mengembalikan Anda 1,2,3,4,5. Logika karena inilah yang Anda minta. Sekarang TREATAS akan melakukan hal yang sama di atas meja Tiket. Jadi itu mengembalikan tabel dengan satu nilai kolom "kosong", 1,2. Persis seperti yang bisa kita harapkan. Hal berikutnya yang Anda lakukan HITUNGAN pada AssetKey, tabel yang baru saja dibuat ini tidak memiliki kolom ini sehingga mengembalikan kosong.

Yang Anda cari adalah kolom yang menghitung anak-anak:

Number of Child = 
var Akey = Asset[AssetKey]
return CALCULATE(COUNT(Tickets[ParentId]), filter(Tickets, Akey = Tickets[ParentId]))

Ini mengembalikan persis apa yang Anda cari.

PS: 10 poin, Saudara mengerjakan soal yang diajukan dengan sangat baik, mudah bagi orang lain untuk mereproduksi. Anda bekerja sebagai pro !!