Создание, загрузка и изменение запроса в Excel (Power Query)
Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Еще…Меньше
Power Query предлагает несколько способов создания и загрузки power querys в книгу. Вы также можете настроить параметры загрузки запроса по умолчанию в окне Параметры запроса.
Совет Чтобы упросить, сформированы ли данные на этом плане с помощью Power Query, выберите ячейку с данными, а если появится вкладка Лента контекстного запроса, данные загружаются из Power Query.
Знать, в какой среде вы сейчас? Power Query хорошо интегрирован с пользовательским интерфейсом Excel, особенно при импорте данных, работе с подключениями и редактировании таблиц, таблиц с Excel и именовых диапазонов. Чтобы избежать путаницы, важно в любой момент времени знать, в какой среде вы находитесь, в какой Excel или Power Query.
Знакомые Excel, лента и сетка |
Лента редактора Power Query и предварительный просмотр данных |
Например, работа с данными на Excel значительно отличается от Power Query. Кроме того, подключенные данные, которые вы видите на Excel, могут не работать с Power Query для их обработки. Это происходит только при загрузке данных на таблицу или в модель данных из Power Query.
Переименование я вкладок на таблицах Ямы лучше переименовывать по своему смыслу, особенно если их много. Особенно важно пояснить разницу между данными и данными, загруженными из редактора Power Query. Даже если у вас всего два листа: с таблицей Excel «Лист1»и запросом, созданным путем импорта таблицы Excel Таблица1,ее легко запутать. Всегда имеет смысл изменить названия ярлыков по умолчанию на более понятное. Например, переименуйте Лист1 в Таблицу данных и Таблицу1 в Таблицу запросов. Теперь понятно, какая вкладка с данными, а какая вкладка с запросом.
Вы можете создать запрос из импортируемых данных или пустой запрос.
Создание запроса из импортируемых данных
Это самый распространенный способ создания запроса.
-
Импорт некоторых данных. Дополнительные сведения см. в том, как импортировать данные из внешних источников.
-
Выберем ячейку в данных и выберите запрос> изменить.
Создание пустого запроса
Вы можете начать с нуля. Это можно сделать двумя способами.
-
Выберите Данные> Получить данные >из других источников > пустой запрос.
-
Выберите Данные> получить данные >запуск редактора Power Query.
На этом этапе вы можете вручную добавлять шаги и формулы, если хорошо знаете язык формул Power Query M.
Кроме того, можно выбрать команду На главная в группе Новый запрос. Выполните одно из указанных ниже действий.
-
Выберите Новый источник, чтобы добавить источник данных. Эта команда выглядит так же, как> «Получить данные» на Excel ленте.
-
Выберите Последние источники, чтобы выбрать источник данных, с помощью который вы работали. Эта команда выглядит так же, как> последние источники на Excel ленте.
-
Чтобы ввести данные вручную, выберите Ввести данные. Вы можете выбрать эту команду, чтобы попробовать редактор Power Query независимо от внешнего источника данных.
Предположим, что запрос действителен и не имеет ошибок, его можно загрузить обратно на таблицу или в модель данных.
Загрузка запроса из редактора Power Query
В редакторе Power Query сделайте следующее:
-
Чтобы загрузить на таблицу, выберите Главная> Закрыть & Загрузить > Закрыть & Загрузить.
-
Чтобы загрузить данные в модель данных, выберите Главная> Закрыть & Загрузить > Закрыть & Загрузка.
В диалоговом окне Импорт данных выберите добавить эти данные в модельданных.
Совет Иногда команда «Загрузить в» неатривна или отключена. Это может произойти при первом создании запроса в книге. В этом случае нажмите кнопку Закрыть & Загрузить, на новом > запросы данных & Connections > Запросы, щелкните запрос правой кнопкой мыши и выберите загрузить в . Кроме того, на ленте редактора Power Query выберите запрос> Загрузить в.
Загрузка запроса из области «Запросы и подключения»
В Excel может потребоваться загрузить запрос на другой таблицу или в модель данных.
-
В Excel выберите Запросы> запросы & Connections, а затем выберите вкладку Запросы.
-
В списке запросов найдите запрос, щелкните его правой кнопкой мыши и выберите загрузить в. Появится диалоговое окно Импорт данных.
-
Выберите, как вы хотите импортировать данные, а затем выберите ОК. Чтобы получить дополнительные сведения об использовании этого диалогового окна, выберите знак вопроса (?).
Существует несколько способов изменить запрос, загруженный на таблицу.
Изменение запроса на Excel данных
-
Чтобы изменить запрос, найдите ранее загруженную из редактора Power Query, выйдите ячейку в данных и выберите запрос > Изменить.
Изменение запроса в области «Запросы & подключения»
Возможно, вы & области Запросы и подключения удобнее использовать, если в одной книге много запросов и вы хотите быстро найти его.
-
В Excel выберите Запросы> запросы & Connections, а затем выберите вкладку Запросы.
-
В списке запросов найдите запрос, щелкните его правой кнопкой мыши и выберите изменить.
Изменение запроса в диалоговом окне «Свойства запроса»
-
В Excel выберите Data> Data & Connections > Запросы, щелкните запрос правой кнопкой мыши и выберите Свойства ,выберите вкладку Определение в диалоговом окне Свойства и нажмите кнопку Изменить запрос.
Совет Если вы работаете с запросом на > данных, в диалоговом окнеСвойства выберите вкладку Определение, а затем — Изменить запрос.
Модель данных обычно содержит несколько таблиц, расположенных в связи. Запрос загружается в модель данных с помощью команды Загрузить, чтобы отобразить диалоговое окно Импорт данных, а затем в поле Добавить эти данные в режим данныхl. Дополнительные сведения о моделях данных см. в дополнительных сведениях о том, какие источники данных используются в модели данных книги,Создание модели данных в Excelи Создание таблиц с помощью нескольких таблиц.
-
Чтобы открыть модель данных, выберите Power Pivot > Управление.
-
В нижней части окна Power Pivot выберите вкладку нужной таблицы.
Подтвердим, что отображается правильная таблица. Модель данных может иметь много таблиц.
-
Обратите внимание на имя таблицы.
-
Чтобы закрыть окно Power Pivot, выберите файл> Закрыть. Чтобы освободить память, может потребоваться несколько секунд.
-
Выберите > подключения & свойства >Запросы, щелкните запрос правой кнопкой мыши и выберите изменить.
-
Завершив внесение изменений в редакторе Power Query, выберите файл > Закрыть & загрузить.
Результат
Запрос на этом и в таблице в модели данных обновляются.
Если вы заметили, что загрузка запроса в модель данных занимает намного больше времени, чем загрузка на лист, проверьте действия Power Query, чтобы узнать, фильтруется ли текстовый столбец или структурированный столбец списка с помощью оператора Contains. Это действие приводит Excel повторно прогонять весь набор данных для каждой строки. Более того, Excel не могут эффективно использовать многопрочитанные выполнения. В качестве обходного решения попробуйте использовать другой оператор, например Равно или Начинает с.
Корпорация Майкрософт знает об этой проблеме и находится в стадии исследования.
Вы можете загрузить Power Query:
-
На один из них. В редакторе Power Query выберите Home> Close & Load > Close & Load.
-
В модель данных. В редакторе Power Query выберите Home> Close & Load > Close & Load To.
По умолчанию Power Query загружает запросы на новый таблицу при загрузке одного запроса и одновременно загружает несколько запросов в модель данных. Вы можете изменить поведение по умолчанию для всех книг или только для текущей книги. При настройке этих параметров Power Query не меняет результаты запроса на месте или в данных модели данных и примечаниях.
Кроме того, динамически переопределять стандартные параметры запроса можно в диалоговом окне Импорт, которое отображается после выбора параметра & Загрузитьв.
Глобальные параметры, которые применяются во всех книгах
-
В редакторе Power Query выберите Файл > параметры и параметры >параметры запроса.
-
В диалоговом окне Параметры запроса в левой части в разделе GLOBAL выберите Загрузка данных.
-
В разделе Загрузка Параметры запроса по умолчанию сделайте следующее:
-
Выберите Использовать стандартные параметры загрузки.
-
Выберите Указать настраиваемые параметры загрузкипо умолчанию, а затем выберите или отобирать параметр Загрузить на таблицу или Загрузить в модель данных.
-
Совет В нижней части диалогового окна можно выбрать восстановить параметры по умолчанию, чтобы вернуться к настройкам по умолчанию.
Параметры книги, которые применяются только к текущей книге
-
В диалоговом окне Параметры запроса в левой части в разделе ТЕКУЩАЯ КНИГА выберите Загрузка данных.
-
Выполните одно или несколько из указанных ниже действий.
-
В области Обнаружение типоввыберите или сберем для обнаружения типов столбцов и их заглавных колонок для неструктурированных источников.
По умолчанию они обнаруживаются. Если вы предпочитаете формировать данные самостоятельно, отоставьте этот параметр.
-
В области Связивыберите или отоберем создать связи между таблицами при первом добавлении в модель данных.
По умолчанию перед загрузкой в модель данных можно найти существующие связи между таблицами, например внешние ключи в реляционной базе данных, и импортировать их вместе с данными. Если вы предпочитаете делать это самостоятельно, сделайте это самостоятельно.
-
В области Связивыберите или отоберете update relationships when refreshing queries loaded to the Data Model (Связи) при обновлении запросов, загруженных в модель данных.
По умолчанию отношения не обновляются. При обновлении запросов, уже загруженных в модель данных, Power Query находит существующие связи между таблицами, например внешние ключи, в реляционной базе данных и обновляет их. Это может привести к удалению связей, созданных вручную после импорта данных, или к новым связям. Тем не менее, если вы хотите сделать это, выберите этот параметр.
-
В области Фоновыеданные выберите или отпустите разрешение предварительного просмотра данных для скачивания в фоновом режиме.
По умолчанию предварительный просмотр данных загружается в фоновом режиме. Если вы хотите сразу же видеть все данные, отобираем этот параметр.
-
См. также
Справка по Power Query для Excel
Управление запросами в Excel
Нужна дополнительная помощь?
Управление обновлением внешних ссылок (связей)
Смотрите такжеЗаранее спасибо. т.е. при любомApplication.Calculation = xlCalculationAutomatic “$”.В настройках «формулы» Это нужно для диапазона.содержится несколько сотен строк; Вручную, пользователь обновляетНа следующем рисунке показан
Дополнительные сведения о внешних ссылках
наличие в книге обновлять связи автоматическив группе.Существует несколько вариантов выбораЧтобы обновить связи, нажмитеПри создании внешних ссылок_Boroda_ телодвижении (кроме измененияMakintoshЕсли в ссылке — «параметры вычислений» того, чтобы активизироваласьОбласти позволяют сформировать структурупользователю нужно представлять одни
данные, нажав кнопку основной процесс обновления
самых последних данных. Буфер обменаимя связи автоматически не
в диалоговом окне кнопку (также называемых связями): а так?
Управление связями с другими книгами
цвета фона ячейки).: В настройках стоит используются символы $, нужно поставить «автоматически», «Работа со сводными сводного отчета. и те жеОбновить выбранное подключение данных, подключенных кСвязь с параметрическим запросомЭтот параметр влияет нанажмите кнопку удаляется, поэтому егоЗапрос на обновление связейПараметры можно задать для200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ВПР(A1;’G:ПАПКАКакаятокнига.xlsx’!Таблица[#Данные];2+(D1=»абв»);0) И соответственно, если автоматический пересчёт. Но
Ручное обновление всех (или никаких) связей в книге
-
то она называется если стоит другое таблицами».Сначала заполним «Названия строк». данные в разных
-
.
-
внешнему источнику. нельзя обновить без все книги, которыеКопировать может потребоваться удалить..в области сведений них поддержку и
Частичное обновление связей с другими книгами вручную
-
Стоит ли в
-
ваша функции медлительная,
-
всё равно приходится абсолютной, если символов то ячейки пересчитываютсяНа вкладке «Параметры» находим Так как нужно разрезах, выбирать информациюОбновление всех связей
-
1. когда пользователь инициирует открытия книги-источника. открываются на компьютере..
Удаление имениНа вкладке о документе, а расписание обновления. В
параметрах галка «При то это будет
-
обновлять вручную. И $ в ссылке по другим условиям.
Управление выдачей запроса на обновление всех связей
группу «Сводная таблица». вывести список книг по заданному условию,
Отключение выдачи запроса на обновление связей данной книги и обновление связей вручную
Этот параметр обновляет все операции обновления, чтобыНажмите кнопку Пользователи, которые откроютНажмите кнопкуНа вкладкеДанные затем выберите команду случае изменения значения
-
пересчете книги» «Обновлять сказываться на быстроте ещё заметил, если нет – относительной.по 2003 (могу Нажимаем – открывается по годам, то
-
группировать, а встроенный подключения к данным получить самые последние
-
Не обновлять
книгу на другомВставитьФормулыв группеВключить это содержимое в ячейке приложение ссылки на другие работы всего Excel
Настройка обновления связей по запросу при открытии файла
формула написана встроенными Адреса таких ссылок ошибиться, кажется так) меню кнопки. Выбираем
Если никакие связи не создавались
-
в этом разделе фильтр и группировка в книге при данные.. компьютере, не будут.
-
в группеПодключения.
-
Microsoft Excel не документы»?Сергей функциями Excel то называются абсолютными и
: сервис-параметры-вкладка вычисления, пункт «Параметры». должен быть перечень справляются плохо. нажатии кнопки2. обновление делает подключениеЗакройте конечную книгу. затронуты.Нажмите стрелку рядом сОпределенные именанажмите кнопку
Разрыв связей с источником
Закройте все книги. выполняет поиск новогоИ галка «Сохранять: Здравствуйте. всё хорошо автоматом относительными, соответственно. « надо поставить галочкуВ открывшемся меню «Параметры названий книг. ВТребования к исходной таблице:Обновить все подключения к источнику данных,
-
Откройте книгу-источник.На вкладке кнопкойнажмите кнопкуИзменить связиОткройте книгу, содержащую связи. значения, если это
-
значения внешних связей»?Вопрос такой - обновляется, а еслиDrshall
-
около пункта автоматически сводной таблицы» нажать списке полей ставиму каждого столбца есть
-
. часто сохранили файл
-
-
Откройте конечную книгу.ФайлПараметры вставки
-
Диспетчер имен.На вкладке
не задано пользователем.
-
Сергей в папке имеется с помощью написанной: а если адресК предыдущему ответу: кнопку «Разметка и птичку напротив поля
-
заголовок (первый вариантРегулярное обновление подключения, который определяетНажмите кнопкунажмите кнопку, а затем.
-
Нажмите кнопкуДанныеКнига, содержащая связи, называется: Галки стоят. Предложенная несколько десятков файлов пользовательской функцией то ячейки не вручную
Замена одной формулы ее вычисляемым значением
знак $ фиксирует формат». Поставить галочки «Название». Данные столбца – неправильный; второйЭтот параметр автоматически обновляет все сведения, необходимыеОбновитьПараметры выберите команду В столбце
-
Запрос на обновление связей
в группе книгой назначения, а формула вообще только эксель, таблицы с
возникает эта проблема. прописывать, а при-
значение при копировании напротив следующих пунктов:
-
имеют текстовый формат – правильный); данные интервалом времени, для доступа к.и выберите категориюЗначенияИмя.
-
Подключения книга, с которой нули выдаёт )) одинаковой структурой, ноNew
-
-
написании формулы щелкать формул, но неЗакрыть окно, нажав кнопку – автоматически попадаютзначения в одном столбце заданные автором книги. и получить данные
-
Примечание:Дополнительно .
-
выберите имя, котороеЩелкнитенажмите кнопку установлена связь, называетсяПридётся пока что разным количеством строк : А у вас
Если известно, что подключение к исходному файлу отсутствует
их влияет на пересчет, ОК. в область «Названия имеют одинаковый форматПодробнее о том, как из внешнего источникаМы стараемся как.
Если требуется работать с имеющимися данными, а не заменять их новыми
Нажмите кнопку следует удалить, иНе отображать оповещение и
Если обновление в последний раз заняло слишком много времени
Изменить связи исходной книгой. Если 30+ файлов открывать, + один файл в написанных функцияхMakintosh цитатка из хелпаЕще один вариант: строк». К значениям (число, дата, текст); определить подключения к данных. можно оперативнее обеспечиватьВ Excel 2007 нажмитеНе обновлять нажмите кнопку не обновлять автоматические
Если эта книга создана другим пользователем и вы не знаете, почему появился этот запрос
. открытая книга (конечный чтобы значения в в который вытягиваются есть строка ?: Уважаемые знатоки. Вот»При копировании формулОткрыть лист со сводным сразу применяется сортировкавсе ячейки в строках внешним источникам данных3. существует различных источников вас актуальными справочными
Если вы каждый раз одинаково отвечаете на этот запрос и хотите, чтобы он больше не отображался
кнопку Microsoft Office. Обновление из источникаУдалить связи
Из списка файл) содержит связи нужном собрать =)
определенные значения изApplication.Volatile столкнулся с такой возникает необходимость управлять отчетом. На вкладке по алфавиту. и столбцах заполнены
-
в книге Excel данных, которые вы материалами на вашем, щелкните при отсутствии подключения..
Источник с другими книгами Хорошо, что это этих таблиц. ВMakintosh проблемой. изменением адресов ячеек
-
«Разработчик» нажать кнопкуТеперь ставим птичку напротив значениями; читайте в статье можете получать доступ, языке. Эта страницаПараметры Excel к нему невозможно.Если используется диапазон внешних
Возможно, связь была созданавыберите связанный объект, или файлами (которые
нечасто требуется. этом файле более: Нет, такой строкиЗначение ячейки А1 или ссылок. Для «Запись макроса». поля «Год выпуска».данные из одной ячейки подключение к внешним
-
таких как OLAP, переведена автоматически, поэтомуи выберите категорию Например, если книга-источник данных, параметр запроса случайно путем перемещения который необходимо изменить.
-
называются исходными файлами),Спасибо за внимание! 5к строк. Для
-
нету.
на Листе1 зависит этого перед символамиВыполнить вручную обновление своднойСводная таблица сделана. С
Если известно, что исходный файл доступен для подключения к нему
нельзя разнести в данным (импорт) в SQL Server, данных ее текст можетДополнительно
Если используется параметрический запрос
расположена в сети, может также использовать или копирования диапазона
-
Для выделения нескольких связей а исходные файлыSerge_007
-
вытягивания использую формулу:
-
R Dmitry
-
от значения ячейки
-
адреса ячейки или таблицы – остановить помощью нескольких кликов.
support.office.com
Обновление внешних данных в книге, открытой в браузере
разные столбцы (без справочной системе Microsoft OLEDB и драйверы содержать неточности и. а подключение к данные из другой ячеек, листа или щелкните каждый связанный изменятся, то связи: Значит работает, иначеФормула работает, всё,: Нет, такой строки В2 на Листе2. ссылки устанавливаются символы запись. Нажать на Такой способ представления объединения ячеек). Excel. ODBC. грамматические ошибки. ДляВ разделе
сети отсутствует. книги. Может потребоваться диаграммы из одной объект, удерживая нажатой в открываемой книге было-бы значение ошибки что нужно вытягивает. нету.{/post}{/quote} Вот если поменять “$”. Изменяться только кнопку «Макросы». Выбрать информации удобен дляНерациональная организация информации:Чтобы обновить данные из4. обновление добавляет самых нас важно, чтобыОбщиеНажмите кнопку проверить и удалить книги в другую. клавишу CTRL.
В этой статье
могут указывать на
#ССЫЛКА! Проблема в том,
Function нннннн() значение В2 а
Узнайте об обновлении данных
те атрибуты адреса из доступных макросов финансовых отчетов.Нельзя будет вывести итоги,
внешнего источника данных последних данных в эта статья быласнимите флажок
Не обновлять эти типы связей. Откройте книгу, аЧтобы выделить все связи, устаревшие данные.Сергей что при первомApplication.Volatile True потом перейти на
ячейки, перед которыми записанный – «выполнить».От сводной таблицы больше например, только по в книге, открытой книге. вам полезна. Просим
Запрашивать об обновлении автоматических.В Excel формула удаляется
затем найдите ненужные
Параметры для обновления данных Excel
нажмите клавиши CTRL+A.1. Конечная книга содержит: Увы, пока Какуютокнигу открытии вместо значения… лист1 то ячейка не стоит символТеперь сводный отчет при пользы, если она городу. в браузере, выполнитеК началу страницы вас уделить пару связейНажмите кнопку при замене на связи и разорвитеНажмите кнопку внешние ссылки.
не открыть также выдаётся… А1 не обновляется. “$”. Если перед открытии будет обновляться
динамическая. То есть |
Лучше значения ввести следующим |
следующие действия. |
Не удается определить информации, секунд и сообщить,. Если этот флажок |
Не обновлять |
возвращаемое значение. Чтобы их или заменитеОбновить значения2. Внешняя ссылка (или выдает #ССЫЛКА!, аQuote |
… |
И что бы всеми атрибутами адреса программно. при внесении новых таким образом.Откройте книгу, содержащую данные, |
необходимой для подключения |
помогла ли она снят, связи будут. Если не требуется |
отменить случайную замену их значениями.. связь) представляет собой затем меняет на200?’200px’:»+(this.scrollHeight+5)+’px’);»>#ССЫЛКА! и необходимо открыть/закрытьmyFunction=… обновить данные нужно ячейки поставить символ
Обновление данных из внешнего источника данных
Есть например ячейка A1, данных в исходный которые вы хотите к внешнему источнику
-
вам, с помощью обновляться автоматически (без получение текущих данных,
-
формулы ее значением,Важно:Можно настроить автоматическое обновление
-
ссылку на диапазон нули. Проблема именно
-
все книги, чтобыEnd Function кликнуть 2 раза “$”, то при в которую берутся
-
диапазон поля отчетаЧтобы создать сводную таблицу обновить. данных в книге кнопок внизу страницы.
выдачи запроса).
support.office.com
Обновление данных в сводных таблицах Excel
можно сэкономить время, немедленно после ввода При разрыве связей с связей при запуске ячеек в книге-источнике. в невозможности по собрать данные. ВNew по ячейке А1 копировании формулы ссылка
О целесообразности и возможности сводных таблиц
данных из ячейки можно обновить. Как в качестве исходногоЩелкните значок
- при работе в
- Для удобства такжеОдинаковый запрос для всех не обновляя все или вставки значения источником все формулы, или после запуска.3. Книга-источник содержит ячейку, какой-то причине вытащить
интернете встречал решения
- : А вы попробуйте и нажать на не изменится. F1 по формуле
- это сделать? диапазона возьмем каталогданных
- браузере. У вас приводим ссылку на пользователей этой книги
- связи. После открытия нажмите кнопку использующие источник, заменяютсяПредупреждение:
значение из которой
данные из файлов, на ВБА, но добавьте её сразу
Enter. Может можноНапример, если в
=F1. По каким-то
Как сделать сводную таблицу в Excel
Вручную: учебной литературы:на панели инструментов. открыть книгу в
оригинал (на английском книги нажмите наОтменить на их текущее Этот режим влияет на загружается и помещается которые ещё не я в нём
- первой строкой под написать код который записи формулы ссылку причинам иногда послеКогда данные внесены вПодразумевается, что данная таблица
- Выполните одно из указанных Microsoft Excel 2010 языке) .Предупреждение: вкладке.
- значение. Например, связь всех пользователей книги. в конечную книгу. открывались в эту не разбираюсь и, названием функции, вот бы обновлял все
- на ячейку D7 изменения данных в
- исходную таблицу, переходим состоит из сотен ниже действий. для определения сведенийПри использовании книги в Этот режим влияет наДанныеВыделите ячейку с формулой. =СУММ([Бюджет.xls]Годовой!C10:C25) будет заменена Если отключить обновлениеКогда обе связанные книги сессию. так как решения так формулы на листе. записать в виде
- ячейке F1 данные на лист со
строк. Создадим сводныйУстановите флажок о подключении и браузере, средство просмотра всех пользователей книги.
Как обновить сводную таблицу в Excel
в группеЕсли формула является на =45. Эту связей и выдачу открыты на одномNad_Serg для единичной книгиFunction МояСуперФункция()
Подскажите, как можно
- $D7, то при в ячейке A1 сводным отчетом и отчет для выведенияОбновить все подключения другие параметры, например веб-отображает данные, либо Если отключить обновлениеПодключения
- формула массива, выделите операцию нельзя отменить, запроса, пользователи этой компьютере, связи обновляются: Сергей, я избавилась не могу сообразить,Application.Volatile
- решить данную проблему. перемещении формулы будет не меняются автоматически, щелкаем в любом
списка книг изобновить все подключения способ отображения данных,
- хранится непосредственно в связей и выдачукнопку диапазон ячеек, содержащих поэтому стоит сохранить книги не будут автоматически. Когда конечная от этой проблемы
- что мне нужно’ля-ля-ляЗаранее огромное спасибо! изменяться только номер а изменяются только
- его месте правой конкретной категории или к данным в который требуется обновить. книге, или в
запроса, пользователи этойИзменить связи
формулу массива.
- версию файла знать, что данные книга открыта, а убрав все флажки
- сделать, чтобы данные’ля-ля-ляNew строки “7”. Запись после захода в кнопкой мыши. В
определенного года. Задача книге Во время настройки
exceltable.com
Обновление данных в Excel
внешнему источнику данных, книги не будут, а затем обновитеВыбор диапазона, содержащего массив. устарели. книга-источник не открыта, (галочки) в на со всей кучиEnd Function: А версия Excel D$7 означает, что ячейку A1 вручную открывшемся меню выбираем сформулирована – перейдемВыберите команду в Excel 2010, таких как базы знать, что данные связи только с
На вкладкеНа вкладке в области сведений вкладке «защищенный просмотр»
моих файлов подгружалисьвдруг поможет какая? Пересчёт какой
при перемещении будет и нажатия Enter. «Обновить». к реализации.
Обновить выбранное подключение при публикации книги данных или в устарели. нужными исходными файлами.Щелкните любую ячейку в
ДанныеДанные о документе возможно в «параметрах безопасности» в файл-сборщик :(
Makintosh стоит? Если ручной, изменяться только символ Когда таких ячеекАктивизируем нужное поле сводногоАктивизируем любую ячейку в
для обновления определенного в Microsoft SharePoint кубе интерактивной аналитическойНа вкладкеНажмите кнопку диапазоне массив.в группев группе появление запроса на (см файл)Есть ли сравнительно: Ребята, вы просто то поставьте Автоматический. столбца “D”. Если много, то выполнение отчета – становится исходном диапазоне –
подключения для сводной Server 2010 сохраняются обработки (OLAP). ЕслиДанныеНе обновлятьНа вкладкеПодключенияПодключения обновление связей. МожноСергей простое решение? мозги. Всё помогло.В Excel 2003 же записать адрес обновления всех данных доступен инструмент «Работа щелкаем мышкой. Переходим таблицы. параметры. книгу, которую выв группе. Обратитесь к владельцуГлавнаянажмите кнопкунажмите кнопку задать режим вывода: Помогло изменение формулы.П.С. Ранее структура Добавил строчку Application.Volatile
— Сервис - в виде $D$7, вручную затруднительно. Как со сводными таблицами». на вкладку «Вставка»К началу страницыВ таблице ниже приведены используете содержит данныеПодключения
книги. Вы такжев группеИзменить связиИзменить связи этого запроса, а Вместо таблицы использовал
Не обновляются автоматически данные
таблиц была проще и всё хорошо Параметры — Вычисления то ссылка при
автометичски обновить все Открываем вкладку «Параметры». — «Таблица». НажимаемБольшой диапазон данных в краткое описание обновления из внешнего источниканажмите кнопку можете выяснить, какиеРедактирование.. также режим обновления диапазон. и для вытягивания стало. — Автоматически перемещении формулы на данные? В группе «Данные» кнопку «Сводная таблица».
таблице Excel рационально
данных, которые можно данных, вы можетеИзменить связи связи находятся внажмите кнопку
В спискеНажмите кнопку всех связей безСтарая
значений я использовалNewNew этот адрес неВаш песец нажимаем кнопку «Обновить».
Автоматически выделяется весь диапазон. представить в виде выбрать при настройке
обновить данные. Эта. книге. На вкладке
Найти и выделить
ИсточникЗапрос на обновление связей вывода запроса. КромеНовая формулу:: Мы такие )): Если Excel 2010 изменится, и в: а если простоВыделить сводную таблицу или Открывается диалоговое окно сводного отчета. Структура подключений к данным
операция извлекает самаяНажмите кнопкуДанныеи выберите команду
выберите связь, которую
. того, если книгаQuote
Quote Только учтите, что — вкладка Формулы
расчетах будут участвовать
страницу обновить, сохранив
отдельное поле, нажать
инструмента. Необходимо проверить
данного инструмента позволяет
в Microsoft Excel.
новая версия данных,
Запрос на обновление связейв группеВыделить группу ячеек требуется разорвать.Выберите нужный режим. содержит несколько связей,
200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИ(D1=»абв»;ВПР(A1;’G:ПАПКА[Какаятокнига.xlsx]Лист1′!A1:F10;2;ЛОЖЬ);ВПР(A1;’G:ПАПКА[Какаятокнига.xlsx]Лист1′!A1:F10;3;ЛОЖЬ))
200?’200px’:»+(this.scrollHeight+5)+’px’);»>=’G:ПАПКА[Какаятокнига.xlsx]Лист1′!A1
написав эту строку
— (справа вверху)
данные из ячейки
перед этим? не
сочетание клавиш Alt правильность параметров для получить быстрый доступПараметр обновления который включает в.
Подключения.Для выделения нескольких связанныхПримечание: можно обновлять толькоПолучается, что эксельИспользование этой формулы в вашей функции, Параметры вычисления - D7. Если в помогает? + F5. отчета (диапазон, куда к итогам, информацииОписание себя все изменения,Выберите нужный режим.нажмите кнопкуВ диалоговом окне объектов щелкните каждый
planetaexcel.ru
Обновление данных при открытии книги (Как взять данные из соседних книг эксель, не открывая их?)
Даже если запретить Excel некоторые из них.
не видит таблицы не требовало открытия ваша функция стала выбрать Автоматически формуле указан интервалЕвгений береговКак настроить автоматическое обновление выводить сводную таблицу). по определенному параметру.Обновить при открытии внесенные с моментаПримечание:Изменить связи
Выделить группу ячеек из них, удерживая выдавать запрос наЗакройте все книги. Если в закрытом файле, всех основных файлов. «летучей», т.е. онаR Dmitry ячеек G3:L9, то: попробуй поставить не сводной таблицы вОткрывается окно для построения Рассмотрим создание иСредство просмотра автоматическое обновление последнего обновления данных. При наличии разорванных связей.установите флажок нажатой клавишу CTRL. обновление связей, пользователь одна книга-источник будет но видит диапазоны.
П.П.С. Если решением теперь всегда будет
: может стоит включить управлять можно каждым =Ф1 а =Ф$1 Excel: отчета, список полей.
обновление сводных таблиц. внешних данных при
Узнайте об обновлении данных будет появляться оповещениеМожно ответить на запрос
Текущий массивЧтобы выделить все связи, будет получать сообщения открыта, а остальные По крайней мере
будет изменение формулы,
пересчитываться при любом автоматическое вычисления?
из четырех символов:
Алексей масловОткрыть лист со сводным В правой нижнейОптимально формировать сводный отчет открытии книги.
Параметры для обновления данных об этом.
и запретить его. нажмите клавиши CTRL+A. о наличии разорванных
закрыты, обновления не у меня. также буду благодарен. изменении на листе,New “G”, “3”, “L”
: В следующий раз
отчетом. Щелкнуть в части страницы – на основе исходнойОбновление вручную
ExcelНажмите кнопку вывод для этойНа вкладкеЩелкните элемент связей будут одинаковыми.Спасибо всем кто Может просто не в книге, в: Можно это сделать и “9”, помещая
пишите из какого любом месте таблицы области для размещения таблицы, если онаЭтот параметр применяется толькоОбновление данных из внешнегоОбновить книги в будущем.
ГлавнаяРазорвать.Откройте книгу, содержащую связи.
откликнулся!
могу сообразить чего-то.
другой открытой книги, макросом
перед ними символ офиса ексель ))) левой кнопкой мыши. данных из исходного отвечает следующим параметрам: к сводным таблицам.
источника данных. Это позволит гарантировать
excelworld.ru
Не отображать запрос и
Хитрости »
12 Январь 2023 903 просмотров
С выходом Power Query в массы все чаще стал появляться вопрос: как обновить запросы один за другим в заданном порядке?
Если еще не работали с этой надстройкой и не знаете что это такое, то для начала лучше ознакомиться со статьей: Power Query — что такое и почему её необходимо использовать в работе?
Описание проблемы
В книге может быть десять и более запросов. И только 4 из них надо обновлять постоянно, да еще и в заданном порядке. Например, у нас есть с десяток запросов по продажам, отгрузкам и прочей аналитике, но только 4 из них нам надо обновить. При этом обновить надо в строгой последовательности:
«Запрос — Отделы», «Запрос — Сотрудники», «Заказы и Продажи», «Запрос — Бюджет»
. При этом обязательно необходимо, чтобы «Запрос — Бюджет» обновился последним, т.к. он зависит от всех остальных.
Какие есть варианты решения?
- Вручную
- Кнопка Обновить все(Refresh All)
- Написать собственный порядок обновления через Visual Basic for Applications
Что еще может пригодиться в решении задачи:
- Вывести список имен имен всех подключений на лист
Обновление вручную
Можно обновить запросы стандартными методами, поочередно вручную обновляя каждый запрос. Но это не всегда удобно, особенно если запросов более 5. Значит этот вариант не разбираем в деталях в принципе — все его плюсы и минусы очевидны.
Данные -Обновить все
Кнопка Данные(Data) —Обновить все(Refresh All) не просто обновляет все без исключения запросы в книге, но и порядок запросов при этом никак не определить, следовательно мы не можем быть уверены в том, что обновление произошло именно в нужном нам порядке. Но все же не станем отбрасывать этот вариант как не рабочий — если проблема лишь в порядке обновления, то решение все же есть.
На самом деле, если мы имеем дело с Power Query, то правильнее всего выстраивать все взаимосвязи уже на стадии создания этих запросов в любом случае. Т.е. создавать их в правильной последовательности и «затягивать» данные в основной запрос в самую последнюю очередь, ориентируясь на результаты вспомогательных запросов. Это оптимальный вариант, т.к. в этом случае достаточно будет просто обновить нужный запрос, а Power Query сама определит какие вспомогательные запросы необходимо обновить для корректного результата. При этом встроенный механизм Power Query достаточно хорошо справляется с кешированием данных и даже если обновление происходит через кнопку Обновить все(Refresh All), то даже если на один и тот же вспомогательный запрос будет завязано несколько других — он будет обновлен лишь один раз, а не при обновлении каждого запроса.
Но здесь у нас опять же возникает проблема — если нам не надо обновлять все запросы в книге — как Power Query узнает, какие из них надо обновлять, а какие нет? Ответ — никак. Поэтому хоть и следует всегда стараться выстраивать цепочки взаимодействий запросов в «правильном» порядке — нашу проблему с обновлением только части запросов это никак не решит. В этом случае можно создать мастер запрос, в который просто через объединение запросов собирать все нужные. И обновление этого запроса должно инициировать обновление всех указанных в нем запросов со всеми их цепочками. Как создать подобный мастер запрос:
Все, запрос готов. Теперь достаточно обновить только его, чтобы все связанные запросы обновились. Правда, есть одна проблема: если данных много, то такой запрос их увеличит вдвое — ведь мы в один запрос собираем все остальные…
Собственный порядок обновления через Visual Basic for Applications
В решении через мастер-запрос есть одна проблема — запросы могут быть не только Power Query, но и более старых версий. Здесь вариантов вообще не остается — только Visual Basic for Applications. Да и в случае, если запросы уже созданы ранее кем-то еще или навыков создать мастер-запрос нет.
'--------------------------------------------------------------------------------------- ' Author : Щербаков Дмитрий(The_Prist) ' Профессиональная разработка приложений для MS Office любой сложности ' Проведение тренингов по MS Excel ' https://www.excel-vba.ru ' info@excel-vba.ru ' Purpose: Код обновляет поочередно указанные запросы в заданном порядке '--------------------------------------------------------------------------------------- Sub RefreshConnections() Dim oc, xQuery, aConnections, xConName Dim IsBG_Refresh As Boolean 'создаем перечисление всех запросов, которые надо обновить 'располагаем их в том порядке, в котором необходимо обновлять aConnections = Array("Запрос — Отделы", "Запрос — Сотрудники", "Заказы и Продажи", "Запрос — Бюджет") 'перебираем и обновляем все запросы поочередно For Each xConName In aConnections Set oc = ActiveWorkbook.Connections(xConName) Set xQuery = Nothing Select Case oc.Type Case Excel.XlConnectionType.xlConnectionTypeODBC Set xQuery = oc.ODBCConnection Case Excel.XlConnectionType.xlConnectionTypeOLEDB Set xQuery = oc.OLEDBConnection Case Else 'запрос выгружен в таблицу на листе If oc.Ranges.Count > 0 Then Set xQuery = oc.Ranges(1).QueryTable End If End Select 'непосредственно обновление запроса с ожиданием окончания обновления If Not xQuery Is Nothing Then 'запоминаем значение обновления в фоне для запроса IsBG_Refresh = xQuery.BackgroundQuery 'выставляем принудительно ждать завершения запроса xQuery.BackgroundQuery = False 'обновляем запрос xQuery.Refresh 'возвращаем обновление в фоне в первоначальное состояние xQuery.BackgroundQuery = IsBG_Refresh End If Next End Sub
Как использовать: Для начала надо убедиться, что разрешены макросы и при необходимости включить их: почему не работает макрос. Затем копируем код выше, из Excel переходим в редактор VBA(Alt+F11) —Insert —Module. Вставляем туда скопированный код. Теперь код можно вызывать нажатием клавиш Alt+F8 -выделяем RefreshConnections —Выполнить(Run).
Чтобы использовать приведенный код для своих запросов достаточно в строке:
aConnections = Array("Запрос — Отделы", "Запрос — Сотрудники", "Заказы и Продажи", "Запрос — Бюджет")
внутри Array() перечислить в кавычках через запятую все имена запросов, которые необходимо обновить. Перечислять надо сразу в том порядке, в котором их требуется обновлять.
Код обновляет не только запросы Power Query, но и запросы более старых версий, выгруженных просто на лист.
Что делать, если
я не знаю, как правильно называются запросы
Да, вполне логичная ситуация, когда запросов много и переписывать имя каждого запроса не такая уж простая задача. Очень легко ошибиться в имени и тогда обновления не будет. Поэтому ниже я прилагаю код, который выводит на новый лист имена всех запросов:
'--------------------------------------------------------------------------------------- ' Author : Щербаков Дмитрий(The_Prist) ' Профессиональная разработка приложений для MS Office любой сложности ' Проведение тренингов по MS Excel ' https://www.excel-vba.ru ' info@excel-vba.ru ' Purpose: Код выводит на лист все запросы в текущей книге '--------------------------------------------------------------------------------------- Sub GetAllConnections() Dim ws As Worksheet Dim lr As Long Dim oc, aList() 'создаем массив для запоминания имен всех запросов ReDim aList(1 To ActiveWorkbook.Connections.Count, 1 To 1) For Each oc In ActiveWorkbook.Connections lr = lr + 1 'увеличиваем счетчик aList(lr, 1) = oc.Name Next 'создаем новый лист, в который записываем имена всех запросов Set ws = ActiveWorkbook.Worksheets.Add(before:=ActiveWorkbook.Worksheets(1)) 'оформляем заголовок(для эстетики) ws.Cells(1, 1).Value = "Имя запроса" ws.Cells(1, 1).Font.Bold = True 'записываем имена всех запросов ws.Cells(2, 1).Resize(lr, 1).Value = aList End Sub
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Файлы к уроку:
- Для спонсоров Boosty
- Для спонсоров VK
- YouTube
- VK
Ссылка:
- Страница курса
- Плейлист YouTube
- Плейлист ВК
Описание
Мы хотим при помощи VBA обновить запросы выборочно. Напишем несколько простых VBA скриптов.
В первом скрипте мы просто научимся выводить на лист Excel названия всех подключений.
Во втором скрипте мы обновим запросы выборочно прямо в коде указав, какие запросы обновлять не нужно.
Для третьего скрипта мы предварительно создадим таблицу Excel с перечнем запросов для обновления.
Код
Код для вывода на лист Excel всех запросов в книге:
Sub ShowConnections() Dim Connection As WorkbookConnection rn = 1 For Each Connection In ThisWorkbook.Connections Range("A" & rn).Value = Connection.Name i = i + 1 Next Connection End Sub
Код для обновления запросов выборочно с указанием запросов, которые обновлять не надо:
Sub RefreshConnections() Dim Connection As WorkbookConnection For Each Connection In ThisWorkbook.Connections If Not Connection.Name = "Запрос — pop_1" Then Connection.Refresh End If Next Connection End Sub
Код, для которого мы предварительно создали таблицу с перечнем запросов к обновлению:
Sub RefreshSelectively() Dim Connection As WorkbookConnection Dim rng_Refresh As Range Set rng_Refresh = Range("Обновить_Запросы[Обновить_Запросы]") For Each Connection In ThisWorkbook.Connections If Not rng_Refresh.Find(Connection.Name) Is Nothing Then 'MsgBox rng_Refresh.Find(Connection.Name).Address Connection.Refresh End If Next Connection End Sub
Курс Power Query + VBA
Номер урока | Урок | Описание |
---|---|---|
1 | Power Query + VBA №1. Обновить запросы выборочно, обновить все запросы кроме одного | В этом уроке мы научимся выборочно обновлять запросы в книге Excel с помощью VBA. |
2 | Power Query + VBA №2. Путь к файлу папке при помощи VBA | В этом уроке вы узнаете как задать путь к файлу-источнику для Power Query при помощи VBA. |
3 | Power Query + VBA №3. Обработать и сохранить много файлов | В этом уроке вы узнаете как по очереди обработать и сохранить каждый нужный вам файл. Это еще один распространенный способ применения VBA в связке с Power Query. |
4 | Power Query + VBA №4. Обработать множество ссылок по одной | В этом уроке вы узнаете как обработать большое количество web-страниц по одной, чтобы избежать ошибок и разрывов. |
Время на прочтение
7 мин
Количество просмотров 31K
Всем привет.
Наступил новый 2016 год, а значит пора обновить инструменты для упрощения скучной механической работы. Отделы аналитики, маркетинга, продаж часто сталкиваются со следующими трудностями при обновлении отчетности:
1. Данные приходится собирать воедино из нескольких источников.
2. Отчеты составляются в Excel, что накладывает значительные ограничения на объем обрабатываемых данных.
3. Внесение изменений в заранее настроенные разработчиками выгрузки дело как правило не самое быстрое.
Если отчеты нужно обновлять еженедельно или даже ежедневно, то эта процедура становится весьма напряжной даже для самых терпеливых. С помощью надстройки Excel Power Query и записи данных в MySQL можно свести обновление большинства отчетов до простого нажатия кнопки «Обновить»:
1. Данные из любого количества источников импортируются через SQL-запросы в обычные таблицы Excel.
2. Даже из большой базы можно записывать в Excel только небольшую часть данных (например, итоговые суммы за нужный диапазон дат с группировкой только по нужным столбцам).
3. Изменения в отчет можно вносить просто поменяв SQL-запрос. Далее формируем нужный отчет стандартными средствами Excel.
В этой статье я покажу как настраивать и автоматически заполнять простые базы данных MySQL (на примере выгрузки статистики всех ключевых слов из Яндекс Метрики), а потом одной кнопкой обновлять отчеты в Excel, используя надстройку Power Query. Power Query имеет весьма странные особенности работы при составлении SQL-запросов (особенно динамических), которые мы разберем во второй части статьи.
Выбор MySQL (или любой другой популярной базы данных) вполне очевиден — бесплатно, относительно просто, возможность работать с довольно большими базами данных без технических хитростей. В качестве примера будем использовать Amazon Web Services: дешево (в большинстве случаев используемый инстанс будет бесплатен для вас в течение 12 месяцев).
Итак, начнем (если у вас уже есть базы данных с готовыми данными, то можно сразу переходить к разделу с Excel):
1. Регистрируемся на AWS (если еще нет учетки), запускаем самый простой инстанс t2.micro и заходим на него по SSH. Можно посмотреть краткую инструкцию в прошлом посте habrahabr.ru/post/265383. Обратите внимание, что нам потребуется первый в списке вариант инстанса на Amazon Linux AMI. Необходимо выставить правила, разрешающие обращение к инстансу по нужным портам:
В целях безопасности лучше выставлять ограничения на IP-адрес. Если у вас динамический IP, то это проблемная опция. Также иногда ограничение доступа к MYSQL по IP вызывает ошибку в Excel. Если выставить любой IP, то все работает.
2. Исполняем подряд команды, описанные в документации docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-ug.pdf. Нам нужна глава «Tutorial: Installing a LAMP Web Server on Amazon Linux». Запомните пароль, который вводите при выполнении команды «sudo mysql_secure_installation». Для удобства установите phpMyAdmin как описано в конце этой главы. Если будете копипастить из документации строчку «sudo sed -i -e ‘s/127.0.0.1/your_ip_address/g’ /etc/ht tpd/conf.d/phpMyAdmin.conf», то обратите внимание, что иногда при копировании в «httpd» появляется лишний пробел.
После этих действий на вашем инстансе должна открываться такая страница:
3. Заходим под пользователем root и паролем, который вводили при настройке. Для доступа к базе данных «извне» (т. е. из Excel) нам потребуется пользователь, отличный от root. Заводим его в интерфейсе phpMyAdmin в меню Пользователи —> Добавить пользователя. Добавим пользователя stats, зададим пароль и назначим ему привилегии SELECT и INSERT. Итого получим:
4. Теперь создадим базу данных data:
5. В данном примере будем наполнять базу статистикой посещений по ключевым словам из Яндекс Метрики. Для этого создадим таблицу seo (обратите внимание, что у столбца id надо отметить опцию A_I (auto increment)):
6. Для получения статистики по ключевым словам из Яндекс Метрики можно использовать следующий скрипт. В качестве параметров нужно указать начальную и конечную дату выгрузки (переменные $startDate и $endDate), авторизационный токен (в коде есть описание как его получить), номер счетчика, из которого нужно получить статистику, и параметры базы данных: ID инстанса, логин (у нас «stats»), пароль и название базы (у нас «data»). Скопируйте в корневую папку инстанса этот код и запустите командой «php seo.php».
Код PHP для выгрузки данных Яндекс Метрики
<?php
// начало и конец периода выгрузки
$startDate = '2015-10-01';
$endDate = '2015-12-31';
// токен для запросов к API Яндекс Метрики
// для получения токена создаем приложение на https://oauth.yandex.ru/
// даем приложению разрешение на чтение статистики Яндекс Метрики
// после создания берем параметр ID приложения и подставляем в конец https://oauth.yandex.ru/authorize?response_type=token&client_id=
// жмем Разрешить и получаем токен
$atoken = '';
// номер счетчика
$project = '';
// соединяемся с базой данных и проверяем все ли в порядке
$con = mysqli_connect("ec2-....compute.amazonaws.com","stats","здесь пароль", "data");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
} else {
echo "Connection successfull n";
}
if ($con->query("SET NAMES 'utf8'")) {
echo "Names set n";
} else {
printf("Error: %sn", $con->error);
exit();
}
// файл, в который записываем результаты выгрузки (в случае ошибки записи в базу данных по нему можно увидеть какая строчка записалась последней и соответственно дала ошибку)
$fname = "data.txt";
$fp = fopen($fname, "w");
fclose($fp);
function getBatch($startDate, $endDate, $project, $offset, $limit, $atoken, $fname, $con) {
// делаем запрос к API Яндекс Метрики
// документация https://tech.yandex.ru/metrika/doc/api2/api_v1/attributes/visitssource_/search-docpage/
$ch = curl_init();
$options = array(
CURLOPT_URL => 'https://api-metrika.yandex.ru/stat/v1/data?oauth_token='.$atoken.'&id='.$project.'&accuracy=full&date1='.$startDate.'&date2='.$endDate.'&dimensions=ym:s:<attribution>SearchPhrase&metrics=ym:s:visits&limit='.$limit.'&offset='.$offset,
CURLOPT_RETURNTRANSFER => TRUE
);
curl_setopt_array($ch, $options);
$data = curl_exec($ch);
curl_close($ch);
// переводим ответ запроса формата JSON в массив
$data = json_decode($data, true);
// смотрим какой ответ получили от Яндекс Метрики
//var_dump($data);
// проходим по массиву $data['data'] и записываем период выгрузки, ключевую фразу и количество визитов
for ($i=0; $i < count($data['data']); $i++) {
file_put_contents($fname, $startDate."t".$endDate."t".$data['data'][$i]['dimensions'][0]['name']."t".$data['data'][$i]['metrics'][0]."n", FILE_APPEND);
if ($con->query("INSERT INTO seo (startDate, endDate, query, visits) VALUES ('".$startDate."', '".$endDate."', '".mysqli_real_escape_string($con, substr($data['data'][$i]['dimensions'][0]['name'], 0, 255))."', ".$data['data'][$i]['metrics'][0].")")) {
//echo "Record done n";
} else {
printf("Error: %sn", $con->error);
exit();
}
}
if (count($data['data']) == 0) {
return 'done';
} else {
return 'more';
}
}
// https://tech.yandex.ru/metrika/doc/api2/api_v1/data-docpage/
// максимальное количество строк в одной таблице - 10 000
// в цикле выгружается по $limit строк, увеличивая при этом первую строчку выгрузки $offset на значение $limit
$offset = 1;
$limit = 10000;
$res = 'more';
do {
$res = getBatch($startDate, $endDate, $project, $offset, $limit, $atoken, $fname, $con);
$offset += $limit;
} while ($res == 'more');
mysqli_close($con);
Если возникнут ошибки при соединении с базой, то они отобразятся в консоли и выполнение будет прервано. В случае успешного выполнения получим статистику ключевых слов за выбранный период:
Отлично, данные получены. Посмотрим как получать их в Excel.
Использование Power Query для выгрузки данных в Excel
Power Query представляет собой надстройку, которая расширяет возможности Excel по выгрузке данных. Скачать можно тут www.microsoft.com/en-us/download/details.aspx?id=39379. Для работы с MySQL может потребоваться MySQL Connector и Visual Studio (предлагаются при установке из дистрибутива).
1. После установки выбираем MySQL:
2. В качестве базы указываем ID нашего инстанса (как было в скрипте) ec2-….compute.amazonaws.com. База данных data. Для ввода логина выбираем «База данных»:
3. В открывшемся окне дважды кликаем на таблицу seo и получаем:
В этом окне можно управлять запросами, изменяя столбцы и количество строчек. Когда база данных небольшая, то это работает. Однако если размер данных превышает даже 20MB, то Excel на большинстве компьютеров просто повиснет от такого запроса. К тому же неплохо бы менять даты запроса или другие параметры.
Динамические запросы в Power Query можно делать с помощью встроенного языка M msdn.microsoft.com/en-us/library/mt253322.aspx, однако запросы крайне неустойчивы в плане изменения каких-либо параметров в них. Чтобы запрос оставался «постоянным» сделаем следующий прием:
1. Сначала составляем таблицу, в которой указываем нужные нам параметры. В нашем примере это дата выгрузки. Формат ячеек со значениями лучше выставить как тестовый, т. к. Excel любит изменять формат ячеек по своему усмотрению:
2. Создадим запрос Power Query «Из таблицы», который будет просто дублировать эту таблицу:
3. В опциях запроса обязательно укажите формат второго столбца как Текст, иначе последующий SQL-запрос будет некорректным. Далее жмем «Закрыть и загрузить».
Итого мы получили запрос Power Query к обычной таблице, из которого будет брать значение начала и конца выгрузки.
Чтобы сделать SQL-запрос потребуется отключить одну опцию: заходим в Параметры и настройки —> Параметры запроса —> Конфиденциальность и выбираем «Игнорировать уровни конфиденциальности для возможного улучшения производительности». Жмем Ок.
4. Теперь делаем запрос к нашей базе данных, указывая в качестве начала и конца периода значения таблицы из пункта 3. Снова подключаемся к базе в Power Query и нажимаем «Расширенный редактор» в меню.
Например, мы хотим получить сумму визитов, которые принесли ключевые слова, содержащие «2015». На языке M запрос выглядит так:
let
Source = MySQL.Database("ec2-....compute.amazonaws.com", "data", [Query="select sum(visits) from seo where startDate>='"&Text.From(Таблица1{0}[Значение])&"' and endDate<='"&Text.From(Таблица1{1}[Значение])&"' and query like '%2015%';"])
in
Source
В параметрах startDate и endDate указываются значения в таблице из пункта 3. При запросе «Для выполнения этого собственного запроса к базе данных необходимы разрешения» жмем «Редактировать разрешение», проверяем, что все параметры подтянулись корректно и выполняем запрос. Теперь полученный ответ от SQL-запроса можно обработать обычными формулами Excel в привычном вам виде.
5. Важно! Когда вы будете обновлять выгрузку в следующий раз, то это приходится делать следующим способом (другие почему-то дают ошибку):
— меняем даты в таблице из пункта 1
— заходим в меню Данные —> Подключения и нажимаем «Обновить все»:
В этом случае все запросы выполнятся корректно и ваши отчеты обновятся автоматически. Итого для обновления отчета вам потребуется только изменить параметры запроса и нажать «Обновить все».