Excel продуктивність: Пошук Vs Getpivotdata


2

Я будую таблицю Excel 2007, яка містить більшу таблицю з вихідними даними (близько 500 000 рядків і 10 стовпців). Мені потрібно витягти дані з цієї великої таблиці для мого аналізу. Для вилучення та об'єднання даних я зазвичай використовую sumif, vlookup / hlookup та index + match functions.

Нещодавно я дізнався про існування функції getpivotdata, яка дозволяє витягувати дані з зведеної таблиці. Щоб мати можливість використовувати його, мені спочатку потрібно перетворити велику таблицю джерела на зведену таблицю, після чого я можу витягти дані за допомогою функції getpivotdata.

Чи очікується поліпшення продуктивності, якщо я використовую getpivotdata для вилучення та збору даних? Я б очікував, що в межах основного об'єкта зведеного значення попередньо обчислюються, а отже, продуктивність буде кращою.

Якщо ефективність буде кращою, чи є підстави не слідувати такому підходу? Щоб було зрозуміло, немає необхідності оновлювати зведену таблицю, оскільки вона містить вихідні дані (які знаходяться на початку ланцюжка обчислення).

Відповіді:


2

Я зробив кілька тестів продуктивності на двоядерних 2.33 ГГц 2 ГБ ОЗУ настільних ПК з Excel 2007.

Пошук здійснювався на столі з 241 тис. Записів. Результати (найшвидший перший і найповільніший останній):

  1. З індекс-матч функція на відсортованого списку кількість пошуків за секунду: 180,000 !! (засновано на 1440 000 запитів за 8 секунд). Більш детальну інформацію про те, як реалізувати відсортовані пошуки в Excel, можна знайти тут і прокрутіть вниз до розділу INDEX-MATCH в одній формулі, відсортовані дані

  2. З getpivotdata функція кількість пошуків в секунду: 6000 (на основі 250 000 запитів за 40 секунд)

  3. З getpivotdata Функція використання дуже гнучка Синтаксис рядка аргументів (подивитися тут ) кількість запитів у секунду: 2000 (на основі 250 000 запитів за 145 секунд)

  4. З індекс-матч функція на несортований список кількість пошуків за секунду: 500 (на основі 20 000 запитів за 35 секунд)

Результати не змінюються, коли функція пошуку відноситься до a Таблиця даних замість іменного діапазону.

Отже, відповісти на питання. Пошук за допомогою getpivotdata приблизно в 10 разів перевищує регулярний пошук за індексом, але найкраще підвищення продуктивності досягається шляхом сортування вихідних даних. Сортування вихідних даних може зробити ваш пошук 400 разів швидшим.



0

Використання GetPivotData дає вам доступ лише до будь-яких відомостей у звіті зведеної таблиці. Якщо ви єдиний користувач цієї електронної таблиці, то це може бути доцільним для вас.

Якщо ви можете створити Pivot для більшості зведених для вас агрегатів, скористайтеся GetPivotData швидше.

Я не перевірив продуктивність GetPivotData, але очікував би, що він буде повільнішим, ніж Binary Search Lookup / Match на сортованих даних.


Стержень буде розроблений таким чином, що він виглядатиме ідентично вихідним даним, отже 500000 рядків (приховуючи всі проміжні підсумки) і розміщувати всі 9 розмірів у розділі рядків, за винятком стовпця даних, який буде розміщено в розділі даних зведеного звіту.

2
Якщо Pivot не робить жодного з агрегатів для вас, я очікую, що GetPivotData буде повільнішим, тому що він повинен робити більше роботи: але це лише припущення: я насправді не перевіряв.

Я припускаю, що півот має робити тільки агрегації тільки після оновлення, і оскільки мої базові дані фіксуються, я не перейду до оновлення. Я використовую функцію GetPivotData лише для пошуку.
Ruut

0

У мене є щоденна проблема. Велика кількість рядків у декількох таблицях даних в Excel.

В даний час єдиним рішенням, що дозволяє використовувати надзвичайно великі таблиці, є експорт їх до сервера бази даних і виконання / запису Запити SQL робити Sumif, Vlookups і агрегацію

Ви можете використовувати excel для створення Запити SQL

Протягом багатьох років я експортував аркуші / таблиці до " MySQL "і" MS SQL Server express " а потім підключитися до них з Excel і написати Запити SQL

Сервер робить обробку швидше, ніж Excel і якщо база даних знаходиться на іншому сервері, продуктивність зростає, оскільки не використовує ресурси вашого комп'ютера для виконання розрахунків.

Існують й інші переваги цього рішення.

Люблю Автоматизація ETL і Спільний доступ до рядка підключення, а не "BIG" таблиці.


Іншими словами: речі працюють краще, якщо ви використовуєте правильний інструмент (БД) для правильної ситуації (велика кількість даних, які потрібно запитувати).
Hennes

Я дуже добре знайомий з ODBC посиланнями на зовнішні бази даних з Excel. У цьому випадку я хотів би мати окрему систему на основі Excel, і я шукаю найбільш ефективне рішення.
Ruut
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.