Power Query — это инструмент ETL , созданный корпорацией Microsoft для извлечения , загрузки и преобразования данных , который используется для извлечения данных из источников, их обработки и загрузки в одну или несколько целевых систем. Power Query доступен в нескольких вариантах в рамках платформы Microsoft Power Platform и используется для бизнес-аналитики на платформах с полным или частичным самообслуживанием. Он встречается в таком программном обеспечении, как Excel , Power BI , Analysis Services , Dataverse , [1] Power Apps , Azure Data Factory , SSIS , Dynamics 365 , а также в облачных службах, таких как Microsoft Dataflows, [2] включая Power BI Dataflow, используемый с онлайн-службой Power BI, или несколько более общую версию Microsoft Dataflow, используемую с Power Automate .
ETL тесно связан с моделированием данных [3] , и для преобразования Power Query можно использовать для разработки логической модели данных в тех случаях, когда данные еще не имеют таковой или когда необходимо дополнительно разработать модель данных .
Power Query впервые был включен в качестве дополнительной функции импорта в Excel наряду с PowerPivot (используемой для предоставления модели данных для сводных таблиц PivotTables и т. д.) в Excel 2010 и 2013. В Excel 2016 функция была включена в стандартную версию Excel и на короткое время переименована в Get & Transform , но с тех пор снова получила название Power Query.
Power Query построен на том, что тогда [ когда? ] было новым языком запросов под названием M. Это язык mashup (отсюда и буква M), разработанный для создания запросов, которые смешивают данные. Он похож на язык программирования F Sharp , и, по словам Microsoft, это «в основном чистый, высокопорядковый, динамически типизированный, частично ленивый, функциональный язык». Язык M чувствителен к регистру.
Большая часть взаимодействия пользователя с Power Query может осуществляться через графические пользовательские интерфейсы с мастерами , и это может использоваться для многих общих или базовых задач. Также возможно использовать расширенный режим редактирования, в котором разработчик может писать на языке формул M; это дает большую выразительную силу, больше возможностей, а также может использоваться для изменения кода, сгенерированного графическими мастерами.
Пользовательские запросы обычно пишутся с помощью выражения let верхнего уровня . Выражение let содержит список именованных ссылок (переменных), разделенных запятыми, и выражение in , которое также вычисляет выражение let . Выражение in может ссылаться на переменные, а переменные могут ссылаться друг на друга. Допускается прямая и обратная ссылка, а также допускается самоссылка с помощью префикса @ у переменной. Переменные рекурсивно вычисляются по мере необходимости для вычисления выражения in . Ни одна переменная не вычисляется более одного раза.
пусть a = "Привет" , b = "Мир" , результат = a & " " & b в результате
Переменные не типизированы в Power Query. Вместо этого выражение может иметь утверждение типа, которое будет оцениваться как ошибка, если выражение не оценивается как значение, совместимое с утверждением. Утверждениям может предшествовать nullable, чтобы включить null в допустимые значения.
Power Query поддерживает комментарии блока C ( /* ... */ ) и строки C ( // ... ).
В Power BI использование M-кода несколько ограничено в DirectQuery, в отличие от Import, который имеет все возможности. Это связано с требованием, чтобы M-код в DirectQuery был транслирован в SQL во время выполнения.
Свертывание запросов — это возможность преобразования шагов Power Query в один запрос в источнике данных (например, в Transact SQL). Таким образом, свертывание запросов работает как традиционный процесс ETL и позволяет работать с данными перед загрузкой. Свертывание запросов поддерживается не всегда. Поддерживаются такие шаги, как фильтрация, выбор столбцов и простая арифметика SQL. Поддерживаются такие шаги, как создание индекса и добавление или слияние несвертываемых источников с свертываемыми источниками. Индикаторы свертывания (такие как свертывание, не свертывание, может свертываться, непрозрачный, неизвестный) могут указывать, до какого шага запрос может сворачиваться. Несвертываемые запросы должны будут выполняться на стороне клиента. Порядок запросов может определять, сколько шагов будут свернуты.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка )