Итак, проблема заключается в следующем: у нас есть несколько арендаторов, несколько баз данных, размещенных на разных хостах Azure sql с разными рабочими областями для каждого арендатора. Поскольку количество арендаторов довольно велико, создать отчет для каждого арендатора, а затем загрузить его в соответствующую рабочую область приложения не очень удобно. Поэтому мы попытались автоматизировать весь процесс, основываясь на некоторых конфигах. (У нас один и тот же отчет для каждого тенанта, только источник данных разный). Нам удалось загрузить тот же отчет в соответствующее рабочее пространство приложения, но мы не можем программно обновить ConnectionString. Кажется, это не удается, когда мы пытаемся изменить источник данных. Загруженный файл сохраняет исходную ConnectionString. Также отчет настраивается с помощью DirectQuery.
Образец кода:
var import = await pbiClient.Imports.PostImportWithFileAsyncInGroup(GroupId, fileStream, importName, nameConflict);//Name conflicts : Abort, Ignore, Overwrite
var datasets = await pbiClient.Datasets.GetDatasetsInGroupAsync(GroupId);
var latestDataset = datasets.Value.FirstOrDefault(x => x.Name == importName);
var reports = await pbiClient.Reports.GetReportsInGroupAsync(GroupId);
var latestReport = reports.Value.FirstOrDefault(x => x.Name == importName);
var connectionDetails = new ConnectionDetails($"Data Source={DbHost} ;Initial Catalog={DbName};Encrypt=True;TrustServerCertificate=True;PersistSecurityInfo=True;User Id={DbPowerBIUser};Password={DbPowerBIUser};MultipleActiveResultSets=true;");
var resp = await pbiClient.Datasets.SetAllDatasetConnectionsInGroupWithHttpMessagesAsync(GroupId, latestDataset.Id, connectionDetails);