示例#1
0
        public static void SimulatePowerBIReportUsage(ICredentials credentials, PowerBIReport report)
        {
            var modelId = GetModelsAndExplorations(credentials, report);

            GetConceptualSchema(credentials, report, modelId);
            RunQuerySet(credentials, report, modelId);
        }
示例#2
0
        private static List <JObject> GetQueryPayload(PowerBIReport report, string modelId)
        {
            List <JObject> queries = new List <JObject>();

            foreach (var file in Directory.GetFiles(string.Format(SharedConstants.RuntimeResourcesFolder + @"\PowerBI\Queries\{0}\", report.Name)))
            {
                var query = JObject.Parse(File.ReadAllText(file));
                query["modelId"] = modelId;
                queries.Add(query);
            }

            return(queries);
        }
示例#3
0
        private static void GetConceptualSchema(ICredentials credentials, PowerBIReport report, string modelId)
        {
            WebRequest request = HttpWebRequest.Create(string.Format(_endpoint + _conceptualSchemaEndpoint, report.Id));

            request.Method = WebRequestMethods.Http.Post;
            request.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested;
            request.Credentials         = credentials;
            request.ContentType         = "application/json";

            var payload = JObject.Parse(string.Format("{{ modelIds: [ {0} ] }}", modelId));

            using (var sw = new StreamWriter(request.GetRequestStream()))
            {
                sw.Write(payload.ToString());

                sw.Flush();
                sw.Close();
            }

            WebResponse resp2 = request.GetResponse();
        }
示例#4
0
        private static string GetModelsAndExplorations(ICredentials credentials, PowerBIReport report)
        {
            WebRequest req = HttpWebRequest.Create(string.Format(_endpoint + _modelsAndExplorationEndpoint, report.Id));

            req.Method = WebRequestMethods.Http.Get;

            req.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested;
            req.Credentials         = credentials;
            WebResponse response = req.GetResponse();

            string responseBody = "";

            using (var sr = new StreamReader(response.GetResponseStream()))
            {
                responseBody = sr.ReadToEnd();
            }

            var json = JObject.Parse(responseBody);

            return(json["models"][0]["id"].Value <string>());
        }
示例#5
0
        public void UsePowerBIReports()
        {
            string report = ContentManager.GetNextCatalogItem("PowerBIReport");

            var context = this.ContentManager.PortalAccessorV1.CreateContext();

            ICredentials executionCredentails = CredentialCache.DefaultNetworkCredentials;

            if (!String.IsNullOrEmpty(ReportServerInformation.DefaultInformation.ExecutionAccount))
            {
                CredentialCache myCache         = new CredentialCache();
                Uri             reportServerUri = new Uri(ReportServerInformation.DefaultInformation.ReportServerUrl);
                myCache.Add(new Uri(reportServerUri.GetLeftPart(UriPartial.Authority)), "NTLM",
                            new NetworkCredential(ReportServerInformation.DefaultInformation.ExecutionAccount,
                                                  ReportServerInformation.DefaultInformation.ExecutionAccountPwd));
                executionCredentails = myCache;
            }

            PowerBIReport pbiReport = context.CatalogItemByPath(report).GetValue() as PowerBIReport;

            PowerBIClient.SimulatePowerBIReportUsage(executionCredentails, pbiReport);
        }
示例#6
0
        private static void RunQuerySet(ICredentials credentials, PowerBIReport report, string modelId)
        {
            var payloads = GetQueryPayload(report, modelId);

            foreach (var payload in payloads)
            {
                WebRequest request = HttpWebRequest.Create(string.Format(_endpoint + _queryDataEndpoint, report.Id));

                request.Method = WebRequestMethods.Http.Post;
                request.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested;
                request.Credentials         = credentials;
                request.ContentType         = "application/json";

                using (var sw = new StreamWriter(request.GetRequestStream()))
                {
                    sw.Write(payload.ToString());

                    sw.Flush();
                    sw.Close();
                }

                WebResponse response = request.GetResponse();
            }
        }