Обновление модели данных с Power BI на Tabular стало намного сложнее
Подготовка модели Power BI к обновлению до Tabular
Если вы не обновляете службы анализа на SQL Server 2019, скорее всего, вам придется пересмотреть свой код DAX и внести некоторые изменения, поскольку DAX в других версиях SQL Server отличается от Power BI. Мы обновляли их до AS на SQL Server 2016, были некоторые команды, которые пришлось вручную редактировать из файла JSON. Если у вас есть какие-либо новые команды DAX, удалите их из своей модели Power BI, чтобы вручную не редактировать файл JSON, чтобы удалить их, когда новые команды помечены как ошибки. Убедитесь, что ваша модель Power BI не включает такие команды, как SELECTEDVALUE, GENERATESERIES, а также все автоматически сгенерированные иерархии дат. После того как файл рабочего стола Power BI будет очищен, оставьте его включенным, так как он понадобится для следующего шага.
Подключитесь к своей модели Power BI в Analysis Services
Power BI запускает версию служб Analysis Services tabular, и как только вы выясните, какая версия работает, вы можете подключиться к ней. Откройте диспетчер задач и посмотрите на Power BI Desktop на вкладке « Processes», нажав стрелку справа, чтобы увидеть все запущенные процессы. Из рисунка видно, что запущено 19 процессов с одним загруженным файлом Power BI. Щелкните правой кнопкой мыши экземпляр служб аналитики Microsoft SQL Server, запущенных в Power BI Desktop, и выберите Go to Details. Эта команда приведет вас к таблице сведений в диспетчере задач и выделит, какую версию и какой PID подключить в службах аналитики на вашем компьютере. Вы заметите, что наш PID 3992. Используя этот номер, мы перешли в командную строку и набрали
Netstat -anop TCP | findstr 3392.
Эта команда возвращает адрес, который нам нужен для доступа к модели Power BI
Это оно. Теперь мы можем посмотреть на нашу модель Power BI в службах аналитики SQL Server из среды Management Studio. Она выглядит так:
Эта модель непригодна для использования, и вам придется внести в нее некоторые изменения, чтобы она работала. Первый шаг - исправить соединения, затем отредактировать JSON. Щелкните правой кнопкой мыши по соединению и выберите свойства. Нажмите на кнопку эллипса рядом со строкой соединения, и вы получите это сообщение об ошибке.
Как только вы нажмете «ОК», вы можете отредактировать соединение так, чтобы оно работало.
Все наши таблицы Power BI подключались к представлениям в SQL Server, что является наилучшей практикой, поскольку позволяет выбирать только те поля, которые вам нужны, и дает возможность сортировать данные по мере их чтения, что может улучшить сжатия. Мы изменили провайдер на SQL Server и установили соединение. Как только соединения будут изменены, вам нужно будет создать скрипт XMLA и отредактировать его. Щелкните правой кнопкой мыши на базе данных с именем GUID и выберите Script-> Script Database As-> Create To-> File. Дайте файлу имя, которое вы будете использовать после подключения к экземпляру служб аналитики.
Редактирование файла XMLA
Откройте файл XMLA, который вы создали в Analysis Sr. Первое, что вам нужно исправить, это уровень совместимости. Power BI задает значение 1465. 1400 для Azure AS, SQL Server 2017 и 2016 используют 1200, поэтому мы отредактировали скрипт, чтобы изменить значение 1200. Мы также изменили имя базы данных на «SampleAS» из идентификатора GUID, который был назначен. Затем мы выполнили скрипт и получили свою первую ошибку:
Executing the query … The JSON DDL request failed with the following error: Unrecognized JSON property: variations. Check path ‘model.tables[0].columns[11].variations’, line 362, position 30.. Run complete |
Мы набрали Ctrl G и ввели номер строки, чтобы исправить первую ошибку, которая была в этой строке:
“formatString”: “dddd\\, mmmm d\\, yyyy”,
Мы удалили строку и запустил запрос опять. На этот раз мы получили такую ошибку:
Executing the query … The JSON DDL request failed with the following error: Unrecognized JSON property: variations. Check path ‘model.tables[0].columns[11].variations’, line 361, position 30.. Run complete |
Строка 361 начинается с вариациями слова. Раздел содержится в квадратных скобках [].
“variations”: [ { “name”: “Variation”, “relationship”: “dc6b309e-0967-4eea-8e3f-7a308661dca5”, “defaultHierarchy”: { “table”: “LocalDateTable_c6cfa169-57d3-4da3-bcbc-21b677dde835”, “hierarchy”: “Date Hierarchy” }, “isDefault”: true } ], |
Иерархии дат в AS не поддерживаются одинаково, поэтому нам нужно отредактировать XMLA, чтобы удалить этот раздел. Нам нужно будет повторить этот шаг для каждой автоматически сгенерированной иерархии данных, поэтому рекомендуем вам удалить их, поскольку это сэкономит вам много времени. Другая строка, которая вызвала ошибку, была этой строкой.
«query»: «SELECT * FROM [Rates]»,
Наш вид не называется Rates. Он называется vw_PaidRates. Таблица в модели Power BI называется Rates. Нет таблицы или представления, называемых Rates, поэтому нам нужно было изменить Rates на имя представления vw_PaidRates. Мы повторили это для каждой таблицы в файле XMLA. Процесс редактирования занял более часа, чтобы устранить весь код, который не будет работать. После этого получилось создать проект в Visual Studio, используя опцию Import From Server(Tabular).
Процесс обновления с Power BI до Tabular
Процесс был утомительным и заставил долго ждать 15-минутного преобразования Azure AS. Метод, изложенный здесь, не поддерживается Microsoft, поэтому вы должны заставить его работать. Предварительное исправление модели Power BI помогает, а также помогает, когда отформатировано мало текста, но есть некоторые вещи, например исправления запросов, которые вам просто нужно сделать самостоятельно. Конечно, процесс преобразования намного проще, если вы используете SQL Server 2019, поскольку эта версия служб Analysis Services в основном совместима с версией, созданной Power BI, но сейчас пока не так много людей использует его.