Node js App与Power Bi Rest Api的集成

编程入门 行业动态 更新时间:2024-10-24 18:25:46
本文介绍了Node js App与Power Bi Rest Api的集成的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

有没有一种方法可以在node js中使用power bi rest API,我观看了视频,Ran Breuer和Arina Hantsis在此处演示了该演示,通过Power BI Embedded进行设置和入门我想实现相同的目标,但是要使用Node js,我们的开发环境中我们不使用c#。 我找到了Node SDK,但是它说我们不再支持Node SDK, Node SDK

Is there a way using power bi rest API in node js, I watched video ,Ran Breuer and Arina Hantsis were showing the demo here,Setting up and Getting Started with Power BI Embedded I want to achieve same but using node js, in our development environment we do not use c#. I found the Node SDK but it saying we no longer support node SDK,Node SDK

为了使用power bi Rest API,我是否必须将开发结构从Node js更改为c#!

Do I have to change development structure from Node js to c# in order to use power bi Rest API!!

推荐答案

如果您要实现相同的目标,Ran Breuer和Arina Hantsis会在视频中进行演示!

If you want to achieve same, what Ran Breuer and Arina Hantsis demonstrate in there video!

您可以使用以下代码...

you can use these codes...

在阅读了文档之后,我想出了这个解决方案,我花了5天的时间才弄清楚,无论如何我都在这里发布,这样每个人都可以轻松访问代码。

after reading the documentation, I come up with this solution it took me 5 days to figure out, anyway I am posting here so everyone can have easy access to codes.

** AppOwnData Power bi嵌入式报告**

**AppOwnData Power bi embedded reports **

Controller.js

Controller.js

const request = require('request'); const getAccessToken = function () { return new Promise(function (resolve, reject) { const url = 'login.microsoftonline/common/oauth2/token'; const username = ''; // Username of PowerBI "pro" account - stored in config const password = ''; // Password of PowerBI "pro" account - stored in config const clientId = ''; // Applicaton ID of app registered via Azure Active Directory - stored in config const headers = { 'Content-Type': 'application/x-www-form-urlencoded' }; const formData = { grant_type: 'password', client_id: clientId, resource: 'analysis.windows/powerbi/api', scope: 'openid', username: username, password: password }; request.post({ url: url, form: formData, headers: headers }, function (err, result, body) { if (err) return reject(err); const bodyObj = JSON.parse(body); resolve(bodyObj.access_token); }); }); }; const getReportEmbedToken = function (accessToken, groupId, reportId) { return new Promise(function (resolve, reject) { const url = 'api.powerbi/v1.0/myorg/groups/' + groupId + '/reports/' + reportId + '/GenerateToken'; const headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': 'Bearer ' + accessToken }; const formData = { 'accessLevel': 'view' }; request.post({ url: url, form: formData, headers: headers }, function (err, result, body) { if (err) return reject(err); const bodyObj = JSON.parse(body); resolve(bodyObj.token); }); }); }; module.exports = { embedReport: function (req, res) { getAccessToken().then(function (accessToken) { getReportEmbedToken(accessToken, req.params.groupId, req.params.reportId).then(function (embedToken) { res.render('index', { reportId: req.params.dashboardId, embedToken, embedUrl: 'app.powerbi/reportEmbed?reportId=' + req.params.reportId + '&groupId=' + req.params.groupId }); }).catch(function (err) { res.send(500, err); }); }).catch(function (err) { res.send(500, err); }); } };

您的路由器index.js

Your router index.js

const express = require('express'), router = express.Router(), mainCtrl = require('../controllers/MainController'); router.get('/report/:groupId/:reportId', mainCtrl.embedReport); module.exports = router;

index.ejs或任何您喜欢的东西

index.ejs or what ever you like

<!DOCTYPE html> <html> <head> <title>Node.js PowerBI Embed</title> <link rel="stylesheet" href="/bootstrap/dist/css/bootstrap.min.css" /> <style> html, body { height: 100%; } .fill { min-height: 100%; height: 100%; box-sizing: border-box; } #reportContainer { height: 100%; min-height: 100%; display: block; } </style> </head> <body> <div class="container-fluid fill"> <div id="reportContainer"></div> </div> <script src="/jquery/dist/jquery.min.js"></script> <script src="/bootstrap/dist/js/bootstrap.min.js"></script> <script src="/powerbi-client/dist/powerbi.js"></script> <script> const models = window['powerbi-client'].models; const config = { type: 'report', tokenType: models.TokenType.Embed, accessToken: '<%- embedToken %>', embedUrl: '<%- embedUrl %>', id: '<%- reportId %>' }; // Get a reference to the embedded dashboard HTML element const reportContainer = $('#reportContainer')[0]; // Embed the dashboard and display it within the div container. powerbi.embed(reportContainer, config); </script> </body> </html>

最后享受

localhost:4000 /在此处报告/输入您的组ID /在此处报告您的报告

localhost:4000/report/put your group id here / put you report id here

更多推荐

Node js App与Power Bi Rest Api的集成

本文发布于:2023-10-30 22:32:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1544199.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:App   js   Node   Power   Api

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!