Konteks memungkinkan Anda melakukan analisis dinamis, di mana hasil rumus bisa berubah untuk mencerminkan pilihan baris atau sel saat ini dan juga data terkait. Memahami konteks dan menggunakan konteks secara efektif sangat penting untuk menyusun rumus berkinerja tinggi, analisis dinamis, dan untuk memecahkan masalah dalam rumus.
Bagian ini menentukan tipe konteks yang berbeda: konteks baris, konteks kueri, dan konteks filter. Ini menjelaskan bagaimana konteks dievaluasi untuk rumus dalam kolom terhitung dan dalam PivotTable.
Bagian terakhir artikel ini menyediakan link ke contoh mendetail yang menggambarkan bagaimana hasil rumus berubah sesuai konteks.
Memahami Konteks
Rumus dalam Power Pivot bisa dipengaruhi oleh filter yang diterapkan dalam PivotTable, menurut hubungan antar tabel, dan menurut filter yang digunakan dalam rumus. Kontekslah yang memungkinkan untuk melakukan analisis dinamis. Memahami konteks penting untuk menyusun dan untuk pemecahan masalah rumus.
Terdapat berbagai tipe konteks: konteks baris, konteks kueri, dan konteks filter.
Konteks baris dapat dianggap sebagai "baris saat ini." Jika Anda telah membuat kolom terhitung, konteks baris terdiri dari nilai dalam setiap baris dan nilai individual dalam kolom yang terkait dengan baris saat ini. Ada juga beberapa fungsi (EARLIER dan EARLIEST) yang mendapatkan nilai dari baris saat ini lalu menggunakan nilai tersebut saat melakukan operasi di seluruh tabel.
Konteks kueri merujuk ke subkumpulan data yang secara implisit dibuat untuk setiap sel dalam PivotTable, bergantung pada header baris dan kolom.
Konteks filter adalah kumpulan nilai yang diperbolehkan dalam setiap kolom, berdasarkan batasan filter yang diterapkan ke baris atau yang ditentukan oleh ekspresi filter dalam rumus.
Konteks Baris
Jika Anda membuat rumus dalam kolom terhitung, konteks baris untuk rumus tersebut menyertakan nilai dari semua kolom dalam baris saat ini. Jika tabel terkait dengan tabel lain, konten juga menyertakan semua nilai dari tabel lain yang terkait dengan baris saat ini.
Misalnya, anda membuat kolom terhitung, =[Freight] + [Tax],
, yang menambahkan dua kolom dari tabel yang sama. Rumus ini berulah seperti rumus dalam tabel Excel, yang secara otomatis mereferensikan nilai dari baris yang sama. Perhatikan bahwa tabel berbeda dari rentang: Anda tidak bisa mereferensikan nilai dari baris sebelum baris saat ini dengan menggunakan notasi rentang, dan Anda tidak bisa mereferensikan nilai tunggal yang semena-mena dalam tabel atau sel. Anda harus selalu bekerja dengan tabel dan kolom.
Konteks baris secara otomatis mengikuti hubungan antar tabel untuk menentukan baris mana dalam tabel terkait yang terkait dengan baris saat ini.
Misalnya, rumus berikut menggunakan fungsi RELATED untuk mengambil nilai pajak dari tabel terkait, berdasarkan kawasan tempat pesanan dikirimkan. Nilai pajak ditentukan dengan menggunakan nilai untuk kawasan dalam tabel saat ini, mencari kawasan dalam tabel terkait, lalu mendapatkan tarif pajak untuk kawasan tersebut dari tabel terkait.
= [Freight] + RELATED('Region'[TaxRate])
Rumus ini hanya mendapatkan tarif pajak untuk kawasan saat ini, dari tabel Kawasan. Anda tidak perlu mengetahui atau menentukan kunci yang menghubungkan tabel.
Konteks Beberapa Baris
Selain itu, DAX menyertakan fungsi yang berulang dalam penghitungan di atas tabel. Fungsi ini dapat memiliki beberapa baris saat ini dan konteks baris saat ini. Dalam istilah pemrograman, Anda bisa membuat rumus yang berulang melalui pengulangan dalam dan luar.
Misalnya, anggaplah buku kerja Anda berisi tabel Produk dan tabel Penjualan . Anda mungkin ingin menelusuri seluruh tabel penjualan, yang penuh dengan transaksi yang melibatkan beberapa produk, dan menemukan jumlah terbesar yang dipesan untuk setiap produk dalam satu transaksi.
Di Excel, penghitungan ini memerlukan serangkaian ringkasan menengah, yang harus dibangun ulang jika data berubah. Jika Anda adalah pengguna excel yang hebat, Anda mungkin bisa menyusun rumus array yang akan melakukan pekerjaan tersebut. Atau, dalam database relasional, Anda dapat menulis subpilih bertumpuk.
Namun, dengan DAX Anda bisa menyusun satu rumus yang mengembalikan nilai yang benar, dan hasilnya diperbarui secara otomatis kapan saja Anda menambahkan data ke tabel.
=MAXX(FILTER(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])
Untuk panduan mendetail tentang rumus ini, lihat yang SEBELUMNYA.
Singkatnya, fungsi EARLIER menyimpan konteks baris dari operasi yang mendahului operasi saat ini. Setiap saat, fungsi disimpan dalam memori dua set konteks: satu set konteks mewakili baris saat ini untuk pengulangan dalam rumus, dan sekumpulan konteks lainnya mewakili baris saat ini untuk pengulangan luar rumus. DAX secara otomatis memberi umpan nilai di antara dua pengulangan sehingga Anda bisa membuat agregat kompleks.
Konteks Kueri
Konteks kueri merujuk ke subkumpulan data yang diambil secara implisit untuk rumus. Saat Anda menjatuhkan pengukuran atau bidang nilai lain ke dalam sel dalam PivotTable, mesin Power Pivot memeriksa header baris dan kolom, pemotong, dan filter laporan untuk menentukan konteksnya. Lalu, Power Pivot membuat penghitungan yang diperlukan untuk mengisi setiap sel dalam PivotTable. Kumpulan data yang diambil adalah konteks kueri untuk setiap sel.
Karena konteks bisa berubah tergantung pada tempat Anda menempatkan rumus, hasil rumus juga berubah tergantung pada apakah Anda menggunakan rumus dalam PivotTable dengan banyak pengelompokan dan filter, atau di kolom terhitung tanpa filter dan konteks minimal.
Misalnya, anggaplah Anda membuat rumus sederhana ini yang menjumlahkan nilai dalam kolom Laba dari tabel Penjualan :=SUM('Penjualan'[Laba]).
Jika Anda menggunakan rumus ini dalam kolom terhitung dalam tabel Penjualan , hasil untuk rumus akan sama untuk seluruh tabel, karena konteks kueri untuk rumus selalu merupakan seluruh kumpulan data tabel Penjualan . Hasil Anda akan memiliki keuntungan untuk semua kawasan, semua produk, bertahun-tahun, dan sebagainya.
Namun, biasanya Anda tidak ingin melihat hasil yang sama ratusan kali, tetapi sebaliknya Anda ingin mendapatkan laba untuk tahun tertentu, negara atau kawasan tertentu, produk tertentu, atau beberapa kombinasi dari ini, lalu mendapatkan total keseluruhan.
Dalam PivotTable, mudah untuk mengubah konteks dengan menambahkan atau menghapus header kolom dan baris dan dengan menambahkan atau menghapus Pemotong. Anda bisa membuat rumus seperti yang di atas, dalam pengukuran, lalu menjatuhkannya ke PivotTable. Setiap kali Anda menambahkan judul kolom atau baris ke PivotTable, Anda mengubah konteks kueri di mana pengukuran dievaluasi. Operasi pemotongan dan pemfilteran juga memengaruhi konteks. Oleh karena itu, rumus yang sama, digunakan dalam PivotTable, dievaluasi dalam konteks kueri yang berbeda untuk setiap sel.
Konteks Filter
Konteks filter ditambahkan ketika Anda menentukan batasan filter pada kumpulan nilai yang diperbolehkan dalam kolom atau tabel, dengan menggunakan argumen ke rumus. Konteks filter diterapkan di atas konteks lain, seperti konteks baris atau konteks kueri.
Misalnya, PivotTable menghitung nilainya untuk setiap sel berdasarkan judul baris dan kolom, seperti yang dijelaskan di bagian sebelumnya pada konteks kueri. Namun, dalam pengukuran atau kolom terhitung yang Anda tambahkan ke PivotTable, Anda bisa menentukan ekspresi filter untuk mengontrol nilai yang digunakan oleh rumus. Anda juga dapat mengosongkan filter pada kolom tertentu secara selektif.
Untuk informasi selengkapnya tentang cara membuat filter dalam rumus, lihat fungsi Filter.
Untuk contoh bagaimana filter dapat dikosongkan untuk membuat total keseluruhan, lihat ALL.
Untuk contoh cara menghapus dan menerapkan filter dalam rumus secara selektif, lihat Fungsi ALLEXCEPT.
Oleh karena itu, Anda harus meninjau definisi pengukuran atau rumus yang digunakan dalam PivotTable sehingga Anda mengetahui konteks filter saat menginterpretasikan hasil rumus.
Menentukan Konteks dalam Rumus
Saat Anda membuat rumus, Power Pivot untuk Excel terlebih dahulu memeriksa sintaks umum, lalu memeriksa nama kolom dan tabel yang Anda sediakan terhadap kolom dan tabel yang memungkinkan dalam konteks saat ini. Jika Power Pivot tidak dapat menemukan kolom dan tabel yang ditentukan oleh rumus, Anda akan mendapatkan kesalahan.
Konteks ditentukan sebagaimana dijelaskan dalam bagian sebelumnya, dengan menggunakan tabel yang tersedia dalam buku kerja, hubungan apa pun di antara tabel, dan filter apa pun yang telah diterapkan.
Misalnya, jika Anda baru saja mengimpor beberapa data ke dalam tabel baru dan belum menerapkan filter apa pun, seluruh kumpulan kolom dalam tabel adalah bagian dari konteks saat ini. Jika Anda memiliki beberapa tabel yang ditautkan oleh hubungan dan Anda bekerja dalam PivotTable yang telah difilter dengan menambahkan judul kolom dan menggunakan Pemotong, konteksnya menyertakan tabel terkait dan filter apa pun pada data.
Konteks adalah konsep canggih yang juga bisa menyulitkan pemecahan masalah rumus. Kami menyarankan Agar Anda memulai dengan rumus dan hubungan sederhana untuk melihat cara kerja konteks, lalu mulai bereksperimen dengan rumus sederhana dalam PivotTable. Bagian berikut ini juga menyediakan beberapa contoh cara rumus menggunakan tipe konteks yang berbeda untuk mengembalikan hasil secara dinamis.
Contoh Konteks dalam Rumus
-
Fungsi RELATED memperluas konteks baris saat ini untuk menyertakan nilai dalam kolom terkait. Ini memungkinkan Anda melakukan pencarian. Contoh dalam topik ini menggambarkan interaksi pemfilteran dan konteks baris.
-
Fungsi FILTER memungkinkan Anda menentukan baris untuk disertakan dalam konteks saat ini. Contoh dalam topik ini juga menggambarkan cara menyematkan filter dalam fungsi lain yang melakukan agregat.
-
Fungsi ALL mengatur konteks dalam rumus. Anda bisa menggunakannya untuk menimpa filter yang diterapkan sebagai hasil dari konteks kueri.
-
Fungsi ALLEXCEPT memungkinkan Anda menghapus semua filter kecuali filter yang Anda tentukan. Kedua topik tersebut menyertakan contoh yang memanjakan Anda dalam menyusun rumus dan memahami konteks yang kompleks.
-
Fungsi EARLIER dan EARLIEST memungkinkan Anda mengulang tabel dengan melakukan penghitungan, sambil mereferensikan nilai dari pengulangan dalam. Jika Anda terbiasa dengan konsep rekursi dan dengan pengulangan dalam dan luar, Anda akan menghargai kekuatan yang disediakan oleh fungsi EARLIER dan EARLIEST. Jika Anda baru menggunakan konsep ini, Anda harus mengikuti langkah-langkah dalam contoh dengan cermat untuk melihat bagaimana konteks dalam dan luar digunakan dalam perhitungan.
Integritas Referensial
Bagian ini membahas beberapa konsep tingkat lanjut yang terkait dengan nilai yang hilang dalam tabel Power Pivot yang tersambung oleh hubungan. Bagian ini mungkin berguna bagi Anda jika Anda memiliki buku kerja dengan beberapa tabel dan rumus kompleks dan menginginkan bantuan dalam memahami hasilnya.
Jika Anda baru menggunakan konsep data relasional, kami menyarankan agar Anda terlebih dahulu membaca topik pengenalan, Gambaran Umum Hubungan.
Integritas Referensial dan Hubungan Power Pivot
Power Pivot tidak mengharuskan integritas referensial diberlakukan di antara dua tabel untuk menentukan hubungan yang valid. Sebagai gantinya, baris kosong dibuat di akhir "satu" dari setiap hubungan satu ke banyak dan digunakan untuk menangani semua baris yang tidak cocok dari tabel terkait. Ini secara efektif berulah sebagai gabungan luar SQL.
Dalam PivotTable, jika Anda mengelompokkan data di satu sisi hubungan, setiap data yang tidak cocok di banyak sisi hubungan dikelompokkan bersama-sama dan akan disertakan dalam total dengan judul baris kosong. Judul kosong kira-kira setara dengan "anggota yang tidak diketahui."
Memahami Anggota yang Tidak Diketahui
Konsep anggota yang tidak diketahui mungkin sudah tidak asing lagi bagi Anda jika Anda telah bekerja dengan sistem database multidimensional, seperti SQL Server Analysis Services. Jika istilah baru bagi Anda, contoh berikut ini menjelaskan apa itu anggota yang tidak diketahui dan bagaimana istilah tersebut memengaruhi penghitungan.
Misalkan Anda membuat perhitungan yang menjumlahkan penjualan bulanan untuk setiap toko, tetapi kolom dalam tabel Penjualan tidak memiliki nilai untuk nama bursa. Mengingat bahwa tabel untuk Bursa dan Penjualan tersambung dengan nama bursa, apa yang akan Anda harapkan terjadi dalam rumus? Bagaimana cara grup PivotTable atau menampilkan angka penjualan yang tidak terkait dengan bursa yang sudah ada?
Masalah ini adalah masalah umum dalam gudang data, di mana tabel besar data fakta harus secara logis terkait dengan tabel dimensi yang berisi informasi tentang penyimpanan, kawasan, dan atribut lain yang digunakan untuk mengkategorikan dan menghitung fakta. Untuk mengatasi masalah tersebut, setiap fakta baru yang tidak terkait dengan entitas yang sudah ada untuk sementara waktu ditetapkan ke anggota yang tidak diketahui. Itulah sebabnya fakta yang tidak terkait akan muncul dikelompokkan dalam PivotTable di bawah judul kosong.
Perlakuan Nilai Kosong vs. Baris Kosong
Nilai kosong berbeda dari baris kosong yang ditambahkan untuk mengakomodasi anggota yang tidak diketahui. Nilai kosong adalah nilai khusus yang digunakan untuk mewakili null, string kosong, dan nilai lain yang hilang. Untuk informasi selengkapnya tentang nilai kosong, serta tipe data DAX lainnya, lihat Tipe data dalam Model Data.