В итоге решение оказалось более сложным: на бесплатной версии SQL server'a не поместились из-за ограничения в 10Гб, поэтому использован Azure с оплатой по факту потребления ресурса. В чистом виде из одной объединённой таблицы (2,7 млн строк) Select в Excel x32 не работает. Нужно Нормализовать таблицу (БД) по значимым столбцам, для каждого создавать индексы и связки для замены длинных текстовых полей короткими INT числами.
Потом выкачивать отдельные таблицы в Excel и подтягивать vlookup'ом нужные текстовые поля. Решение, но не элегантное. Особенно в связи с тем, что после добавления строк в основную таблицу всю эту работу по нормализации нужно проделывать снова.
Хорошее, годное решение - полная переработка БД и написание вьюшек и процедур. А это много работы для профессионала. Своими руками такого бегемота не вытащить.
Вот удивительно как раз то, что несмотря на (..."select * from tbl_cooltable where Id_department = 79 and date_action > '20161101' (год-месяц-день) Где выполнится запрос? На стороне сервера. Куда пойдут данные? Вызывателю. Но пойдут они уже по условию. А значит, их будет не миллион, а несколько тысяч. ") при ровно таком запросе (без индексов) Excel крутит этот чортов счётчик до двух миллионов пока не сглючит по переполнению (обнулению). Хотя по идее выдача должна быть не больше 100 строк. Нормально отрабатывает только если сделать TOP 1000. Я подозреваю, что может я драйвер (провайдер) в Excele неправильный выбрал SQL Server Data. Хотя пробовал уже и ODBC 13 и Native Client 11 - результат один ((
Ответ обязательно помечу как только допилю и допишу всю телегу чтобы если у кого возникнет задача был готовый ответ в деталях.
Вот и мне казалось что любой селект выполняется на той стороне. Но вот этот счётчик (prnt.sc/e5ic27), что крутится после создания (обновления) запроса в коннекторе Excel'я - он гад крутится до 2х млн и просит дать ему 64хразрядный офис или памяти поболе :(
Ок, пошёл строить индексы, изучать процедуры и экспериментировать. Две недели назад я вообще не представлял что такое реляционные СБУД и как работает SQL. Так что есть ещё эйриа фор импрувмент
Я правильно понял что некластерный составной индекс по трём-четырём основным полям (дата/филиал/товар) и выборка селектом именно по ним передаст работу на строну сервера? И Excel будет уже работать только с 1/100500 частью данных, приехавших с сервера результате запроса?
А количество столбцов, попавших в селект влияет на производительность? Имеет смысл экономить на столбцах (а это возможно, ибо в БД масса избыточных данных) или вся нагрузка только в строчках?
Артём, добрый день! Извините за реакцию. Вспылил, приношу извинения.
Поясните, пожалуйста, что такое Признак? Поиск по мсдн мне не помог, поэтому я его не добавил.
Запрос из Excel сделан Select column1, column2, ..., columnN FROM db.table WHERE date >= {d'xxxx-xx-xx'}
Да6 поиск идёт тупо перебором всей кучи несмотря на фильтры. Я начал подозревать необходимость создания индексов, но а) тема проектирования индекса тонкая и б) как я понял Excel всё равно будет перебирать 2,7 млн строк индекса и ему не хватит регистра в любом случае. Или это не так?
Пикаса умерла, пусть эфмр ей будет пухом. Box/dropbox etc не умеют ограничивать доступ на уровне файлов - только верхняя папка. Всё что в ней будет видно.
Собственно, вполне рабочий был бы вариант, если бы можно было ограничивать доступ в гуглодиске на уровне отдельных фалов. Но у меня не получается - если открыл доступ к папке - все вложенные наследуют права и ограничить их не получилось. Что подло. ((
Понял почему не хочу использовать Access. MS Access это всё-таки СУБД. А у меня нет баз данных. У меня есть одна база - статичная двумерная таблица данных. Просто размером немного больше обычного. Поэтому не хочется из пушки по воробьям, а хочется научиться пихать данные в одну табличку (для этого нужно снять ограничение в 1 млн строк Excel) и научиться из него вынимать отчёт фильтром по одному столбцу.
Роман, в таблице только данные, без формул.
Аксесс не пробовал, хотя наверное этим и кончится.
Над данными работаю я один.
Генерирую отчёты из каждого файла простой фильтрацией таблицы по названию филиала, потом склеиваю копипастом в новый файл. Этот файл в итоге является отчетом по одному филиалу, который чернз сводник используется для аналитики.
Иван, спасибо за идею. Я пробовал QlikView Desktop, но он заточен не под отчёт а под визуализацию (как я понял). Может порекомендовать какой продукт из их линейки подойдёт лучше? Ну и потом, в Qlik надо скармливать готовые таблицы, а их мне в Excel'e в одну не скрутить. А работать с несколькими одинаковыми по ключам как-то непонятно
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.