Можно ли индексировать столбец электронной таблицы Excel как обычный столбец таблицы базы данных? - PullRequest
3 голосов
/ 02 августа 2011

У меня есть клиент, который пытается использовать электронную таблицу Excel размером 75 МБ в качестве базы данных. Они сопротивляются, чтобы переместить это к чему-либо еще. Я не знаю, как индексировать электронную таблицу Excel, поэтому я подумал, что спросить. Я сделал гугл "index Excel", но ничего не нашел. Кажется, в Excel есть функция «index», которая не связана с индексацией базы данных (если я не читаю ее неправильно).

РЕДАКТИРОВАТЬ (дополнительная информация): Отчет Crystal подготовлен для этой электронной таблицы и содержит 40, да 40 подотчетов, причем все они относятся к одной электронной таблице с несколькими вкладками. Это безумие, но так они это разработали. Обработка занимает абсурдное количество времени, и если бы данные были проиндексированы, они все равно были бы медленными, но в 100 раз медленнее.

Ответы [ 2 ]

5 голосов
/ 02 августа 2011

Вы не можете индексировать электронную таблицу Excel. Функция = INDEX () в Excel является просто способом получения ссылки на ячейку и не имеет ничего общего с «индексом», который является определяющей функцией любой СУБД. Существуют причины, по которым системы управления базами данных являются дорогостоящими и сложными, и одна из них заключается в том, что они предоставляют возможность систематизировать данные для быстрого поиска и обработки.

Однако ваша настоящая проблема кажется скорее политической, чем технической! Я не знаю, какие у вас есть время и ресурсы, но я бы посмотрел, могли бы вы импортировать эту электронную таблицу в какую-нибудь бесплатную / дешевую базу данных (например, SQL Server Express или даже Access) и соединить макет отчета для демонстрации клиенту. Из того, что вы описываете, кажется, что они действительно не имеют представления о том, какую производительность они МОГУТ увидеть, а не о том, с чем им приходится иметь дело сейчас. Если они увидят, что часто используемый отчет создается в 50 раз быстрее, чем обычно, они могут изменить свое мнение об Excel.

2 голосов
/ 02 августа 2011

Один из вариантов, который поможет справиться с данными, - это использовать задачу SSIS для ночной записи (или некоторого интервала) данных электронной таблицы в таблицу SQL и кодировать отчет в соответствии с этим - пользователям все еще приходится обновлять электронную таблицу.и вы можете использовать некоторую производительность для отчета.

Ваша большая проблема, на мой взгляд, заключается в использовании кристалла и в два раза:

1: подотчеты будут запускаться один раз для каждой строки подробностей.происходят, так что один подотчет может выполняться десятки или сотни раз.Даже если они находятся на верхнем уровне (по одному на страницу и т. П.), Накладные расходы на эти подотчеты являются неприятными.

2: механизм Crystal не является самым быстрым способом сопоставления данных (но будетбыть единственным способом сделать это на листе Excel).

Есть несколько вещей, которые вы можете сделать с этим, но оба они требуют кучу переделок:

1: Предполагая, чтоВы можете использовать мое предложение по переносу данных в SQL, писать сохраненные процедуры для фактического создания данных отчета (сгруппированных, отсортированных, отфильтрованных и т. д.) и просто использовать Crystal для их отображения (вместо того, чтобы механизм Crystal делал все).Это должно существенно повлиять на производительность каждого отчета.

2: если у вас много отчетов с одинаковым форматированием (т. Е. 4 столбца данных и аналогичные графики), вы можете объединить их в сохраненных процессах.в 1, поэтому один сохраненный процесс возвращает данные для нескольких отчетов.Это уменьшает количество поездок и количество отчетов, которые будут обработаны.Например, ваш сохраненный процесс может вернуть набор данных, например:

ReportName    Col1Name    Col1Value    Col2Name    Col2Value
SubReport1    Name        Joe Bloggs   Orders      12
SubReport1    Name        Jane Bloggs  Orders      7
SubReport2    Product     Trousers     StockLevel  10
SubReport2    Product     Shirts       StockLevel  15

Отчет Crystal может взять этот набор данных и превратить его в подотчеты, сгруппировав по столбцу ReportName.Этот метод может усложнить применение специфичного для отчета форматирования, поэтому его необходимо делать с учетом этого.

В прошлом я использовал оба этих метода для создания отчетов, которые выполняются на несколько порядков быстрее, чем отчеты.на котором они были основаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...