我有一个登录 Web 应用程序的用户名。
我正在使用 HTML、CSS、JavaScript 和 ASP.NET 网络表单来运行带有 Power BI 嵌入式报表的 Web 应用程序。
我正在尝试编写代码以根据登录到 Power BI 嵌入式配置的用户传递服务器名称和数据库名称。
如何将服务器名称和数据库名称传递给 Power BI Embedded 配置?
尝试使用以下内容使用导入数据集测试应用程序流,但 Power BI 报告未加载到 HTML div 元素中。它在嵌入 div 中给出“Power BI 加载徽标”,然后显示消息“Power BI 内容不可用”
申请流程:
Power BI 工作区有一个报表和两个数据集
以下是.NET中的Token生成代码
// Generate an embed token and populate embed variables
using (var client = new PowerBIClient(new Uri(Configurations.ApiUrl), Authentication.GetTokenCredentials()))
//using (var client = new PowerBIClient(new Uri(Configurations.ApiUrl), Authentication.m_tokenCredentials))
{
var report = client.Reports.GetReportInGroup(new Guid(Configurations.WorkspaceId), new Guid(ddlReport.SelectedValue));
var rls = new EffectiveIdentity(username: appLoginUserName, new List<string> { userDatasetId.ToString() });
// Effective Identity
var rolesList = new List<string>();
rolesList.Add("Tenant");
rls.Roles = rolesList;
// Create list of datasets
var v2DatasetID = new List<Guid>();
v2DatasetID.Add(userDatasetId);
// Create list of Effective Identities
var v2rls = new List<EffectiveIdentity>();
v2rls.Add(rls);
// Create a request for getting Embed token
// This method works only with new Power BI V2 workspace experience
var tokenRequest = new GenerateTokenRequestV2(
reports: new List<GenerateTokenRequestV2Report>() { new GenerateTokenRequestV2Report(report.Id) },
datasets: v2DatasetID.Select(datasetId => new GenerateTokenRequestV2Dataset(datasetId.ToString())).ToList(),
identities: v2rls,
targetWorkspaces: null
);
// Generate Embed token
var getToken = client.EmbedToken.GenerateToken(tokenRequest);
// Populate embed variables (to be passed client-side)
//embedToken = tokenResponse.Token;
embedToken = getToken.ToString();
embedUrl = report.EmbedUrl;
reportId = report.Id;
}
<script>
// Read embed token
var embedToken = "<% =this.embedToken %>";
// Read embed URL
var embedUrl = "<% = this.embedUrl %>";
// Read report Id
var reportId = "<% = this.reportId %>";
// Read dataset Id
var userDatasetId = "<% = this.userDatasetId %>";
// Get models (models contains enums)
var models = window['powerbi-client'].models;
// Embed configuration is used to describe what and how to embed
// This object is used when calling powerbi.embed
// It can also includes settings and options such as filters
var config = {
type: 'report',
tokenType: models.TokenType.Embed,
accessToken: embedToken,
embedUrl: embedUrl,
id: reportId,
datasetId: userDatasetId, // The dataset id that you want the report to use
settings: {
filterPaneEnabled: true,
navContentPaneEnabled: true,
extensions: [
{
command: {
name: "cmdShowValue",
title: "Show Value in MessageBox",
selector: {
$schema: "http://powerbi.com/product/schema#visualSelector",
visualName: "VisualContainer7" // Sales and Avg Price by Month visual
},
extend: {
visualContextMenu: {
title: "Show Value in MessageBox"
}
}
}
}
]
}
};
// Embed the report within the div element
var report = powerbi.embed(embedDiv, config);
</script>
答案 0 :(得分:0)
这是不可能的。这些是报告范围设置,您要询问同时查看同一份报告的两个不同用户如何连接到不同的数据源。您必须部署尽可能多的报告并选择要嵌入的报告,或者使用所有数据源构建一份报告,然后根据当前登录的使用情况filter the data。
否则,您的问题的直接答案是rebind the report 或change the datasource of the dataset。