Hizmet sorumlularıyla Premium çalışma alanı ve anlam modeli görevlerini otomatikleştirme

Hizmet sorumluları, katılımsız kaynak ve hizmet düzeyi işlemleri gerçekleştirmek için kiracınızda oluşturduğunuz bir Microsoft Entra Id uygulama kaydıdır . Bunlar uygulama adı, uygulama kimliği, kiracı kimliği ve parola için istemci gizli dizisi veya sertifikası olan benzersiz bir kullanıcı kimliği türüdür.

Power BI Premium, Power BI Embedded ile aynı hizmet sorumlusu işlevini kullanır. Daha fazla bilgi edinmek için bkz . Hizmet sorumlularıyla Power BI içeriği ekleme.

Power BI Premium'da hizmet sorumlularını XMLA (XML Analizi) uç noktasıyla kullanarak çalışma alanlarını sağlama, modelleri dağıtma ve anlam modeli yenileme gibi anlamsal model yönetim görevlerini otomatikleştirebilirsiniz:

  • PowerShell.
  • Azure Otomasyonu.
  • Azure Logic Apps.
  • Özel istemci uygulamaları.

Hizmet sorumlularını kullanarak yalnızca yeni çalışma alanları XMLA uç noktası bağlantılarını destekler. Klasik çalışma alanları desteklenmez. Hizmet sorumlusu yalnızca atandığı çalışma alanlarında görevleri gerçekleştirmek için gereken izinlere sahiptir. İzinler, normal UPN (kullanıcı asıl adı) hesapları gibi çalışma alanı erişimi aracılığıyla atanır.

Yazma işlemlerini gerçekleştirmek için kapasitenin Anlam modelleri iş yükünün okuma-yazma işlemleri için XMLA uç noktasının etkinleştirilmiş olması gerekir. Power BI Desktop'tan yayımlanan anlam modellerinde gelişmiş meta veri biçimi özelliği etkinleştirilmelidir.

Hizmet sorumlusu oluşturma

Hizmet sorumluları, Azure portalında uygulama kaydı olarak veya PowerShell kullanılarak oluşturulur. Hizmet sorumlunuzu oluştururken uygulama adını, uygulama (istemci) kimliğini, dizin (kiracı) kimliğini ve istemci gizli dizisini ayrı ayrı kopyalayıp kaydettiğinizden emin olun. Hizmet sorumlusu oluşturma adımları için bkz:

Microsoft Entra güvenlik grubu oluşturma

Varsayılan olarak, hizmet sorumlularının etkinleştirildiği tüm kiracı ayarlarına erişimi vardır. Yönetici ayarlarınıza bağlı olarak, erişim belirli güvenlik gruplarını veya kuruluşun tamamını içerebilir.

Hizmet sorumlusu erişimini belirli kiracı ayarlarıyla kısıtlamak için, belirli güvenlik gruplarına erişime izin vekleyebilirsiniz. Alternatif olarak, hizmet sorumluları için ayrılmış bir güvenlik grubu oluşturabilir ve bunu istenen kiracı ayarlarından hariç tutabilirsiniz. Güvenlik grubu oluşturmak ve hizmet sorumlusu eklemek için bkz . Microsoft Entra Id kullanarak temel grup oluşturma ve üye ekleme.

Hizmet sorumlularını etkinleştirme

Power BI'da hizmet sorumlularını kullanmaya başlayabilmeniz için bir yöneticinin Power BI Yönetici portalında hizmet sorumlusu erişimini etkinleştirmesi gerekir.

  1. Power BI Yönetici portalına gidin ve Kiracı ayarları'nı seçin.
  2. Geliştirici ayarları'na gidin ve hizmet sorumlularının Power BI API'lerini kullanmasına izin ver'i genişletin.
  3. Etkin'i seçin.
  4. Bir güvenlik grubuna izin uygulamak için Belirli güvenlik grupları (Önerilen) öğesini seçin.
  5. Grup adını girin.
  6. Uygula’yı seçin.

