Apa Itu Diri Dalam Python: Contoh Dunia Sebenar
Apa Itu Diri Dalam Python: Contoh Dunia Sebenar
Dalam tutorial ini, kita akan melihat sekeping kod DAX. Anda mungkin telah menggunakan sesuatu seperti ini. Atau, anda mungkin terjumpa dan keliru tentang cara kod ini berfungsi dan cara kedua-dua Konteks Baris dan Konteks Penapis nampaknya berinteraksi antara satu sama lain dalam hanya satu kod DAX. Sama ada cara, tutorial ini akan melihat semua perkara di atas secara terperinci. Anda boleh menonton video penuh tutorial ini di bahagian bawah blog ini.
Pertama, kita akan melihat kod itu sendiri. Kemudian kita akan pergi ke bahagian teori untuk memahaminya dengan lebih baik. Akhir sekali, kita akan melihat segala-galanya di sebalik tabir dengan menggunakan DAX Studio .
Model data yang akan kami gunakan pada asasnya ialah model data jualan ringkas yang mengandungi jadual Tarikh, Jualan dan Produk. Jadual Jualan mengandungi urus niaga untuk setiap hari tertentu. Jadual Produk mengandungi maklumat tentang maklumat jualan tentang produk pada setiap hari tertentu. Jadual Tarikh mengandungi hanya beberapa lajur untuk tujuan tutorial ini.
Kami hanya berminat dengan jadual Tarikh, tetapi kami akan menggunakan jadual Jualan dan jadual Produk untuk menerangkan cara konteks penapis dan konteks baris disebarkan dengan bantuan perhubungan.
Isi kandungan
Konteks Baris Dan Konteks Penapis Dalam Ukuran Jumlah Berjalan
Sekarang, mari buat ukuran jumlah berjalan kerana ia mengandungi konteks baris dan penapis. Ini ialah ukuran jumlah larian asas, di mana saya menggunakan COUNTROWS melalui FILTER dan fungsi SEMUA untuk mengembalikan semua tahun yang saya ada di dalam jadual Tarikh. Apabila saya membawa ukuran itu di dalam jadual di bawah, anda dapat melihat bahawa kami mendapat hasil yang kami jangkakan.
Sekarang mari kita cuba menganalisis cara kod DAX itu berfungsi.
Dalam ukuran, anda boleh melihat bahawa pertama, kita mempunyai COUNTROWS, tetapi itu bukan fungsi pertama yang sedang dinilai atau dilaksanakan. Kemudian, kita mempunyai fungsi FILTER, dan kemudian ALL. Perkara pertama dalam susunan penilaian adalah SEMUA. ALL mengembalikan semua nilai unik Nombor Tahun Kalendar Tarikh dengan mengabaikan sebarang konteks penapis yang wujud di luar fungsi ALL.
Jadi, dalam metrik, kami mempunyai lajur Nombor Tahun Kalendar dan lajur itu sedang menapis secara aktif. Tetapi memandangkan SEMUA akan mengabaikan konteks penapis sedia ada, kami akan mendapat semua nilai unik lajur itu.
Dalam hujah kedua, dalam konteks baris, kami telah menulis bahawa Nombor Tahun Kalendar Tarikh hendaklah kurang daripada Nombor Tahun Kalendar Tarikh MAX. Sekarang, jika anda seorang pemula dan masih cuba memahami dan mempelajari DAX, anda mungkin berfikir bahawa kedua-dua rujukan di sebelah kiri dan di dalam fungsi MAX tergolong dalam lajur yang sama dan adalah jadual yang sama yang kita ada di dalam SEMUA fungsi.
Tetapi itu tidak benar. Satu-satunya bahagian konteks baris yang dimiliki oleh fungsi SEMUA ialah bahagian yang kita ada di sebelah kiri. Yang kita ada pada MAX sedang dinilai dalam konteks penapis dan bukan dalam konteks baris.
Jadi, FILTER cuba mencipta konteks baris pada jadual yang anda berikan dalam hujah pertama, dan bahagian kod ini sebenarnya diambil daripada konteks baris tertentu itu. Oleh itu, setiap baris, FILTER mengulangi jadual yang kami ada di dalam SEMUA, dan kemudian kami dapat mengakses semua nilai yang sedang kami lelaran.
Jadi, dalam lelaran pertama, kita hanya mempunyai satu nilai. Dalam lelaran kedua, kita mempunyai nilai kedua. Tetapi apabila kita menulis MAX, ia adalah bebas daripada konteks baris yang kita cipta menggunakan fungsi FILTER. Jadi MAX sedang dinilai dalam konteks penapis yang dibuat oleh Nombor Tahun Semasa yang telah kami gunakan dalam matriks itu.
Apabila kita berada di 2006, MAX akan mengembalikan 2006 manakala baris semasa boleh menjadi 2006, 2007, atau 2008. FILTER akan mengembalikan jadual yang memenuhi kriteria yang kita nyatakan dalam hujah kedua. Apabila kita beralih ke 2007, MAX akan mengembalikan 2007. Pada tahun 2008, ia akan mengembalikan 2008. Dan bergantung kepada semua nilai yang kurang daripada nilai yang dikembalikan oleh fungsi MAX, FILTER akan mengembalikan a meja.
Untuk membuktikan bahawa MAX tidak bergantung pada konteks baris, kita boleh mengasingkan sekeping kod DAX ini kepada beberapa pembolehubah. Dan kemudian, kita akan dapat memahami bahawa rujukan lajur di sebelah kiri dan di sebelah kanan adalah tidak sama.
Jadi, mari buat pembolehubah.
Seperti yang anda lihat dalam ukuran di bawah, saya mencipta tiga pembolehubah ( ). Saya kemudian menambah kod FILTER terakhir dengan Keputusan pembolehubah yang menggunakan COUNTROWS . Apabila saya menggunakan ukuran ini dalam jadual di bawah, anda akan melihat tiada apa yang berubah. Hasilnya masih sama. Kami masih mendapat jumlah larian yang sama seperti yang kami perolehi sebelum ini.
Jika kita kembali kepada kod dan cuba mendapatkan semula nilai pembolehubah pertama dan mengesahkan bahawa, anda boleh melihat bahawa untuk setiap baris, kita mendapat tahun yang sama.
Jadi, mudah-mudahan, saya dapat menjelaskan kepada anda bahawa fungsi MAX, dalam kod khusus ini, sebenarnya tidak bergantung pada konteks sebenar untuk nilainya. Dan jika anda ingin memudahkan pemahaman anda tentang konteks penilaian, anda sentiasa boleh memecahkan kod kepada beberapa pembolehubah supaya anda boleh memahami susunan penilaian dan cara kod itu dilaksanakan.
Sekarang, saya ingin menunjukkan kepada anda senario di mana fungsi MAX akan bergantung pada konteks baris yang dicipta oleh fungsi FILTER.
Jadi, mari kita kembali kepada ukuran itu. Mari kita buat pendua itu, dan bukannya Tahun Terlihat Terakhir, saya akan mempunyai MAX Dates Calendar Year Number. Apabila saya membawanya ke dalam matriks, anda boleh melihat bahawa kita mendapat kosong.
kenapa?
Perkaranya ialah kita berulang sepanjang tahun dan apa yang CALCULATE lakukan ialah ia menukar baris yang sedang diulang kepada konteks penapis yang setara.
Jika saya menulis tanda yang sama di sini, anda boleh melihat bahawa kita mendapat tujuh, tujuh, dan tujuh.
kenapa?
Biar saya buat jadual terkira baharu supaya anda boleh memahami perkara yang berlaku dengan mudah.
Saya akan membuat jadual baharu. Seterusnya, saya akan menulis pada SEMUA Tarikh Nombor Tahun Kalendar. Kemudian, saya akan menulis Tahun Maks, dan kemudian saya akan menggunakan CALCULATE melebihi MAX Nombor Tahun Kalendar Tarikh. Dan kini anda dapat melihat bahawa untuk setiap baris, kami mengulangi nilai yang sama.
Oleh kerana nombor-nombor ini tidak betul-betul kurang daripada mereka sendiri, kami mendapat kosong. Tetapi apabila kita menggunakan sama dengan (=), kita mengatakan bahawa semua nilai yang kurang daripada 2011 mendapat tujuh.
Selain itu, walaupun anda menggunakan rujukan ukuran seperti sesuatu seperti Max Year, kod ini tidak akan berfungsi.
Jika saya klik sahkan, anda boleh melihat bahawa kami masih tidak mendapat apa-apa. Ini kerana apabila kita menulis Max Year, kita hanya menulis CALCULATE MAX Dates Calendar Year Number.
Rujukan ukuran sentiasa mempunyai KIRA di luarnya. Jadi, langkah ini memulakan peralihan konteks yang menukar baris yang sedang diulang kepada konteks penapis.
Tetapi jika anda terikat dan anda perlu menggunakan rujukan ukuran, apa yang anda boleh lakukan ialah menyimpan ukuran itu dalam pembolehubah. Dan seperti yang anda mungkin tahu, pembolehubah adalah malar, dan mereka tidak boleh membuat peralihan konteks. Jadi ia tidak boleh menukar konteks baris ke dalam konteks penapis.
Jadi, itu ialah demonstrasi pantas tentang cara konteks baris dan konteks penapis berinteraksi antara satu sama lain dalam kod DAX.
Sekarang mari pergi ke DAX Studio untuk memahami apa yang berlaku di sebalik tabir.
Menggunakan DAX Studio Untuk Memahami Konteks Baris Dan Konteks Penapis
Mari pergi ke Alat Luaran dan lancarkan DAX Studio. Kami perlu menyambung ke fail LuckyTemplates dengan bantuan Pelan Pertanyaan dan Pemasaan Pelayan .
Kemudian, saya akan membuat ukuran pertanyaan. Saya akan menulis DEFINE MEASURE dalam jadual Dates, Dates Running Total. Dan kemudian, saya akan menggunakan kod asal yang kami ada.
Oleh kerana kita sepatutnya memulangkan jadual, kita boleh menulis EVALUATE. Akhir sekali, kita akan mencipta jadual menggunakan SUMMARIZECOLUMNS. Jadi, kita akan menulis Nombor Tahun Kalendar Tarikh, dan lajur maya, yang akan menjadi Jumlah Berjalan. Kemudian, saya boleh menulis sesuatu seperti DT sebagai kata kunci DAX Studio.
Jika saya melaksanakan kod ini, anda boleh melihat bahawa kod itu lengkap dan kami masih mendapat hasil yang sama seperti yang kami lihat di dalam LuckyTemplates.
Sekarang, mari pergi ke Rancangan Pertanyaan untuk memahami apa yang berlaku di sebalik tabir. Mari lihat sama ada fungsi MAX sebenarnya bergantung pada konteks baris atau tidak. Mari pergi ke Rancangan Pertanyaan logik kerana Rancangan Pertanyaan fizikal secara amnya lebih kompleks dan agak sukar dibaca.
Anda boleh melihat bahawa pengendali pertama pada baris pertama ialah GroupSemiJoin dan yang digunakan oleh SUMMARIZECOLUMNS untuk mencipta sambungan dalaman antara dua lajur.
Kemudian, untuk menyertai lajur tersebut, terdapat Scan_Vertipaq , iaitu enjin storan yang kami ada di dalam perkhidmatan analisis. Kita dapat melihat bahawa ia mengatakan bahawa kita memerlukan lajur, iaitu Nombor Tahun Kalendar Tarikh. Dalam LuckyTemplates, anda boleh melihat bahawa pada matriks, kami mempunyai lajur Nombor Tahun Kalendar ini, yang bertindak sebagai akses kepada laporan kami.
Seterusnya, kami mempunyai fungsi COUNTROWS dalam ukuran kami sebagai pengendali peringkat atas, kemudian COUNTROWS memanggil fungsi FILTER untuk penapis. Terdapat Scan_Vertipaq sekali lagi, yang mengatakan bahawa RequiredCols ialah Nombor Tahun Kalendar Tarikh.
Baris 2 dan 5 adalah sama, tetapi Scan_Vertipaq pertama ditandakan dengan sifar manakala yang kedua dengan satu. Ini bermakna lajur yang kami akses, dengan bantuan fungsi SEMUA, diekstrak secara berasingan daripada lajur yang kami ada di dalam fungsi SUMMARIZECOLUMNS.
Kemudian, terdapat pengendali LessThan . Dalam baris seterusnya, kita dapat melihat bahawa terdapat perbandingan antara konteks baris dan fungsi MAX .
Ini diikuti oleh Max_Vertipaq . Jadi, kami sebenarnya mengekstrak nilai Max daripada enjin storan. Di sebelah kanan, anda boleh melihat bahawa ia tertera, Nombor Tahun Kalendar Tarikh DependOnCols. Ini adalah perkara paling penting yang perlu kita ingat. Terdahulu, saya mengatakan bahawa tiada kebergantungan fungsi MAX pada konteks baris, dan inilah yang sebenarnya membuktikannya.
Jadi, di sini ia berkata sifar.
Di manakah kita dapati sifar?
Di bahagian atas (baris kedua), yang sedang diekstrak untuk SUMMARIZECOLUMNS. Ini bermakna bahawa fungsi MAX tidak bergantung pada konteks baris, tetapi ia sebenarnya bergantung pada lajur (Nombor Tahun Kalendar) yang kita ada di dalam jadual itu. Jadi jadual itu sebenarnya mencipta konteks penapis.
Ringkasnya, fungsi MAX bergantung pada konteks penapis dan bukan konteks baris.
Seterusnya, anda boleh melihat bahawa untuk mengira Max_Vertipaq, kami mempunyai Scan_Vertipaq , yang mengatakan bahawa DependOnCols sifar (0) Tarikh Kalendar Nombor Tahun. Dan kemudian, terdapat beberapa lajur lain yang memerlukan lajur.
Sekarang mari kita lihat versi pembolehubah kod. Daripada mengembalikan LastVisibleYear, saya akan mengembalikan versi COUNTROWS atau pembolehubah Hasil, dan anda boleh melihat bahawa kami masih mendapat hasil yang sama.
Jika kita melihat Rancangan Pertanyaan, anda dapat melihat bahawa ia agak panjang, tetapi ia lebih mudah dibaca.
Akhir sekali, berikut ialah versi kod yang dikira juga
Dan inilah rupa Pelan Pertanyaan Logiknya.
DAX LuckyTemplates: Apakah Itu
Pengenalan Konteks Baris kepada Konteks Penapis dalam LuckyTemplates
Apakah Peralihan Konteks Dan Mengapa Ia Penting?
Kesimpulan
Dalam tutorial ini, saya telah menerangkan bagaimana fungsi tertentu boleh berinteraksi dan tidak boleh berinteraksi dengan konteks baris. Saya juga telah menunjukkan kepada anda cara MAX, dalam kes ini, dinilai dalam konteks penapis dan bukan dalam konteks baris.
Adalah penting untuk sentiasa ingat bahawa konteks penapis menapis keseluruhan model dan konteks baris hanya mengulangi jadual yang diberikan dan tidak sekali-kali menapis model. Konteks penapis tidak mengulang jadual.
Saya harap anda mendapati tutorial ini membantu. Nantikan kod DAX Studio kami yang akan kami keluarkan tidak lama lagi. Kami akan pergi lebih mendalam ke dalam senario yang sama. Kami juga akan mengajar anda cara anda boleh mengoptimumkan kod DAX anda.
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