Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menggunakan contoh model semantik untuk bekerja melalui langkah-langkah di bawah ini, tutorial ini menunjukkan kepada Anda cara menerapkan keamanan tingkat baris dalam Model Tabular Analysis Services lokal dan menggunakannya dalam laporan Power BI.
- Buat tabel keamanan baru di database AdventureworksDW2012
- Bangun model tabular dengan tabel fakta dan dimensi yang diperlukan
- Menetapkan peran dan izin pengguna
- Sebarkan model ke instans tabular Analysis Services
- Buat laporan Power BI Desktop yang menampilkan data yang disesuaikan dengan pengguna yang mengakses laporan
- Sebarkan laporan ke layanan Power BI
- Buat dasbor baru berdasarkan laporan
- Bagikan dasbor dengan rekan kerja Anda
Tutorial ini memerlukan database AdventureworksDW2012.
Tugas 1: Membuat tabel keamanan pengguna dan menentukan hubungan data
Anda dapat menemukan banyak artikel yang menjelaskan cara menentukan keamanan dinamis tingkat baris dengan model tabular SQL Server Analysis Services (SSAS).
Langkah-langkah di sini memerlukan penggunaan database relasional AdventureworksDW2012.
Di AdventureworksDW2012, buat tabel
DimUserSecurity
seperti yang ditunjukkan di bawah ini. Anda dapat menggunakan SQL Server Management Studio (SSMS) untuk membuat tabel.Setelah membuat dan menyimpan tabel, Anda perlu membuat hubungan antara kolom
SalesTerritoryID
tabelDimUserSecurity
dan kolomSalesTerritoryKey
tabelDimSalesTerritory
, seperti yang ditunjukkan di bawah ini.Di SSMS, klik kanan DimUserSecurity, dan pilih Desain. Lalu pilih Desainer Tabel>Hubungan.... Setelah selesai, simpan tabel.
Tambahkan pengguna ke tabel. Klik kanan DimUserSecurity dan pilih Edit 200 Baris Teratas. Setelah Anda menambahkan pengguna, tabel
DimUserSecurity
akan tampak seperti contoh berikut:Anda akan melihat pengguna ini dalam tugas mendatang.
Selanjutnya, lakukan penggabungan dalam dengan tabel
DimSalesTerritory
, yang memperlihatkan detail wilayah terkait pengguna. Kode SQL di sini melakukan penggabungan dalam, dan gambar menunjukkan bagaimana tabel kemudian muncul.select b.SalesTerritoryCountry, b.SalesTerritoryRegion, a.EmployeeID, a.FirstName, a.LastName, a.UserName from [dbo].[DimUserSecurity] as a join [dbo].[DimSalesTerritory] as b on a.[SalesTerritoryID] = b.[SalesTerritoryKey]
Tabel gabungan menunjukkan siapa yang bertanggung jawab atas setiap wilayah penjualan, berkat hubungan yang dibuat di Langkah 2. Misalnya, Anda dapat melihat bahwa Rita Santos bertanggung jawab atas Australia.
Tugas 2: Membuat model tabular dengan fakta dan tabel dimensi
Setelah gudang data relasional Anda siap, Anda perlu menentukan model tabular. Anda dapat membuat model menggunakan SQL Server Data Tools (SSDT). Untuk informasi selengkapnya, lihat Membuat Proyek Model Tabular Baru.
Impor semua tabel yang diperlukan ke dalam model seperti yang ditunjukkan di bawah ini.
Setelah mengimpor tabel yang diperlukan, Anda perlu menentukan peran yang disebut SalesTerritoryUsers dengan izin Baca. Pilih menu Model di SQL Server Data Tools, lalu pilih Peran. Di Manajer Peran, pilih Baru.
Di bawah Anggota di Manajer Peran, tambahkan pengguna yang Anda tentukan dalam tabel
DimUserSecurity
di Tugas 1.Selanjutnya, tambahkan fungsi yang tepat untuk tabel
DimSalesTerritory
danDimUserSecurity
, seperti yang ditunjukkan di bawah ini di bawah tab Filter Baris.Fungsi
LOOKUPVALUE
mengembalikan nilai untuk kolom di mana nama pengguna Windows cocok denganUSERNAME
yang dikembalikan fungsi. Anda kemudian dapat membatasi kueri ke tempat nilaiLOOKUPVALUE
yang dikembalikan cocok dengan yang ada dalam tabel yang sama atau terkait. Di kolom Filter DAX, ketik rumus berikut ini:=DimSalesTerritory[SalesTerritoryKey]=LOOKUPVALUE(DimUserSecurity[SalesTerritoryID], DimUserSecurity[UserName], USERNAME(), DimUserSecurity[SalesTerritoryID], DimSalesTerritory[SalesTerritoryKey])
Dalam rumus ini, fungsi
LOOKUPVALUE
mengembalikan semua nilai untuk kolomDimUserSecurity[SalesTerritoryID]
, di manaDimUserSecurity[UserName]
sama dengan yang saat ini masuk Windows nama pengguna, danDimUserSecurity[SalesTerritoryID]
sama denganDimSalesTerritory[SalesTerritoryKey]
.Penting
Saat menggunakan keamanan tingkat baris, fungsi DAX USERELATIONSHIP tidak didukung.
Set pengembalian
LOOKUPVALUE
SalesTerritoryKey
Penjualan kemudian digunakan untuk membatasi baris yang ditunjukkan dalamDimSalesTerritory
. Hanya baris dengan nilaiSalesTerritoryKey
berada dalam ID yang dikembalikan oleh fungsiLOOKUPVALUE
yang ditampilkan.Untuk tabel
DimUserSecurity
, di kolom Filter DAX, tambahkan rumus berikut:=FALSE()
Rumus ini menentukan bahwa semua kolom mengatasi
false
; yang berarti kolom tabelDimUserSecurity
tidak dapat dikueri.
Sekarang Anda perlu memproses dan menyebarkan model. Untuk informasi selengkapnya, lihat Menyebarkan.
Tugas 3: Menambahkan Sumber Data dalam gateway data lokal Anda
Setelah model tabular Anda disebarkan dan siap dikonsumsi, Anda perlu menambahkan koneksi sumber data ke server tabular Analysis Services lokal Anda.
Untuk mengizinkan akses layanan Power BI ke layanan analisis lokal, Anda memerlukan gateway data lokal yang diinstal dan dikonfigurasi di lingkungan Anda.
Setelah gateway dikonfigurasi dengan benar, Anda perlu membuat koneksi sumber data untuk instans tabular Analysis Services Anda. Untuk informasi selengkapnya, lihat Mengelola sumber data Anda - Analysis Services.
Setelah prosedur ini selesai, gateway dikonfigurasi dan siap berinteraksi dengan sumber data Analysis Services lokal Anda.
Tugas 4: Membuat laporan berdasarkan model tabular layanan analisis menggunakan desktop Power BI
Mulai Power BI Desktop dan pilih Dapatkan data>Database.
Dari daftar sumber data, pilih Database SQL Server Analysis Services dan pilih Sambungkan.
Isi detail instans tabular Analysis Services Anda dan pilih Sambungkan langsung. Kemudian pilih OK.
Dengan Power BI, keamanan dinamis hanya berfungsi dengan koneksi langsung.
Anda dapat melihat bahwa model yang disebarkan ada di instans Analysis Services. Pilih model masing-masing lalu pilih OK.
Power BI Desktop sekarang menampilkan semua bidang yang tersedia, di sebelah kanan kanvas di panel Bidang.
Di panel Bidang, pilih ukuran SalesAmount dari tabel FactInternetSales dan dimensi SalesTerritoryRegion dari tabel SalesTerritory.
Kami tidak akan menambahkan kolom lagi saat ini agar laporan ini tetap sederhana. Untuk mendapatkan representasi data yang lebih bermakna, ubah visualisasi menjadi bagan Donat.
Setelah laporan siap, Anda dapat langsung menerbitkannya ke portal Power BI. Dari pita Beranda di Power BI Desktop, pilih Terbitkan.
Tugas 5: Membuat dan membagikan dasbor
Anda telah membuat laporan dan menerbitkannya ke layanan Power BI. Sekarang Anda dapat menggunakan contoh yang dibuat pada langkah-langkah sebelumnya untuk menunjukkan skenario keamanan model.
Dalam peran sebagai Manajer Penjualan, pengguna Grace dapat melihat data dari semua wilayah penjualan yang berbeda. Grace membuat laporan ini dan menerbitkannya ke layanan Power BI. Laporan ini dibuat di tugas sebelumnya.
Setelah Grace menerbitkan laporan, langkah selanjutnya adalah membuat dasbor di layanan Power BI yang disebut TabularDynamicSec berdasarkan laporan tersebut. Dalam gambar berikut, perhatikan bahwa Grace dapat melihat data yang sesuai dengan semua wilayah penjualan.
Sekarang Grace berbagi dasbor dengan kolega, Rita, yang bertanggung jawab atas penjualan wilayah Australia.
Saat Rita masuk ke layanan Power BI dan melihat dasbor bersama yang dibuat Grace, hanya penjualan dari wilayah Australia yang terlihat.
Selamat! Layanan Power BI menunjukkan keamanan tingkat baris dinamis yang ditentukan dalam model tabular Analysis Services lokal. Power BI menggunakan properti EffectiveUserName
untuk mengirim kredensial pengguna Power BI saat ini ke sumber data lokal untuk menjalankan kueri.
Tugas 6: Memahami apa yang terjadi di balik layar
Tugas ini mengasumsikan Anda terbiasa dengan SQL Server Profiler, karena Anda perlu mengambil jejak profiler SQL Server pada instans tabular SSAS lokal Anda.
Sesi akan diinisialisasi segera setelah pengguna, Rita, mengakses dasbor di layanan Power BI. Anda dapat melihat bahwa peran salesterritoryusers berpengaruh langsung dengan nama pengguna yang efektif sebagai <EffectiveUserName>rita@contoso.com</EffectiveUserName>
<PropertyList><Catalog>DefinedSalesTabular</Catalog><Timeout>600</Timeout><Content>SchemaData</Content><Format>Tabular</Format><AxisFormat>TupleFormat</AxisFormat><BeginRange>-1</BeginRange><EndRange>-1</EndRange><ShowHiddenCubes>false</ShowHiddenCubes><VisualMode>0</VisualMode><DbpropMsmdFlattened2>true</DbpropMsmdFlattened2><SspropInitAppName>PowerBI</SspropInitAppName><SecuredCellValue>0</SecuredCellValue><ImpactAnalysis>false</ImpactAnalysis><SQLQueryMode>Calculated</SQLQueryMode><ClientProcessID>6408</ClientProcessID><Cube>Model</Cube><ReturnCellProperties>true</ReturnCellProperties><CommitTimeout>0</CommitTimeout><ForceCommitTimeout>0</ForceCommitTimeout><ExecutionMode>Execute</ExecutionMode><RealTimeOlap>false</RealTimeOlap><MdxMissingMemberMode>Default</MdxMissingMemberMode><DisablePrefetchFacts>false</DisablePrefetchFacts><UpdateIsolationLevel>2</UpdateIsolationLevel><DbpropMsmdOptimizeResponse>0</DbpropMsmdOptimizeResponse><ResponseEncoding>Default</ResponseEncoding><DirectQueryMode>Default</DirectQueryMode><DbpropMsmdActivityID>4ea2a372-dd2f-4edd-a8ca-1b909b4165b5</DbpropMsmdActivityID><DbpropMsmdRequestID>2313cf77-b881-015d-e6da-eda9846d42db</DbpropMsmdRequestID><LocaleIdentifier>1033</LocaleIdentifier><EffectiveUserName>rita@contoso.com</EffectiveUserName></PropertyList>
Berdasarkan permintaan nama pengguna yang efektif, Analysis Services mengonversi permintaan ke kredensial contoso\rita
aktual setelah mengkueri Active Directory lokal. Setelah mendapatkan kredensial, Analysis Services mengembalikan data yang dapat dilihat dan diakses pengguna.
Jika lebih banyak aktivitas terjadi dengan dasbor, dengan SQL Profiler, Anda akan melihat kueri tertentu kembali ke model tabular Analysis Services sebagai kueri DAX. Misalnya, jika Rita beralih dari dasbor ke laporan yang mendasar, kueri berikut terjadi.
Anda juga dapat melihat di bawah kueri DAX yang dijalankan untuk mengisi data laporan.
EVALUATE
ROW(
"SumEmployeeKey", CALCULATE(SUM(Employee[EmployeeKey]))
)
<PropertyList xmlns="urn:schemas-microsoft-com:xml-analysis">``
<Catalog>DefinedSalesTabular</Catalog>
<Cube>Model</Cube>
<SspropInitAppName>PowerBI</SspropInitAppName>
<EffectiveUserName>rita@contoso.com</EffectiveUserName>
<LocaleIdentifier>1033</LocaleIdentifier>
<ClientProcessID>6408</ClientProcessID>
<Format>Tabular</Format>
<Content>SchemaData</Content>
<Timeout>600</Timeout>
<DbpropMsmdRequestID>8510d758-f07b-a025-8fb3-a0540189ff79</DbpropMsmdRequestID>
<DbPropMsmdActivityID>f2dbe8a3-ef51-4d70-a879-5f02a502b2c3</DbPropMsmdActivityID>
<ReturnCellProperties>true</ReturnCellProperties>
<DbpropMsmdFlattened2>true</DbpropMsmdFlattened2>
<DbpropMsmdActivityID>f2dbe8a3-ef51-4d70-a879-5f02a502b2c3</DbpropMsmdActivityID>
</PropertyList>
Pertimbangan
Keamanan tingkat baris lokal dengan Power BI hanya tersedia dengan koneksi langsung.
Setiap perubahan dalam data setelah memproses model akan segera tersedia bagi pengguna yang mengakses laporan dengan koneksi langsung dari layanan Power BI.