Apa Itu Diri Dalam Python: Contoh Dunia Sebenar
Apa Itu Diri Dalam Python: Contoh Dunia Sebenar
Dalam tutorial ini, kita akan melihat senario yang sangat spesifik yang saya pasti anda semua telah pun hadapi semasa bekerja dengan DAX – jadual dikembangkan . Jadual dikembangkan boleh mengacaukan pengiraan anda jika anda tidak tahu cara ia sebenarnya berfungsi. Anda boleh menonton video penuh tutorial ini di bahagian bawah blog ini.
Untuk contoh ini, kami menggunakan pangkalan data Contoso, yang mengandungi jadual jualan , jadual pelanggan , jadual tarikh , jadual produk , jadual kategori produk dan jadual subkategori produk .
Di sebelah kiri hujung, kami mempunyai hubungan satu-ke-banyak antara produk, kategori, subkategori dan jadual jualan. Kami juga mempunyai hubungan satu-ke-banyak antara pelanggan dan jualan, serta tarikh dan jualan.
Isi kandungan
Contoh #1
Katakan kita ingin membuat laporan daripada lajur kategori ini dalam jadual kategori dan menggunakan ukuran yang mengira bilangan pelanggan dalam jadual pelanggan. Kami ingin menghiris nombor untuk meja pelanggan mengikut kategori.
Jika saya meletakkan penapis pada jadual kategori, penapis itu akan pergi ke jadual subkategori, kemudian ia akan mencapai jadual produk, dan kemudian akhirnya, ia akan mencapai dan menapis jadual jualan. Tetapi penapis itu tidak akan dapat menapis jadual pelanggan melainkan kami menghidupkan penapisan dua arah.
Mari kita kembali kepada laporan untuk membetulkan pengiraan ini. Kita boleh membungkus pengiraan ini di dalam fungsi CALCULATE, dan kemudian menulis Jualan. Kita dapat melihat bahawa kali ini kita tidak mengulang nombor yang sama untuk setiap sel visual.
Untuk mengesahkan sama ada pengiraan ini betul, kami boleh membawa masuk kunci pelanggan daripada jadual jualan kepada agregat, dan kemudian melakukan Kiraan (Berbeza) ke atasnya.
Anda dapat melihat bahawa kami mengembalikan nilai yang sama untuk setiap baris. Dengan menggunakan jadual jualan di dalam fungsi CALCULATE, kami dapat membetulkan pengiraan.
Contoh #2
Mari kita beralih kepada contoh seterusnya. Untuk yang ini, kami ingin mengenal pasti jumlah jualan untuk produk merah pada tahun 2007, 2008 atau 2009. Bergantung pada pemilihan alat penghiris, saya juga ingin kembali setahun.
Sebagai contoh, jika saya memilih 2009, saya ingin melaporkan jualan merah untuk 2008. Jika saya memilih 2008, saya juga ingin melaporkan jualan merah untuk 2007.
Jualan Merah #1
Pengiraan Jumlah Jualan kami pada asasnya adalah jumlah data jualan. Dalam konteks baris, kita akan mendarabkan kuantiti dengan harga bersih.
Mari buat ukuran baharu dan namakannya sebagai Jualan Merah. Kami akan menulis KIRA, kemudian Jumlah Jualan. Kami akan jadual Jualan untuk menunjukkan bahawa warna produk adalah sama dengan merah.
Kemudian kami akan menulis pada tarikh dalam lajur tarikh.
Apabila kami membawa pengiraan itu dalam visual kad, kami mendapat kosong.
Jualan Merah #2
Apa yang berlaku di sini? Mari cuba tulis semula pengiraan itu dan lihat sama ada kita boleh mendapatkan keputusan. Kami akan membuat ukuran baharu dan menamakannya sebagai Jualan Merah 2 dan menggunakan bahagian pertama pengiraan untuk Jualan Merah 1.
Kami akan memulakan PENGIRAAN lain pada PENGIRAAN pertama.
Mari kita bawa ukuran ini dalam matriks dan lihat hasilnya. Jika kita pilih 2008, kita dapat 51,947. Jika kita pilih 2009, kita dapat 24,343. Akhir sekali, jika kita memilih 2010, kita mendapat 39,724.
Jualan Merah #3
Terdapat cara lain untuk menulis pengiraan ini. Kami akan menulis ukuran baharu dan memanggilnya Jualan Merah 3, kemudian gunakan fungsi CALCULATE.
Kami akan mengira Jumlah Jualan dan menulis bahawa untuk produk, warnanya sama dengan merah. Kemudian gunakan fungsi SAMEPERIODLASTYEAR pada tarikh.
Jika kita menyeret ukuran #3 ke dalam visual kad, anda dapat melihat bahawa kedua-dua nilai kad ini mengembalikan nilai yang sama, iaitu betul.
Tetapi terdapat sesuatu yang salah dengan pengiraan pertama kami, kerana kami mengembalikan kosong dan bukan nilai yang betul.
Mari kita lihat apa yang sebenarnya berlaku di sini. Memandangkan kita telah melihat beberapa pengiraan pada jadual yang dikembangkan, mari kita fahami teori di sebaliknya.
Sebelum memahami apa itu jadual dikembangkan, anda perlu memahami bahawa semua jadual yang kami ada di sini dipanggil jadual asas .
Jadi bilakah jadual ini menjadi jadual yang diperluaskan? Sebaik sahaja anda membuat perhubungan banyak-dengan-satu antara satu jadual dengan jadual lain, jadual asas menjadi jadual dikembangkan.
Mengesahkan Jadual Dikembangkan
Tetapi bagaimana kita boleh mengesahkan bahawa pengembangan jadual sebenarnya berlaku? Nah, anda boleh menggunakan kata kunci yang berkaitan pada mana-mana jadual. Jika anda boleh mengakses lajur dari satu sisi, maka anda akan tahu bahawa pengembangan jadual boleh berlaku.
Mari pergi ke jadual jualan dan buat lajur terkira baharu.
Katakan kita mahu mendapatkan semula warna produk daripada jadual produk untuk kunci produk tertentu ini. Kami akan menggunakan BERKAITAN, yang hanya akan memberikan senarai lajur dalam IntelliSense yang sebenarnya boleh dikembangkan daripada jadual jualan.
Kita dapat melihat bahawa jadual pelanggan dan jadual jualan mempunyai hubungan banyak dengan satu. Kami juga boleh melihat senarai lajur jadual pelanggan, lajur jadual tarikh dan lajur produk.
Apabila kami memilih Produk[Warna], kami boleh membuat lajur baharu dalam jadual jualan dengan bantuan kata kunci BERKAITAN. BERKAITAN hanya memberi kita akses kepada lajur jadual yang jadual asas sebenarnya boleh berkembang.
Jika kita mengubah sifat perhubungan itu daripada banyak-ke-satu kepada banyak-ke-banyak, pengiraan itu akan berhenti berfungsi.
Mari kita ubah sifat perhubungan ini kepada ramai-ke-banyak. Kita boleh lihat di bahagian bawah bahawa kita mendapat simbol amaran.
Apabila kami kembali ke jadual jualan, kami melihat mesej ralat yang menyatakan lajur Produk [Warna] sama ada tidak wujud atau tidak mempunyai hubungan dengan mana-mana jadual.
Dalam konteks semasa, amaran yang kami terima tidak begitu mesra pengguna. Pada asasnya, ini bermakna jadual jualan tidak boleh berkembang ke jadual produk kerana kami tidak dapat mengakses hanya satu nilai untuk item baris tertentu itu.
Dan oleh kerana kami menggunakan perhubungan banyak-ke-banyak, pengembangan jadual tidak berlaku dan BERKAITAN tidak berfungsi.
Mari kita kembali ke paparan rajah dan betulkan pengiraan ini. Kami akan menukar sifat perhubungan kepada banyak-dengan-satu dan mengaktifkan perhubungan itu untuk membuat pengiraan berfungsi.
Mentakrifkan Jadual Dikembangkan
Sebelum kita mula melihat pengiraan yang telah kita lakukan dalam laporan, mari kita ulangi definisi jadual yang diperluaskan.
Jika anda mempunyai model data dengan skema bintang , jadual fakta akan berkembang kepada semua jadual dalam model data jika terdapat hubungan banyak dengan satu antara dimensi dan jadual fakta.
Jika anda mempunyai skema kepingan salji , maka jadual subkategori produk dan jadual kategori akan berkembang ke jadual asas, yang dalam kes ini ialah jadual produk. Jadual jualan ialah jadual asas, yang berkembang ke semua jadual lain.
Di belakang tabir, jadual jualan akan mempunyai semua lajur dalam satu jadual. Ambil perhatian bahawa pengembangan jadual hanyalah konsep logik, jadi ia tidak akan berkembang dan meningkatkan saiz model data anda.
Jadual yang dikembangkan hanya muncul dalam gambar apabila anda merujuk kepada jadual (iaitu jadual asas), dan apabila anda mempunyai hubungan banyak dengan satu dengan jadual lain.
Menghiris Lajur Kategori Dan Menggunakan Jadual Dikembangkan
Mari cuba betulkan pengiraan yang telah kita lakukan dalam paparan laporan. Dalam contoh ini, kami menghiris mengikut lajur kategori daripada jadual kategori produk dan kami cuba mengira bilangan pelanggan yang ada.
Jadi apa sebenarnya yang kita lakukan di sini? Kami menggunakan jadual jualan yang diperluaskan sebagai rujukan. Setelah konteks penapis mengandungi nilai daripada jadual kategori, penapis itu akan mencapai jadual jualan daripada produk subkategori dan terus ke jualan.
Memandangkan jualan ialah jadual yang diperluaskan dan kami menggunakan rujukan itu di dalam fungsi CALCULATE, maka jadual jualan akan mengandungi lajur jadual pelanggan juga. Apabila kami menggunakan penapis di atas jadual jualan, secara tidak langsung, kami juga menapis jadual pelanggan.
Mari kita kembali kepada pengiraan jualan merah kami dan cuba memahami apa yang sebenarnya berlaku. Kita akan mulakan dengan pengiraan kosong. Jika kami memilih ukuran itu, anda dapat melihat bahawa kami sedang menulis kod bersarang. Kami mempunyai KIRA, kemudian Jumlah Jualan, PENAPIS ke atas jualan, dan SAMEPERIODLASTYEAR.
Mari kita pecahkan pengiraan itu langkah demi langkah. Pertama, kita perlu mengenal pasti konteks penapis luaran yang wujud daripada pengiraan.
Kami telah memilih 2008 dalam penghiris Nombor Tahun Kalendar.
Daripada konteks penapis ini, jadual jualan akan dinilai. Jadual jualan hanya akan mengandungi baris untuk nombor tahun kalendar 2008 dan warna produk akan menjadi merah. Kami mempunyai dua penapis di sini: satu yang dibuat oleh konteks penapis dan satu yang akan dibuat oleh penapis .
SAMEPERIODLASTYEAR sedang dinilai dalam konteks penapis di mana tahunnya ialah 2008. Ia akan menerima senarai tarikh pada tahun 2008 dan ia akan mengalihkan tarikh tersebut pada tahun 2008 kepada 2007. Jadual yang akan dikembalikan oleh ini hanya akan mengandungi tarikh untuk 2007.
Setelah kedua-dua operasi ini selesai, fungsi CALCULATE menyediakan konteks penapis dan menggunakan kedua-dua penapis ini ke dalam konteks penapis. Apabila kami menggunakan itu, kami mempunyai konteks penapis warna produk yang sama dengan merah, dan pada lajur tahun, kami mempunyai penapis sepanjang 2007 dan 2008.
Jadi untuk model data ini, tidak ada satu transaksi yang wujud dalam dua tahun berbeza. Apabila CALCULATE cuba untuk menggabungkan kedua-dua penapis ini dalam keadaan dan , ia akan mengatakan bahawa tahun sepatutnya 2008 dan 2007, dan bahawa warna produk harus merah.
Apabila kami menapis jadual jualan dengan konteks penapis tahun 2008, kami juga secara tidak langsung menapis jadual tarikh juga. Stabil jualan mempunyai hubungan banyak-dengan-satu dengan stabil tarikh.
Mari buat pengiraan baharu untuk mengenal pasti bilangan baris yang terdapat dalam jadual tarikh untuk tarikh yang berkaitan. Kami akan menulis CALCULATE, kemudian jadual tarikh. Kemudian kami akan MENAPIS SEMUA jadual jualan, dan kami akan mengatakan bahawa tarikh BERKAITAN dalam nombor tahun kalendar hendaklah sama dengan 2008.
Di dalam CALCULATE, kami tidak merujuk sebarang penapis pada jadual tarikh. Kami hanya menyemak bahawa tarikh dalam nombor tahun kalendar mestilah dari 2008. Sebaik-baiknya, penapis ini tidak boleh menapis jadual tarikh. Kami juga menggunakan fungsi , yang akan mengabaikan konteks penapis yang akan datang daripada penghiris.
Mari buat kad baharu untuk pengiraan ini. anda dapat melihat bahawa kami mengembalikan 348 baris.
Jadi bagaimana mungkin daripada jadual tarikh 2500 baris, kita hanya mengembalikan 348 baris? Jika kita akan menggunakan jadual yang diperluaskan, maka kita akan menapis secara tidak langsung jadual lain juga, yang disambungkan melalui perhubungan banyak dengan satu.
Walaupun kami tidak mempunyai sebarang penapis sepanjang tahun semasa, kami masih mengehadkan bilangan baris yang boleh dilihat untuk jadual dimensi yang kami ada pada satu sisi.
Apabila kami memulangkan jadual jualan, kami juga memulangkan versi ditapis bagi jadual tarikh, jadual pelanggan, jadual produk, jadual kategori produk dan jadual subkategori produk.
Menjelaskan Jualan Merah 2
Mari kita teruskan ke pengiraan seterusnya, iaitu Jualan Merah 2. Kita akan mulakan dengan KIRA luar kerana jika kita menyarangkan fungsi ini dalam mana-mana senario, KIRA luar harus menyediakan konteks penapis untuk KIRA dalam.
Pada penghiris, kami memilih tahun kalendar 2008. Apabila fungsi SAMEPERIODLASTYEAR mendapat tarikh untuk 2008, ia akan mengalihkan tarikh tersebut pada tahun 2007 dan ia akan menjadi konteks PENAPIS untuk pengiraan dalam. PENGIRAAN dalaman ini akan menilai tahun 2007.
Fungsi FILTER akan menapis jadual jualan, dan jadual jualan hanya akan dihadkan untuk baris di mana tahunnya ialah 2007. Sebaik sahaja kami mempunyai baris untuk 2007, kami akan menyemak sama ada produk berkaitan adalah sama dengan merah.
Tidak seperti pengiraan pertama, kami tidak mengembalikan dua peringkat yang berbeza. Kedua-dua peringkat berbeza itu tidak digunakan pada konteks FILTER jadi jadual yang dikembalikan oleh fungsi FILTER akan mengandungi semua baris jadual jualan.
Sebaik sahaja penapis ini digunakan, kami akan mendapat jumlah jualan untuk tahun 2007, serta produk yang sama dengan merah, manakala dalam pengiraan pertama, kami memulangkan tahun 2008 dan 2007.
Kali ini, kami telah menyediakan konteks penapis untuk jadual jualan dengan menggunakan fungsi SAMEPERIODLASTYEAR dan dengan meletakkan fungsi CALCULATE di dalam CALCULATE yang lain.
Menjelaskan Jualan Merah 3
Untuk contoh ketiga, kami mempunyai fungsi CALCULATE yang sangat mudah dengan dua pernyataan: satu ialah warna produk sama dengan merah, dan kemudian SAMEPERIODLASTYEAR pada tarikh.
Fungsi SAMEPERIODLASTYEAR akan dinilai dalam konteks penapis, yang akan mengandungi hanya tarikh 2007. Warna produk akan menggunakan konteks penapis merah pada jadual produk, yang seterusnya akan menapis jadual jualan dan hanya mengandungi baris untuk produk merah.
Apabila kedua-dua nilai ini digunakan dalam konteks penapis, ia akan menapis jadual jualan tetapi bukan jadual jualan dikembangkan. anda dapat melihat bahawa tiada mana-mana dalam kod kami merujuk jadual jualan yang diperluaskan.
Ini ialah senario ideal yang perlu anda gunakan jika anda cuba merujuk jadual dikembangkan. Apabila menggunakan jadual dikembangkan, pengiraan boleh menjadi sangat berbelit dan kadangkala, anda tidak dapat mengenal pasti sebab pengiraan anda mengembalikan hasil yang salah.
Jika anda tidak memahami konsep jadual dikembangkan, anda mungkin membangunkan kod khusus ini sebagai ukuran model, dan kemudian menggunakannya dalam pengeluaran. Pengguna lain mungkin mula membuat langkah lain ke atas ukuran ini, dan mereka mungkin tidak dapat mengetahui sebab pengiraan tidak berfungsi kerana mereka tidak hanya memiliki tahap pemahaman tentang bahasa DAX itu.
Jika anda menggunakan DAX, sentiasa cuba letakkan penapis pada satu lajur kerana apabila anda menggunakan satu lajur, konsep jadual dikembangkan tidak digunakan. Sebagai contoh, apabila anda menggunakan PRODUK [Warna] = “Merah” , penapis mencapai jadual jualan, tetapi penapis itu tidak boleh mencapai jadual pelanggan kerana kami tidak menggunakan jadual jualan dikembangkan.
Apabila menggunakan satu lajur, kami tidak merujuk kepada konsep jadual dikembangkan. Kami hanya menggunakan penapis asas pada jadual jualan, yang tidak disebarkan ke jadual lain.
Menggunakan DAX Studio Untuk Mengesahkan Jadual Dikembangkan
Sebelum mengakhiri, kami akan menggunakan studio DAX untuk mengesahkan kod kami untuk Jualan Merah 3. Mari pergi ke tab Paparan, klik pada Penganalisis Prestasi, dan kemudian mulakan rakaman. Kami akan menyegarkan semula visual itu dan memilih kad kosong.
Daripada alatan luaran, kami akan melancarkan studio DAX
Kita dapat melihat bahawa dalam skrin hasil di bahagian bawah, kita mendapat kosong.
Kami akan menghidupkan Pemasa Pelayan untuk memahami pertanyaan yang dijana di belakang tabir. Kami akan pergi ke tab Pemasa Pelayan dan mengembangkannya untuk melihat segala-galanya.
Kami sedang melakukan JOIN di meja jualan di sebelah kiri. Kami juga melakukan JOIN pada kunci produk dari jadual produk.
Dalam klausa WHERE, ia mengatakan bahawa tarikh dalam nombor tahun kalendar hendaklah sama dengan 2008 dan bahawa warna produk hendaklah merah.
Kemudian kita mempunyai syarat lain yang menyatakan Dates[Date], kemudian diikuti dengan julat tarikh. Jadi apakah tarikh ini? Sebaik-baiknya, tarikh ini mestilah milik 2008, tetapi ia adalah dari 2007 apabila kami menukar pemformatan nombor ini dalam Excel.
Inilah sebabnya kami mengembalikan nilai kosong. Kami mengatakan bahawa tahun kalendar hendaklah 2008 dan menggunakan syarat DAN bahawa tarikh hendaklah pada 2007. 2007 ini adalah kerana fungsi SAMEPERIODLASTYEAR yang kami gunakan dalam pengiraan.
Mari ubah ukuran dan rujukan kepada Jualan Merah 2. Sebaik sahaja kami melaksanakan kod, anda dapat melihat bahawa kami mendapat tarikh daripada jadual tarikh, kemudian kami menapis lajur tarikh untuk nombor tahun kalendar 2008.
Kali ini, kami dapat mengembalikan hasil kerana kami tidak menggunakan penapis pada klausa WHERE dan kami mengatakan bahawa tarikh dalam nombor tahun kalendar hendaklah sama dengan 2008.
Di mana Untuk Cari Perangkap DAX Tersembunyi
Mengira Pelanggan Dari Masa Menggunakan DISTINCTCOUNT Dalam LuckyTemplates
Analisis Pelanggan Baharu Menggunakan DAX Lanjutan
Kesimpulan
Mudah-mudahan, tutorial ini membantu dalam memahami maksud jadual yang diperluaskan dan cara ia boleh mengacaukan pengiraan anda. Jadual yang dikembangkan tidak begitu intuitif dan juga tidak mudah difahami.
Untuk mendapatkan maklumat lanjut tentang jadual dikembangkan, jangan lupa untuk melanggan saluran TV LuckyTemplates. Kami mempunyai sejumlah besar kandungan yang keluar sepanjang masa daripada saya sendiri dan pelbagai pencipta kandungan, semuanya berdedikasi untuk menambah baik cara anda menggunakan LuckyTemplates dan Power Platform.
Apa Itu Diri Dalam Python: Contoh Dunia Sebenar
Anda akan belajar cara menyimpan dan memuatkan objek daripada fail .rds dalam R. Blog ini juga akan membincangkan cara mengimport objek dari R ke LuckyTemplates.
Dalam tutorial bahasa pengekodan DAX ini, pelajari cara menggunakan fungsi GENERATE dan cara menukar tajuk ukuran secara dinamik.
Tutorial ini akan merangkumi cara menggunakan teknik Visual Dinamik Berbilang Thread untuk mencipta cerapan daripada visualisasi data dinamik dalam laporan anda.
Dalam artikel ini, saya akan menjalankan konteks penapis. Konteks penapis ialah salah satu topik utama yang perlu dipelajari oleh mana-mana pengguna LuckyTemplates pada mulanya.
Saya ingin menunjukkan cara perkhidmatan dalam talian LuckyTemplates Apps boleh membantu dalam mengurus laporan dan cerapan berbeza yang dijana daripada pelbagai sumber.
Ketahui cara untuk menyelesaikan perubahan margin keuntungan anda menggunakan teknik seperti mengukur percabangan dan menggabungkan formula DAX dalam LuckyTemplates.
Tutorial ini akan membincangkan tentang idea pewujudan cache data dan cara ia mempengaruhi prestasi DAX dalam memberikan hasil.
Jika anda masih menggunakan Excel sehingga sekarang, maka inilah masa terbaik untuk mula menggunakan LuckyTemplates untuk keperluan pelaporan perniagaan anda.
Apakah LuckyTemplates Gateway? Semua yang Anda Perlu Tahu