Excel -VBA + API - наиболее эффективное решение для добавления столбца и получения исторических данных из ежедневного API - PullRequest
0 голосов
/ 17 января 2020

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

Вот описание того, что я хотел бы построить.

Фактическая ситуация

Используя средство отслеживания проблем, я вызываю API и получить все данные из запроса трекера. IE, в redmine или JIRA я создаю запрос, сохраняю его, а затем через API могу импортировать данные в таблицу. Теперь все в порядке, и я создал инфографику и информационную панель, которая обновляется каждые 30 минут. Гладкий; плавный.

Evolution

Данные из API сохраняются в рабочей таблице с именем «ДАННЫЕ». Есть поле, назовите его «% Done», которое должно меняться, по крайней мере, каждый конец дня. Когда API обновляет запрос, поле корректно обновляется на рабочем листе «Данные».

Мне нужен рабочий лист, на котором из этого или другого запроса (без разницы) я получаю такой вид макета:

+---------+------------+
| issue # | 20/01/2020 |
+---------+------------+
|   23415 | 10%        |
+---------+------------+

Когда API обновляет данные, ЕСЛИ дата - новый день, вот что происходит:

+---------+------------+------------+
| issue # | 20/01/2020 | 21/01/2020 |
+---------+------------+------------+
|   23415 | 10%        | 20%        |
+---------+------------+------------+

И, очевидно, если% Done не изменяется, на третий день у меня будет таблица с:

+---------+------------+------------+------------+
| issue # | 20/01/2020 | 21/01/2020 | 22/01/2020 |
+---------+------------+------------+------------+
|   23415 | 10%        | 20%        | 20%        |
+---------+------------+------------+------------+

Дата - TODAY (), так как API вызывается один раз в день и записывается в ячейку заголовка. % Done перезагружается каждый день, и то, о чем я хотел бы поговорить, - это самый эффективный способ обновления всех записей по 20 тысяч, по 20 строк на вызов.

Любые предложения о том, как добиться наилучших результатов. больше на "архитектурной" стороне?

Спасибо всем, если вам нужна дополнительная информация, просто спросите.

CG.

1 Ответ

0 голосов
/ 17 января 2020

Каждый раз, когда VBA вызывает Excel для получения данных, возникают значительные издержки, и каждый раз, когда VBA вызывает Excel для размещения данных на листе, возникают дополнительные издержки. Поэтому наиболее эффективный способ - минимизировать количество вызовов, максимизируя объем данных, передаваемых в каждом вызове.

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

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