Экспорт больших наборов данных - PullRequest
0 голосов
/ 02 мая 2018

Я работаю в модной компании среднего размера, и у нас есть очень большой отчет, который мы экспортируем со скриптом на стороне FM-сервера, около 75 полей / 15 тыс. Записей.

У меня проблема, как вы себе представляете, - это ужасно долго! У нас есть много полей для вычисления, выполнения поиска, замены и т. Д. В сценарии перед экспортом, чтобы каждый день создавать и обновлять отчет новыми данными, я должен также отметить, что в других таблицах содержится много связанных данных из других таблиц. экспорт.

Я прекрасно осознаю, что это не будет быстрый экспорт, однако, если у кого-нибудь есть какие-либо советы о том, как минимизировать время экспорта, я был бы очень признателен. В настоящее время мы экспортируем в формате CSV, так, например, будет ли XLSX быстрее?

Любой совет о том, как ускорить это, был бы очень кстати!

Спасибо - S

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Вероятно, причиной медленного экспорта являются связанные поля и любые несохраненные вычисления, которые вы экспортируете. Вы можете обойти это, используя кэшированные поля, несвязанные, неисчисляемые поля, которые обновляются непосредственно перед экспортом с помощью различных шагов сценария Replace Field Contents, выполняемых на сервере.

Разделите скрипт на три скрипта: Find Records to Export, Update Caches и Export Report. Они бы выглядели примерно так:

Find Records to Export

Go to Layout [ "LayoutWithFieldsToReplace" ]
Enter Find Mode [ Pause: Off ]
Set Field [ TABLE::field ; // find criterion for this field ]
Set Field [ ...
Set Error Capture [ On ]
Perform Find []

Update Caches

Perform Script [ Find Records to Export ]
Replace Field Contents [ TABLE::cache_1 ; RELATED::field ]
Replace Field Contents [ TABLE::cache_2 ; TABLE::unstored_calc ]
Replace Field Contents [ ...

Export Report

Perform Script on Server [ Update Caches ]
Perform Script [ Find Records to Export ]
Export Records [ ...

Я не уверен, что FileMaker изменился на требование, но я думаю, поля, которые необходимо заменить, содержимое должно быть в макете во время замены. Поэтому убедитесь, что макет, к которому вы переходите, имеет их, в приведенном выше сценарии они будут TABLE::cache_1 и TABLE::cache_2.

0 голосов
/ 02 мая 2018

Немного общего вопроса, вероятно, лучше подходящего для форума пользователей FileMaker.

15k не так много записей даже для FileMaker.

CSV будет быстрее, чем экспорт в Excel, но я не думаю, что это ваша проблема

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

...