Kiracı ayarlarının seçili olduğu Yönetici portalını gösteren ekran görüntüsü. Hizmet sorumlularının Power BI API'lerini kullanmasına izin ver seçeneği etkin vurgulanmış şekilde genişletilir.

Çalışma alanı erişimi

Hizmet sorumlunuzun Premium çalışma alanı ve anlam modeli işlemlerini gerçekleştirmek için gerekli izinlere sahip olması için hizmet sorumlusunu çalışma alanı Üyesi veya Yönetici olarak eklemeniz gerekir. Power BI hizmeti çalışma alanı erişiminin kullanılması burada açıklanmıştır, ancak Grup Kullanıcısı Ekle REST API'sini de kullanabilirsiniz.

  1. Çalışma alanının Power BI hizmeti Diğer>Çalışma Alanı erişimi'ni seçin.

    Çalışma alanlarının listesini gösteren ekran görüntüsü. Daha fazla simge ve çalışma alanı erişimi vurgulanır.

  2. Uygulama adına göre arama yapın ve hizmet sorumlusunu çalışma alanına Yönetici veya Üye olarak ekleyin.

    Hizmet asıl adını gösteren erişim iletişim kutusunu gösteren ekran görüntüsü. Yönetici seçilir.

XMLA uç noktası için Bağlan ion dizeleri

Hizmet sorumlusu oluşturduktan, kiracınız için hizmet sorumlularını etkinleştirdikten ve hizmet sorumlusunu çalışma alanı erişimine ekledikten sonra, xmla uç noktasıyla bağlantı dizesi'lerde kullanıcı kimliği olarak kullanın. Fark, ve password parametreleri yerine user id uygulama kimliğini, kiracı kimliğini ve uygulama gizli dizisini belirtmenizdir.

Data Source=powerbi://api.powerbi.com/v1.0/myorg/<workspace name>; Initial Catalog=<dataset name>;User ID=app:<appId>@<tenantId>;Password=<app_secret>;

PowerShell

Aşağıdaki örnek kodu çalıştırmak için bir PowerShell oturumu açın.

SQLServer modülünü kullanma

Aşağıdaki örnekte, AppId, TenantIdve AppSecret anlamsal model yenileme işleminin kimliğini doğrulamak için kullanılır:

Param (
        [Parameter(Mandatory=$true)] [String] $AppId,
        [Parameter(Mandatory=$true)] [String] $TenantId,
        [Parameter(Mandatory=$true)] [String] $AppSecret
       )
$PWord = ConvertTo-SecureString -String $AppSecret -AsPlainText -Force

$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $AppId, $PWord

Invoke-ProcessTable -Server "powerbi://api.powerbi.com/v1.0/myorg/myworkspace" -TableName "mytable" -DatabaseName "mydataset" -RefreshType "Full" -ServicePrincipal -ApplicationId $AppId -TenantId $TenantId -Credential $Credential

Çözümleme Yönetimi Nesneleri (AMO) ve ADOMD.NET

İstemci uygulamalarına ve web uygulamalarına bağlandığınızda, aşağıdaki söz dizimini kullanarak bağlantı dizesi'lerdeki hizmet sorumlularını desteklemek için NuGet'ten AMO ve ADOMD istemci kitaplıkları sürüm 15.1.42.26 (Haziran 2020) ve üzeri yüklenebilir paketleri kullanabilirsiniz: app:AppID ve password veya cert:thumbprint.

Aşağıdaki örnekte ve password değerleri model appID veritabanı yenileme işlemi gerçekleştirmek için kullanılır:

string appId = "xxx";
string authKey = "yyy";
string connString = $"Provider=MSOLAP;Data source=powerbi://api.powerbi.com/v1.0/<tenant>/<workspacename>;Initial catalog=<datasetname>;User ID=app:{appId};Password={authKey};";
Server server = new Server();
server.Connect(connString);
Database db = server.Databases.FindByName("adventureworks");
Table tbl = db.Model.Tables.Find("DimDate");
tbl.RequestRefresh(RefreshType.Full);
db.Model.SaveChanges();