Power query экспорт в excel

@DhritimanL 

Unfortunately, PowerQuery doesn’t support output of one query to multiple sheets.

If your version of Excel supports Dynamic Arrays and the FILTER function, you can use this code:

Option Explicit

Public Sub SplitTableToSheets()

Dim full_data_listobject As ListObject
Dim selected_range As Range
Dim selected_data As Variant
Dim selected_data_header As String
Dim items_sheet As Worksheet
Dim items_range As Range
Dim item As String
Dim i As Integer
Dim new_item_sheet As Worksheet

DeleteSheetWithoutWarning "items"

Set full_data_listobject = ThisWorkbook.Worksheets("full data").ListObjects(1)


' get the range currently selected
Set selected_range = Selection
selected_data_header = Selection.Offset(-1, 0).Cells(1, 1)

Set items_sheet = ThisWorkbook.Worksheets.Add

items_sheet.Name = "items"

selected_range.Copy

items_sheet.Range("A1").PasteSpecial xlValues

Set items_range = items_sheet.Range("A1").CurrentRegion

items_range.RemoveDuplicates 1, xlNo

'loop through each item and create a new sheet with the filtered data
For i = 1 To items_range.Rows.Count
    If items_range.Cells(i, 1) <> "" Then
        item = items_range.Cells(i, 1)
        
        DeleteSheetWithoutWarning item
        
        Set new_item_sheet = ThisWorkbook.Worksheets.Add
        
        With new_item_sheet
            .Name = item
            .Range("A1").Formula2 = "=" & full_data_listobject.Name & "[#Headers]"
            .Range("A2").Formula2 = "=FILTER(" & full_data_listobject.Name & _
                                            "," & full_data_listobject.Name & "[" & selected_data_header & "] = """ & item & """)"

            ''optionally uncomment these two lines to paste the results as values in the destination sheet
            '.Range("A1").CurrentRegion.Copy
            '.Range("A1").PasteSpecial xlPasteValues
        End With
        
    Else
        Exit For
    End If
Next i


End Sub


Private Sub DeleteSheetWithoutWarning(sheet_name As String)

Application.DisplayAlerts = False
On Error Resume Next
ThisWorkbook.Worksheets(sheet_name).Delete
On Error GoTo 0
Application.DisplayAlerts = True

End Sub

Select a column in your data that contains the items you want to split by, then run the SplitTableToSheets sub-procedure.

splittabletosheets.gif

The benefit of this is that it will keep the sub-sheets up to date when the data on the main sheet refreshes.

You can test it with my dataset using the attached file.

If this doesn’t work for you because you don’t have access to the FILTER function, let me know. There are other ways to do it.

There’s an old joke about “Export to Excel” being the most important feature of any BI tool. In fact, I’d say export to Excel is one of the most important features of any enterprise application of any type. Of course the reason we joke about it is that we know it’s a Bad Thing and the starting point for all kinds of manual, error-prone and time-consuming business processes – but even though we know there are much better ways of achieving whatever it is the user wants to do, they still want to export to Excel.

So wouldn’t be good if you could export to Excel and instead of getting a static copy of the data, you could get a table connected to a Power Query query which in turn connected back to the original data source, so it could be refreshed whenever the user wanted? After all, pretty much everyone nowadays has a version of Excel with Power Query in it (even, with some limitations, Mac users). It’s always been possible to build yourself but technically difficult. Recently, though, I became aware of a JavaScript library developed by the Excel Power Query team called “Connected Workbooks” that makes it extremely easy to do this. You can find out more about it here:

https://www.npmjs.com/package/@microsoft/connected-workbooks

https://github.com/microsoft/connected-workbooks#readme

So if you’re adding export to Excel to your application, or know someone who is, check it out!

My name is Chris Webb, and I work on the Power BI CAT team at Microsoft. I blog about Power BI, Power Query, SQL Server Analysis Services, Azure Analysis Services and Excel.
View all posts by Chris Webb

 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

Всем привет.
В поиске что-то находил, но решения проблемы не нашел.
Проблема следующая. Есть обработка нескольких таблиц в Power Query с итоговым количеством строк более 5млн. И постоянно увеличивается. Всю эту простыню мне необходимо загнать в Qlik Sense. Он принимает множество форматов, в т.ч. CSV. Прямого экспорта в csv либо другие форматы из PQ или PP нет. Пробовал костыль DAXStudio, он в CSV экспортирует, но около 4-х часов и в итоге вместо кириллицы получаю иероглифы. Помимо этого Qlik ругается, что файл слишком большой (около 300мб, максимум возможно только 50)
Вопросов несколько.
1. Какие возможные варианты экспорта модели данных
2. Может быть как-то настроить промежуточный костыль Access, через который в другой формат экспортнуть
3. Другие варианты подружить модель данных и Qlik
Заранее благодарю за ответы и советы

 

Экспортируйте через ДаксСтудию за определенные периоды, а не все сразу. Время экспорта 4 часа скорее всего связана со слабым хардом. У меня на SSD экспорт 1 млн занимает порядка 15 минут. Касаемо иероглифов — без примера не никто не подскажет.

зы: что это за версия клика такая с ограничением в 50мб? Вы наверное прикрепляете файл к запросу, а не используете файл как источник данных

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

Выгрузить из модели в csv можно попробовать и

макросом

. А вот что с кликом делать — уже не подскажу.

Вот горшок пустой, он предмет простой…

 

Suvik,

https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=130680&a…

Добрый день. Я выгрузку делаю на сервер SQL.
От туда можно забрать данные тем же PQ уже из другого файла, или из Bi.
Других простых вариантов тоже не нашел.
Хотя случаются сложности с выгрузкой, и ничем не объяснимые глюки. На малых объемах этого не видно, но если от тысячи строк и далее, возможны сложности, то строки задвоятся, то выгрузка не пройдет.
Не знаю пока как с этим побороться, похоже что никак.
Но, в реальном проекте, уже год выгрузка отрабатывает, по тысячи строк в день примерно. Просто приходится проверять, чтобы все выгружаемые таблицы дошли до сервера.

Хочу добавить, что при огромных выгрузках, 100 000 строк и более, глюки могут усугубиться, поэтому в реальном проекте выгрузка на сервер происходит каждый день и по чуть чуть.

Изменено: lostandleft29.06.2021 11:58:34

 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

mechanix 85, хард точно нормальный. Нашел метод как ускорить процесс. Сейчас попробую. Как потом добавлять данные в готовый файл csv? При добавлении нового месяца думал просто заменять его на новый.
С что делать с кириллицей?
Во вложении скрин полученного CSV

Изменено: Suvik29.06.2021 11:41:33

 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

PooHkrd,Макрос пробовал. Какую-то ошибку выдает, решения не нашел, поэтому начал пробовать DAX
P.S. В тулсах все подключения галочки проставлял.

 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

#7

29.06.2021 11:47:13

Цитата
mechanix 85 написал:
зы: что это за версия клика такая с ограничением в 50мб? Вы наверное прикрепляете файл к запросу, а не используете файл как источник данных

Пока не настроили путь в «расположение файлов» пытаюсь просто файлом загрузить данные. Вот и ругается. Может быть и с этим связано

 

Suvik, клик также может собирать файлы с папки. просто вместо пути //файл.csv указывайте //*.csv ну или с доп. маской. Поэтому формируйте файлы помесячно или поквартально. (но клик в десятки раз быстрее загружает данные, непонятно для чего двойная работа)

Пришлите лучше файл excel с парой строк в модели данных, гляну у себя через Студио

 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

mechanix 85, декабрь — исходник с моделью данных, таблица — полученный через DAX csv

 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Suvik, если мысль опоздала, можно дополнить предыдущее сообщение

 

mechanix 85

Пользователь

Сообщений: 1031
Регистрация: 07.09.2020

#12

29.06.2021 12:45:41

и теперь чтобы не прогружать старые данные в ДаксСтудио код будет:

Код
EVALUATE

FILTER('Продажи';'Продажи'[Дата накл.]>=date(2021;4;1))

таблицы и названия полей с вашей модели

 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

#13

29.06.2021 13:42:15

Цитата
mechanix 85 написал:
и теперь чтобы не прогружать старые данные в ДаксСтудио код будет:

Спасибо. Нужная штука. Только теперь другая проблема. С кириллицей и экспортом разобрался. При экспортировании он текстовые ячейки заключает в кавычки, дату тоже текстом проставил и пишет её мне текстом вплоть до секунд. Соответственно в клике потом нечитаемая чушь с большим количеством ненужных кавычек. Название месяца тоже в кавычках все. Как этот недочет исправить можно?

 

mechanix 85

Пользователь

Сообщений: 1031
Регистрация: 07.09.2020

#14

29.06.2021 14:00:36

Это такая фича Студио. Эти поля можно легко переименовать в клике по типу

[Дата`накл.] as [Дата накл.]

и дополнительно преобразовать текстовые даты с секундами в нормальную дату:

Код
date(left([Дата`накл.],10),'DD.MM.YYYY') as [Дата накл.]

Изменено: mechanix 8529.06.2021 14:01:08

 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

#15

29.06.2021 14:31:47

Цитата
mechanix 85 написал:
1date(left([Дата`накл.],10),’DD.MM.YYYY’) as [Дата накл.]

Это в самом клике в скрипт прописывать? Или в DAX?

 
 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

#17

29.06.2021 15:52:27

Цитата
mechanix 85 написал:
date(left([Дата`накл.],10),’DD.MM.YYYY’) as [Дата накл.]

По синтаксису сможете прокомментировать? Что-то ругается

 

на что именно? вместо [Дата`накл.] указать свое поле из csv

формат даты после Студио такой же как на скрине?

Прикрепленные файлы

  • Снимок.PNG (5.48 КБ)

 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

#19

29.06.2021 16:02:08

Цитата
mechanix 85 написал:
формат даты после Студио такой же как на скрине?

Да. Клик только недавно начал изучать. В скрипты толком не лез. В какую строку его добавлять нужно?
Во вложении скрин скрипта загрузки

Прикрепленные файлы

  • Снимок экрана 2021-06-29 160119.gif (42.52 КБ)

 

mechanix 85

Пользователь

Сообщений: 1031
Регистрация: 07.09.2020

#20

29.06.2021 16:13:23

Вместо Дата

Код
date(left([Дата],10),'DD.MM.YYYY') as [Дата]

Только почему у вас Студио не заменил шапку файла, которые содержали пробелы на апостроф  ` ? Скорее всего это изначальный код загрузки таблицы, сейчас там таких полей нет вот клик и матюкается

 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

#21

29.06.2021 16:49:46

Цитата
mechanix 85 написал:
Вместо Дата

Получилось, спасибо. Есть ли варианты не в скрипте это исправлять? Дело в том, что этот файл-исходник будет лежать в папке, видимой кликом. И добавлять я его буду «расположением фалов». Есть сомнения, что в таком случае данные в самом клике обновляться не будут. Или будут?.. Т.к. при текущей ситуации, когда я просто закинул туда файл, потом этот файл на компе поменял, но в клике ничего не изменилось

 

StepanWolkoff

Пользователь

Сообщений: 1252
Регистрация: 07.05.2015

#22

29.06.2021 16:53:46

Цитата
Suvik написал:
Спасибо. Нужная штука. Только теперь другая проблема. С кириллицей и экспортом разобрался. При экспортировании он текстовые ячейки заключает в кавычки, дату тоже текстом проставил и пишет её мне текстом вплоть до секунд. Соответственно в клике потом нечитаемая чушь с большим количеством ненужных кавычек. Название месяца тоже в кавычках все. Как этот недочет исправить можно?

В EVALUATE используйте SELECTCOLUMNS, что переименовать столбцы удобоваримо, а также преобразовать их в нужный формат, как даты.
Чтобы значения не заключались в кавычки, в настройках DAX Studio нужно снять галочку см.скриншот. И при сохранении выбирать Custom Export Format
А вобще, чтобы не городить огород, лучше все, что вы делаете в PQ перенести в скрипт загрузки Клика. У него очень продвинутые возможности, но да к сожалению все писать только ручками

Прикрепленные файлы

  • Снимок.JPG (36.26 КБ)

Изменено: StepanWolkoff29.06.2021 16:55:25

 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

#23

29.06.2021 17:18:34

Цитата
StepanWolkoff написал:
SELECTCOLUMNS, что переименовать столбцы удобоваримо, а также преобразовать их в нужный формат, как даты.

Наверно достал уже)) Но с синтаксисом проблемы. Первый аргумент — таблица, потом название столбца, потом на что меняем этот столбец. Если всё правильно понял. Но как прописать формат даты в этой функции?
Буду признателен, если полный код в DAX пропишите по выгрузке с форматом даты

Изменено: Suvik29.06.2021 17:19:17

 

StepanWolkoff

Пользователь

Сообщений: 1252
Регистрация: 07.05.2015

#24

29.06.2021 17:28:52

Suvik, да пожалуйста. Еще раз выделил желтым, чтобы не забывали выбирать Custom Export Format, чтобы убрать кавычки вокруг текста

Код
EVALUATE
SELECTCOLUMNS (
    Orders,
    "CustomerName", Orders[Customer Name],
    "OrderDate1", FORMAT ( Orders[Order Date], "YYYY-MM-DD" ),
    "OrderDate2", FORMAT ( Orders[Order Date], "DD.MM.YYYY" )
)

Прикрепленные файлы

  • Снимок.JPG (134.88 КБ)

Изменено: StepanWolkoff29.06.2021 17:30:09

 

Suvik

Пользователь

Сообщений: 17
Регистрация: 03.08.2017

#25

30.06.2021 11:20:17

Цитата
StepanWolkoff написал:
Suvik , да пожалуйста. Еще раз выделил желтым, чтобы не забывали выбирать Custom Export Format, чтобы убрать кавычки вокруг текста

Новый день новые проблемы. Путем выполнения запроса экспорт ведется в кодировке, которая не воспринимает кириллицу. Если сохранять не дефолтным форматом, а выбирать нужную кодировку, то появляются кавычки. В принципе их можно будет убрать потом общей заменой в блокноте. Если в запросе это можно будет прописать, то тоже хорошо
UPD. Вопрос закрыт. Всем спасибо за содействие и помощь!

Изменено: Suvik30.06.2021 16:24:42

Recently I found a PowerQuery gem, trick with Java/VB Script that allows to export data from Power Query to CSV without R / DAX Studio / SMS and Registration. However, related with risk. As everything else in our life.

Kudos to user Shi Yang from Stack Overflow who replied to How to write to DATA sources with Power Query?.

Shi proposes to use following code (extended with my comments)

Let
     // reference to a query you wish to export to CSV
    Source = ReferenceToYourTableOrQuery,
     // demote headers to have headers in resulting CSV
     // if you don't need headers, remove Table.DemoteHeaders
     Json = Text.FromBinary(Json.FromValue(Table.ToRows(Table.DemoteHeaders(Source)))),
     // trigger execution of script
  Export = Web.Page("
 var fso=new ActiveXObject('Scripting.FileSystemObject');
 var f1=fso.CreateTextFile('C:/Temp/test.csv',true);
 var arr=" & Json & ";
 f1.WriteLine(arr.join('n'));
 f1.WriteBlankLines(1);
 f1.Close();
 ")
 in Export

All great, but this method doesn’t work with default settings of Internet Explorer.

Yes… yes… IE is involved somehow.

To make it work, you need to open IE, go ‘Internet options


Tab ‘Security‘ then ‘Custom level…


Find setting ‘Initialize and script ActiveX controls not marked as safe for scripting (not secure)


Unfortunately, this is a risky option, as it potentially allows to execute any script on your workstation.

But if you really need to export something to CSV… you probably allowed to change this setting on your corporate laptop… right?

For your convenience, IE will show notification about security risk each time when you open it


You may click ‘Fix settings for me‘ to restore secure configuration.

Proposed code is basically a script that writes text file using CreateTextFile method

Export = Web.Page("
  var fso=new ActiveXObject('Scripting.FileSystemObject');
  var f1=fso.CreateTextFile('C:/Temp/test.csv',true);
  var arr=" & Json & ";
   f1.WriteLine(arr.join('n'));
   f1.WriteBlankLines(1);
   f1.Close();
 ")

Script creates FileSystemObject needed to work with files as with objects, then creates TextFile (with overwrite option = true).

Then saves prepared Json into variable, adds line breaks and finally writes everything into text file.

Data Volume

First thing I did – tried to export something not small but not too big. It was a table about 200k rows and 15 columns. Script successfully exported data. Then I doubled volume – went well, tripled – no CSV file were created.

Obviously, limit on data volume exists. Json can’t be infinite large.

I also tried to export table with over one million of rows but got ‘Out of memory’ message.

It is clear that we will need paging if we want to export huge tables.

And when I hear ‘paging’ I think about List.Generate.

Pagination

Instead of CreateTextFile we will need OpenTextFile method, that also allows to create file, but in addition allows to append to existing file.

Idea of test – take a small table and try to record it to CSV several times.

What if Power Query will be so fast that create a conflict while recording to file, e.g. if PQ create multiple threads? – i thought.

And I decided to add a delay between appending.

We can start with a function

let
fScriptFunction = (tbl as table, FilePath as text) =>
  let
    ForAppending = 8,
    Json = Text.FromBinary(Json.FromValue(Table.ToRows(Table.DemoteHeaders(tbl) ) ) ),
    Export = Web.Page("
        var fso=new ActiveXObject('Scripting.FileSystemObject');
       // var objFile=fso.OpenTextFile('" & FilePath & "', " & Text.From(ForAppending) & ", true); 
       // <- with create new file // without creation of new file ->
       var objFile=fso.OpenTextFile('" & FilePath & "', " & Text.From(ForAppending) & ");
       var arr=" & Json & ";
       objFile.WriteLine(arr.join('n'));
       objFile.WriteBlankLines(1);
       objFile.Close();
  ")
 in Export,

// Initial parameters
 ResultingFilePath = "C:/Temp/test.csv",
 buffer = Table.Buffer( MyTable ), // MyTable is another query in workbook
 Delay = 1,
 TestVolume = List.Generate(
      ()=> [i=1, Tbl=buffer, dummy=null, time=null ],
      each // do while
        [i] < 10,
     each // just write to CSV each time
  let
       /// your complex logic
       // export = fScriptFunction( buffer, ResultingFilePath )
       export = Function.InvokeAfter( ()=> fScriptFunction( buffer, ResultingFilePath ), 
                        #duration(0,0,0,Delay) )
  in [ i=[i]+1,
       Tbl = buffer, // could be table range // skip first N rows
        dummy = export, // to trigger script
        time = DateTime.LocalNow()
        ],
  each // result of iteration
     [ [i], [Tbl], [dummy], [time]] ),
 #"Converted to Table" = Table.FromList( TestVolume , Splitter.SplitByNothing(), null, null, 
           ExtraValues.Error),
 #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", 
          {"dummy", "time"}, {"dummy", "time"}),
 #"Expanded dummy" = Table.ExpandTableColumn(#"Expanded Column1", "dummy", 
          {"Caption", "Source", "ClassName", "Id", "Data"}, {"Caption", "Source", "ClassName", "Id", "Data"})
in
 #"Expanded dummy"

However, I couldn’t achieve stable number of rows in resulting file.

Even if I set Delay to 3 seconds or 5, I still get my table written to file two or three or five times.


Had no time to explore this further. Share as is.

I think that in Excel iteration can be done through VBA code that can change code of PQ queries…

You can download my sample file from here.

P.S. – not a single corporate laptop was at risk during writing of this post.

Yeah. Not really aware of a good way. I sometimes will use DAX Studio to export loaded tables to text files.

You could use the Power Query connector in Power Automate then use an export to file in a flow. You can write your Power Query code in Power BI desktop or Excel, then just copy the M code to Power Automate, assuming it has access to the files or data, either via cloud (SharePoint online) or the on prem Gateway.

Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling

Proud to be a Super User!

MCSA: BI Reporting

Power Query — это инструмент для продвинутого бизнес-анализа, предназначенный для подключения к источникам данных и их преобразования.

Несмотря на то, что данные в Excel можно загружать с помощью инструментов Power Pivot, возможностей для преобразования и доступных источников данных в Power Query намного больше и работа с ними проще. Итак, теперь для обработки таблиц и подключения к данным больше не нужны сложные формулы и макросы.

надстройка power query

Power Query в меню Excel

В зависимости от того, какая у вас версия Excel, вид надстройки Power Query может выглядеть по-разному. В Excel 2010 и 2013 надстройка появляется в виде отдельной вкладки «Power Query» (если у вас такой вкладки нет, прочитайте, как ее установить).

pp3

В Excel после 2016 года Power Query уже встроен по умолчанию и находится в меню Данные → раздел Получить и преобразовать данные (в некоторых версиях Excel этот раздел называется Скачать & преобразовать).

Power Query в Excel 2019

Работа с данными в Power Query

Power Query умеет:

  • напрямую подключаться к данным в различных источниках;
  • очищать данные и выполнять преобразования;
  • подготовленные данные выгружать на лист, в сводную таблицу или добавлять в модель данных Excel.

Таким образом, Power Query – это полноценный ETL-инструмент (Extract, Transform, Load).

Подключение к данным в Power Query

В Power Query можно подключать данные из самых разных источников: таблицы в самом файле и других Excel-файлах, текстовые/csv файлы, папки, базы данных, источники в интернете, файлы xml и json, pdf-файлы, данные из канала OData и так далее. А также загрузить данные из Power BI и написать запрос с нуля – Пустой запрос.

Загрузка данных в Power Query

Чтобы посмотреть, какие именно источники данных доступны в Excel, перейдите на вкладку Данные → Получить данные (или Создать запрос, если у вас не новая версия Excel).

Для примера добавим в Power Query данные из таблицы.

  • Выделите любую таблицу на листе Excel и перейдите в меню:

    — в Excel 2010 и 2013: вкладка Power Query → Из таблицы (или С листа).
    — для Excel после 2016: меню Данные → Из таблицы (Из таблицы/диапазона).

Получить данные Power Query

В открывшемся окне поставьте галочку «Таблица с заголовками».

Таблица с данными при этом превратится в «умную» smart-таблицу.

  • Откроется окно редактора запросов, в котором будет наша таблица. Нажимаем кнопку в меню Главная → Закрыть и загрузить. Готово!

Power Quey пример

Чтобы открыть список запросов, нажмите в меню Данные → Запросы и подключения. В открывшейся вкладке «Запросы и подключения» отобразится список всех запросов, созданных в файле.

Редактор запросов Power Query

Разберем подробнее интерфейс редактора запросов Power Query.

Если окно редактора у вас закрыто, откройте его в меню Данные → Получить данные → Запустить редактор запросов. Или щелкните 2 раза мышкой по названию запроса на вкладке Запросы и подключения.

Интерфейс Power Query

Итак, в редакторе Power Query есть:

  1. Лента редактора запросов для вкладок меню: Главная, Преобразование, Добавить столбец, Просмотр.
  2. Перечень созданных запросов, который можно свернуть / развернуть.
  3. Строка формул.
  4. Название самого запроса.
  5. Примененные шаги запроса: записанные шаги получения или преобразования данных. Их можно редактировать, выбирая в списке, изменять последовательность шагов, добавлять новые или удалять.
  6. Область предварительного просмотра, в которой выводится результат преобразования данных для каждого шага.
  7. Меню для данных, которое открывается при нажатии правой кнопкой мышки.
  8. При выборе правой кнопкой мыши названия шага появляется его контекстное меню.

Преобразование данных

Посмотрим на простом примере, как преобразовать данные в Power Query.

Допустим, у нас есть таблица с выручкой и расходами по городам за несколько лет. В таблице эти показатели разделены на две группы. Столбец с городами тоже имеет группировки (смотрите рисунок).

Если вы знакомы со сводными таблицами, то знаете, что построить сводную на основе таких данных не получится. Привести их в «нужный вид» можно в Power Query буквально за несколько щелчков мышкой:

  • выделите таблицу (можно выделить таблицу целиком или одну из ячеек);
  • выберите в меню Данные → Из таблицы (Из таблицы/диапазона);
  • в появившемся окне поставьте галочку рядом с «Таблица с заголовками» → ОК;
  • в открывшемся редакторе запросов выделите столбцы «показатель» и «город», нажав мышкой на названия столбцов с зажатым Ctrl;
  • в меню нажмите Преобразование → Заполнить → Вниз.
    преобразование в Power Query
  • Готово! Пустые строки заполнены значениями из ячеек сверху.

Шаги запросаПри создании запроса Power Query сам автоматически записывает его шаги. Их можно увидеть в области справа Параметры запроса → Примененные шаги.

Шаги запроса можно редактировать, выбирая мышкой (таблица в области предварительного просмотра при этом тоже изменится). Ненужные шаги удаляются при нажатии на «крестик». Можно добавлять новые шаги в середину запроса или менять их местами, перемещая мышкой.

Обработка данных в Power Query выполняется последовательно, шаг за шагом, и каждое последующее действие использует результаты предыдущего. Поэтому при добавлении новых шагов или изменении их последовательности обязательно проверьте, все ли в порядке со следующими операциями. Проверить, все ли в порядке, можно, нажав на самый нижний шаг.

Кроме простых операций с данными, Power Query умеет выполнять и другие действия: сортировать, фильтровать, заменять, группировать, заполнять пустые значения, удалять дубликаты, работать с текстом и числами, выполнять простые вычисления, транспонировать таблицы и разворачивать их столбцы, объединять данные и многое-многое другое.

Строка формул и расширенный редактор

Код запроса, который вы создаете в Power Query, автоматически записывается на языке M. Это не значит, что обязательно потребуется писать код – большинство операций по преобразованию данных можно выполнить только с помощью кнопок меню.

Формулы Power Query выводятся в строке формул. По умолчанию эта строка скрыта, ее включают на вкладке Просмотр → Строка формул.

Строка формул Power Query

Чтобы посмотреть все формулы, здесь же на вкладке Просмотр нажмите на кнопку Расширенный редактор. В открывшемся окне появится полный текст запроса.

Расширенный редактор Power Query

Типы данных Power Query

Типы данных Power QueryОпределение типов данных – важная часть каждого запроса Power Query. Обычно типы данных задают в конце запроса после всех преобразований:

  • в меню Главная → Тип данных или Преобразование → Определить тип данных;
  • нажать мышкой по значку типа данных в названии столбца;
  • определить тип даты на вкладке Преобразование → Дата → Выполнить анализ.

Перед сохранением запроса проверьте, все ли типы данных заданы правильно. Это сэкономит время на поиск ошибок. А вот шаг «Измененный тип», который автоматически проставляется в середине запроса, лучше удалить.

Импорт данных из Power Query

Итак, данные преобразованы. Что делать с ними дальше? В Power Query доступно несколько вариантов импорта данных.

Способы импорта можно задать при сохранении запроса Главная → Закрыть и загрузить в…

Импорт

… А если запрос уже сохранен – в списке на вкладке Запросы и подключения. Щелкните по названию запроса правой кнопкой мышки и выберите в меню Загрузить в

Excel предлагает пользователям на выбор несколько вариантов импорта данных (вид окна импорта может отличаться в зависимости от версии Excel):

Варианты импорта

  1. Выгрузка на лист: выберите способ представления данных → Таблица, поместить данные на лист. На листе будет создана «умная» smart-таблица с данными из Power Query.
  2. Сводная таблица или сводная диаграмма: способ представления → Отчет сводной таблицы или Сводная диаграмма. Данные будут импортированы в виде сводной таблицы.
  3. Только подключение: выберите Только создать подключение. Запрос будет сохранен.
  4. Добавить данные в модель данных: при нажатии галочки «Добавить эти данные в модель данных» результаты выполнения запроса будут добавлены в модель Power Pivot.

Like this post? Please share to your friends:
  • Powershell import from excel
  • Power query ссылка на ячейку excel
  • Powerpoint to word format
  • Powershell import excel module
  • Powerpoint to excel table