Example #1
0
        private static void Test_Import(PBIAPIClient pbic)
        {
            PBIImport import = pbic.ImportPBIX("myDataset", @"D:\Desktop\myDataset.pbix", PBIImportConflictHandlerMode.CreateOrOverwrite);

            import = import.GetState();

            int i = 0;
        }
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            AzureHttpClient ahc            = new AzureHttpClient(request.DataStore.GetJson("PBIToken", "access_token"));
            string          pbiClusterUri  = request.DataStore.GetValue("PBIClusterUri");
            string          pbiWorkspaceId = request.DataStore.GetValue("PBIWorkspaceId");
            string          pbixLocation   = request.DataStore.GetValue("PBIXLocation");

            pbiWorkspaceId = string.IsNullOrEmpty(pbiWorkspaceId) ? string.Empty : "groups/" + pbiWorkspaceId + "/";

            byte[] file = null;
            using (WebClient wc = new WebClient())
            {
                file = wc.DownloadData(pbixLocation);
            }

            string    filename  = request.Info.AppName + RandomGenerator.GetDateStamp() + ".pbix";
            PBIImport pbiImport = JsonUtility.Deserialize <PBIImport>(await ahc.Request(pbiClusterUri + string.Format(PBI_IMPORT_URI, pbiWorkspaceId, filename), file, filename));

            PBIImportStatus pbiImportStatus    = null;
            int             attempts           = 0;
            bool            isImportInProgress = true;

            while (isImportInProgress && attempts < MAXIMUM_IMPORT_STATUS_ATTEMPTS)
            {
                pbiImportStatus = await ahc.Request <PBIImportStatus>(HttpMethod.Get, pbiClusterUri + string.Format(PBI_IMPORT_STATUS_URI, pbiWorkspaceId, pbiImport.Id));

                switch (pbiImportStatus.ImportState)
                {
                case "Publishing":
                    Thread.Sleep(new TimeSpan(0, 0, WAIT_IMPORT_STATUS));
                    break;

                case "Succeeded":
                    isImportInProgress = false;
                    break;

                default:
                    isImportInProgress = false;
                    break;
                }
                attempts++;
            }

            string reportUrl = pbiImportStatus == null || pbiImportStatus.Reports == null || pbiImportStatus.Reports.Count == 0 ? string.Empty : pbiImportStatus.Reports[0].WebUrl;

            string pbixDatasetId = pbiImportStatus == null || pbiImportStatus.Datasets == null || pbiImportStatus.Datasets.Count == 0 ? string.Empty : pbiImportStatus.Datasets[0].Id;

            request.DataStore.AddToDataStore("PBIXDatasetId", pbixDatasetId, DataStoreType.Public);

            return(new ActionResponse(ActionStatus.Success, reportUrl));
        }