Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apakah ada cara untuk menyematkan laporan dan dasbor bi daya di aplikasi desktop vb.net atau C# dengan database sql server 2008?

Ya, tentu saja! Seperti yang dikatakan @David Browne dalam tanggapannya, ini hanya masalah memuat sesuatu di browser web. Secara umum, tidak masalah apa sumber data Anda - SQL Server atau file datar, semuanya sama. Anda dapat melihat tampilannya di Power BI Embedded Playground.

Anda memiliki dua cara untuk menyematkan laporan Power BI (atau dasbor atau ubin, pada dasarnya sama):

  1. Gunakan Server Laporan Power BI yang diinstal di tempat. Untuk menyematkan laporan, cukup tambahkan iframe ke dalam laman web dan setel sumbernya ke URL laporan, tetapi tambahkan ?rs:embed=true untuk itu. Namun, Server Pelaporan Power BI cukup mahal. Anda memerlukan lisensi untuk SQL Server Enterprise dengan jaminan perangkat lunak, atau langganan Power BI Premium. Keuntungan dalam hal ini adalah fakta bahwa data disimpan di lokasi, karena dalam beberapa kasus, memublikasikan data ke cloud dapat dilarang atau sulit untuk disertifikasi dan menjamin privasi data.

  2. Publikasikan laporan Anda ke Layanan Power BI (yaitu online ke situs web Power BI). Keuntungan dari skenario ini adalah harganya. Anda dapat menerapkan solusi dengan satu akun Power BI Pro, yaitu $10 per bulan. Kerugiannya adalah data Anda harus dapat diakses untuk Layanan Power BI (yaitu di luar jaringan internal Anda) dan sedikit lebih rumit untuk disematkan.

Saat Anda menyematkan Power BI ke dalam aplikasi Anda, ada dua skenario yang dapat dipilih - data milik pengguna dan data milik aplikasi. Dengan yang pertama, setiap pengguna memerlukan akun Power BI Pro sendiri dan menggunakannya untuk melihat laporan yang disematkan. Dengan skenario kedua, Anda hanya memerlukan satu akun Power BI Pro "master" (juga memungkinkan untuk menyematkan autentikasi dengan prinsip layanan, tetapi mari kita buat sederhana untuk saat ini).

Anda tidak menyebutkan apakah Anda aplikasi web aplikasi vb.net atau desktop. Berikut adalah demo yang sangat bagus tentang cara menyematkan Power BI ke dalam aplikasi WPF dan berikut adalah contoh resmi Microsoft bagaimana melakukannya di aplikasi web.

Saya akan menjelaskan lebih detail bagaimana cara menyematkannya di aplikasi desktop, tetapi dengan aplikasi web pada dasarnya sama.

Pertama, Anda perlu mempublikasikan laporan Anda ke Layanan Power BI. Akan lebih baik menggunakan ruang kerja khusus untuk ini. Pastikan akun Pro, yang akan Anda gunakan sebagai akun "master" di aplikasi Anda, memiliki hak untuk ruang kerja ini. Bukan ide yang baik untuk menggunakan akun Anda (mungkin admin), karena ia memiliki lebih banyak hak istimewa daripada yang dibutuhkan. Anda bisa, tetapi jika $10/bulan tidak menjadi masalah, maka belanjakan untuk akun khusus (atau gunakan prinsip layanan).

Maka Anda perlu mendaftarkan aplikasi. Masukkan beberapa nama aplikasi deskriptif, atur jenis aplikasi menjadi aplikasi Asli. Pilih izin yang akan diperlukan untuk aplikasi Anda, yaitu jika hanya akan membaca data, jangan berikan izin "baca dan tulis" untuk itu. Atau berikan mereka semua. Ini keputusan Anda. Daftarkan aplikasi dan salin panduan yang akan Anda dapatkan. Ini disebut "id aplikasi" atau "id klien". Anda akan membutuhkannya nanti.

