У меня есть 7 сводных таблиц по одной на каждый день недели.
txn_summary_monday ... txn_summary_tuesday и так далее ...
Транзакция хранилища таблиц рассчитывается для каждой даты (каждый понедельник, каждый вторник ... и т. Д.), Местоположения, пользователя, ресурса и т. Д.
вот пример домена для таблицы
class TxnSummFri {
Long id
Transaction trans
Users guser
Resources gresource
Integer txnCount
Date currentdate
String accountid
}
Мне нужно получить общее количество по местоположению в диапазоне дат ... (таким образом, это будет сумма всех отдельных подсчетов в таблицах по местоположению в каждой таблице и затем снова сумма по этому подсчету по местоположению для всех таблиц).
Еще одна вещь - мне нужно будет выполнить левое соединение вместо внутренних объединений в сводных таблицах, так как я хочу, чтобы все возможные местоположения в 7 таблицах в окончательном списке. (в некоторых таблицах могут отсутствовать некоторые местоположения).
Как мне написать приведенный выше запрос в спящем режиме ... У меня есть сводные таблицы в качестве объектов домена в моем приложении.
Приложение основано на Grails / Groovy.
Вот то, что я написал до сих пор ... получаю подсчеты по местоположениям для каждой таблицы, чтобы теперь суммировать их по местоположениям ..
def SummTblList = ['TxnSummMon','TxnSummTue','TxnSummWed','TxnSummThu','TxnSummFri','TxnSummSat','TxnSummSun']
def res_row
def resourceInstance=Resources.get(Long.parseLong(res_id))
SummTblList.each{
res_row=it.createCriteria().get {
eq('resource',resourceInstance)
between('date', new Date()-31, new Date())
projections {
sum('actioncount')
groupProperty 'location'
}
}
Что-то о требованиях к нашей схеме (не относится к вышеупомянутому):
В основном у меня есть все виды запросов к таблице пользовательских транзакций ... для агрегирования по транзакциям, пользователям, ресурсам, по датам, по пользователям, по ресурсам, местоположению. Я делаю эти запросы для запуска диаграмм, используя fusioncharts - инструмент на основе flash, запускаю отчеты с использованием отчетов jasper и общего поиска в пользовательском интерфейсе.
Ранее мы использовали одну таблицу, но для создания отчетов об активности пользователей за последние 7 дней для 4 из 4 ресурсов требуется 60 секунд ... Я просто хочу сделать ее как минимум в 20 раз быстрее.
Заранее спасибо,
Priyank