Там в шаблон, который вы можете использовать, чтобы сделать эту работу достаточно хорошо. Когда вы переходите к просмотру запросов в Power BI Desktop, при щелчке правой кнопкой мыши по запросу существует опция «ссылки». Это означает, что создается новый запрос, в котором исходное состояние является результатом запрошенного запроса. Это очень мощно!
Итак, что вы можете сделать, это ваш первый запрос будет что-то вроде: пусть Source = OData.Feed («feedname») в источнике
Затем построить все другие запросы, используя этот один запрос. Это позволит вам быстро изменить источник, не нарушая никакой другой логики.
Вы можете принять это во все более сумасшедшие экстенты по своему желанию. Например, в течение некоторого времени я получал экспортированные файлы .CSV по электронной почте из одной из служб, которые я использовал. Чтобы «обновить» мой отчет, мне нужно будет изменить свой отчет, чтобы извлечь данные из нового файла (боль). Итак, что я сделал, я сделал набор запросов, которые 1) перечисляли файлы в данной папке, 2) выбирали самый последний файл, 3) загружали данные из этого последнего файла. Пока схема файла не изменилась, все отлично поработало!
Первый запрос:
let
FilesList = Folder.Files("C:\Users\username\Report Data"),
c1 = Table.TransformColumnTypes(FilesList ,{{"Date created", type datetime}}),
c2 = Table.SelectRows(c1, each Text.Contains([Extension], ".csv")),
c3 = Table.Sort(c2,{{"Date created", Order.Descending}}),
LatestCSVFileTable = Table.FirstN(c3,1),
AddedFileName = Table.AddColumn(LatestCSVFileTable , "File Path", each [Folder Path] & [Name]),
LatestCSVFileNameAsTable = Table.RemoveColumns(AddedFileName,{"Content", "Name", "Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path"}),
FileNameToLoad = Record.Field(Table.First(LatestCSVFileNameAsTable), "File Path"),
//If you're lucky, you can just use Csv.Document(File.Contents("C:\Examples\YourFileName.csv"),null,",",null,1252)
//I wasn't so I needed some more complicated logic
FileContents = File.Contents(FileNameToLoad),
Source = Table.FromColumns({Lines.FromBinary(FileContents ,null,null,1252)}),
in
Source
Второй запрос
let
Source = #"First Query's Name"
// continue your logic here
in
Source
Этот подход отлично работает. Обычно я помещаю первый запрос в папку, которую я называю «RAW», и второй запрос в папке, которую я называю «Данные», поэтому я знаю, какие из них нужно редактировать и которые оставить в покое.
В этот момент это невозможно. Если вы удалите источник данных или соединение будет разорвано, асоциальные диаграммы исчезнут. Активное предложение для команды Power BI [здесь] (https://support.powerbi.com/forums/265200-power-bi/suggestions/8471227-allow-custom-datasource-report-dashboard-templates). Возможно, мы скоро увидим эту функцию в ближайшем обновлении. –
спасибо @alejandrozuleta, также хорошо знать, что был форум с идеей :) – GaGa