Langkah selanjutnya adalah mengautentikasi aplikasi Anda terhadap Azure AD. Gunakan Azure Active Directory Authentication Libraries (ADAL) untuk ini. Tambahkan ADAL ke progect Anda (misalnya menggunakan NuGet) dan gunakan kode berikut untuk mendapatkan token akses (kode dalam C#, karena saya tidak menulis dalam vb selama bertahun-tahun, tetapi Anda seharusnya tidak memiliki masalah menerjemahkannya), tetapi tetapkan panduan yang Anda dapatkan untuk clientId dan berikan nilai untuk masterAccountName dan masterAccountPassword :

using Microsoft.IdentityModel.Clients.ActiveDirectory;

private static string redirectUri = "https://login.live.com/oauth20_desktop.srf";
private static string resourceUri = "https://analysis.windows.net/powerbi/api";
private static string authorityUri = "https://login.windows.net/common/oauth2/authorize";
private static string clientId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";

private static AuthenticationContext authContext = new AuthenticationContext(authorityUri, new TokenCache());

// First check is there token in the cache
try
{
    authenticationResult = authContext.AcquireTokenSilentAsync(resourceUri, clientId).Result;
}
catch (AggregateException ex)
{
    AdalException ex2 = ex.InnerException as AdalException;
    if ((ex2 == null) || (ex2 != null && ex2.ErrorCode != "failed_to_acquire_token_silently"))
    {
        throw new ApplicationException(ex.Message);
    }
}

if (authenticationResult == null)
{
    var uc = new UserPasswordCredential(masterAccountName, masterAccountPassword);
    authenticationResult = authContext.AcquireTokenAsync(resourceUri, clientId, uc).Result;
}

Di akhir authenticationResult.AccessToken akan berisi token akses yang Anda perlukan. Jika Anda penasaran apa yang ada di dalamnya, buka https://jwt.io/ dan tempel untuk mendapatkan dekode.

Hubungi Get Report In Group Power BI REST API untuk mendapatkan embedUrl report laporan . Gunakan kode seperti ini (menggunakan Newtonsoft.Json), memberikan groupId actual yang sebenarnya (workspaceId), reportId (Anda bisa mendapatkannya dari URL laporan Anda, saat ditampilkan di browser web) dan accessToken :

string powerBIDatasetsApiUrl = $"https://api.powerbi.com/v1.0/myorg/groups/{groupId}/reports/{reportId}";

var request = WebRequest.Create(powerBIDatasetsApiUrl) as HttpWebRequest;
request.KeepAlive = true;
request.Method = "GET";
request.ContentLength = 0;
request.ContentType = "application/json";

request.Headers.Add("Authorization", $"Bearer {accessToken}");

using (HttpWebResponse httpResponse = request.GetResponse() as System.Net.HttpWebResponse)
{
    using (StreamReader reader = new System.IO.StreamReader(httpResponse.GetResponseStream()))
    {
        string responseContent = reader.ReadToEnd();
        var responseJson = JsonConvert.DeserializeObject<dynamic>(responseContent);
        return responseJson["embedUrl"];
    }
}

Inilah bagian yang sulit. Anda memerlukan klien JavaScript Power BI untuk menggunakan url yang Anda dapatkan dengan kode di atas. Cara termudah adalah mendapatkan ReportLoader.html , ReportLoader.js dan powerbi.js dari sampel WPF di atas. Anda dapat membaca detail tentang file-file ini di sini, tetapi secara umum file HTML berisi <div> . yang kosong , tempat laporan akan dimuat, dan Anda memanggil kode di ReportLoader.js , melewati beberapa parameter (laporan mana, token akses, jenis token akses, dll.), dan itu akan memanggil klien JavaScript Power BI untuk melakukan tugas berat untuk Anda.

Parameter, yang akan Anda berikan ke kode loader, dengan kode seperti ini:

var parameters = new object[] { embedUrl, accessToken, reportId, "report" /* or "dashboard" or "tile"*/, 0 /* 0 - AAD, 1 - Embed */, string.Empty };
webBrowser.Document.InvokeScript("LoadEmbeddedObject", parameters);

webBrowser adalah komponen browser web, di mana Anda memuat ReportLoader.html . embedUrl dan accessToken adalah nilai yang Anda peroleh sebelumnya, ID laporan, jenis elemen sematan (apakah itu laporan, ubin atau dasbor), jenis token akses (apakah itu AAD, yang kami gunakan dalam kasus ini, atau sematkan) dan untuk saat ini pergi yang terakhir kosong (untuk detail lebih lanjut tentang itu, lihat Menyematkan Detail Konfigurasi). Perbedaan antara AAD dan Embed token adalah bahwa token yang disematkan valid untuk elemen tertentu (misalnya laporan), sedangkan token AAD dapat digunakan untuk mengautentikasi diri Anda sendiri dalam banyak panggilan berbeda. Ini berarti lebih aman menggunakan token sematan, karena token tersebut hanya dapat digunakan untuk menyematkan laporan khusus ini dan tidak dapat digunakan untuk melakukan panggilan REST API lainnya. Perlu diingat, bahwa token akses ini terlihat di sisi klien (ada dalam kode JavaScript). Jika Anda ingin menggunakan token embed, gunakan token AAD di sisi server untuk memanggil GenerateTokenInGroup, tetapi ini memerlukan kapasitas khusus yang ditetapkan untuk ruang kerja ini (yaitu Power BI Premium atau Power BI Embedded) dan tanpa kapasitas, akun Pro Anda terbatas jumlah token, yang hanya dapat Anda gunakan untuk pengembangan.

Setelah itu, laporan Anda akan berhasil dimuat ke webBrowser .

Saya juga akan merekomendasikan Anda untuk menonton video ini Menggunakan Otentikasi Khusus Aplikasi dengan Penyematan Power BI dengan Ted Pattison.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa menggabungkan beberapa baris ke dalam daftar yang dipisahkan koma di SQL Server 2005?

  2. Bagaimana Saya Menyisipkan Byte[] Ke dalam Kolom VARBINARY SQL Server

  3. Milidetik di DateTime saya berubah saat disimpan di SQL Server

  4. Cara menghasilkan rentang tanggal di SQL Server

  5. Cara tercepat untuk memperbarui 120 Juta catatan