Где находится отметка времени для загруженных / введенных сводных отчетов, физически хранящихся в DHIS2, и как мне извлечь из них данные отметки времени?
Я пытался найти таблицу, в которой хранится метка времени для загруженного сводного отчета в dhis2. Мне нужны эти данные для отчета, который я создаю, используя представление SQL. Мне удалось найти таблицу с именем datavalueaudit, в которой есть столбец отметки времени, но при каждом попытке выполнить запрос извлекает отметку времени для элементов данных, составляющих сводный отчет. Я все еще новичок в sql и dhis2, поэтому я не знаю, как решить проблему. Я пытаюсь изменить запрос, который я вроде понимаю, но все еще нахожу довольно сложным
Ниже приведен оригинальный запрос
ВЫБЕРИТЕ DISTINCT p.startdate, имя провайдера AS провинция, имя пароли AS cheifdom, ou.name AS деревня, regexp_replace(ou.phonenumber, '+260', '0'), случай, когда b.reported имеет значение NULL THEN 0::integer ELSE 1::integer END как сообщается из источника данных dss CROSS JOIN (SELECT DISTINCT periodid, startdate FROM period WHERE startdate <= now() AND periodtypeid = (SELECT periodtypeid FROM periodtype WHERE name ='Monthly') ORDER BY startdate DESC OFFSET 1 ОГРАНИЧЕНИЕ 12) p СЛЕДУЮЩЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ DISTINCT dv.sourceid, dv.periodid, ИСТИНА, о котором сообщается из значения dv INNER JOIN JOIN (ВЫБРАТЬ DISTINCT periodid, startdate ОТ периода WHERE startdate <= now () И periodtypeid = (ВЫБРАТЬ periodtypeid ОТ периодного типа WHERE) name ='Monthly') ORDER BY startdate DESC OFFSET 1 LIMIT 12) a ON dv.periodid = a.periodid WHERE dv.dataelementid IN (ВЫБРАТЬ DISTINCT dataelementid ИЗ наборов данных WHERE datasetid = (ВЫБРАТЬ datased ИЗ HOMET WHITE))) b ON b.sourceid = dss.sourceid AND b.periodid = p.periodid ВНУТРЕННЕЕ СОЕДИНЕНИЕ или подразделение ou ON dss.sourceid = ou.organisationunitid ВНУТРЕННЯЯ ПОДКЛЮЧЕНИЕ организационная единица par ON ou.parentid = par.organisationunitid INNER ПРИСОЕДИНИТЬСЯ к организационному блоку prov ON par.parentid = prov.organisationunitid INNER JOIN _ _Периодическая структура ps ON p.periodidatER = (ВЫБЕРИТЕ набор данных ИЗ набора данных, ГДЕ uid = 'Hbcr2fLc9jM') ЗАКАЗАТЬ ПО prov.name, par.name, ou.name, p.startdate
Вот тот, который я пытался изменить
ВЫБЕРИТЕ DISTINCT p.startdate, имя провайдера AS провинция, имя пароли AS cheifdom, ou.name AS деревня, regexp_replace(ou.phonenumber, '+260', '0'), случай, когда b.reported имеет значение NULL THEN 0:: целое число ELSE 1:: целое число END, как сообщается, dva.timestamp AS "Отчеты о времени" из источника данных dss CROSS JOIN (SELECT DISTINCT periodid, startdate FROM period WHERE startdate <= now () И periodtypeid = (SELECT periodtypeid FROM periodtype WHERE name = 'Ежемесячно') ORDER BY startdate DESC OFFSET 1 LIMIT 12) p СЛЕВОЕ СОЕДИНЕНИЕ (ВЫБЕРИТЕ DISTINCT dv.sourceid, dv.periodid, TRUE AS сообщает из значения dv INNER JOIN (ВЫБЕРИТЕ DISTINCT periodid, startdate ОТ периода WHERE startdate <= сейчас () AND periodtypeid = (ВЫБЕРИТЕ periodtypeid ОТ ОТ тип_ периода WHERE name ='Monthly') ORDER BY startdate DESC OFFSET 1 LIMIT 12) a ON dv.periodid = a.periodid WHERE dv.dataelementid IN (ВЫБЕРИТЕ DISTINCT dataelementid ИЗ набора данных WHER = набор данных ИЗ набора данных, ГДЕ uid = 'Hbcr2fLc9jM'))) b ON b.sourceid = dss.sourceid AND b.periodid = p.periodid LEFT JOIN (ВЫБЕРИТЕ DISTINCT dv.timestamp, dv.periodid, TRUE AS сообщил об этом из datavalueaudit dv INNER JOIN (SELECT DISTINCT periodid, начальная дата из периода ГДЕ startdate <= сейчас () И periodtypeid = (ВЫБРАТЬ periodtypeid FR = SELECT periodtypeid FR WHERE name ='Monthly') ORDER BY startdate DESC OFFSET 1 LIMIT 12) a ON dv.periodid = a.periodid WHERE dv.dataelementid IN (ВЫБРАТЬ DISTINCT MAX(dataelementid) ИЗ наборов данных WHERE datasetidd = '29827') ГРУППА k ON k.periodid = p.periodid ВНУТРЕННЯЯ ПОДКЛЮЧИТЕЛЬНАЯ ОРГАНИЗАЦИЯ ВНУТРЕННЯЯ СТРАНИЦА = ВНУТРЕННЯЯ СТРАНИЦА = dv.time ou.parentid = par.organisationunitid INNER JOIN организационная единица prov ON par.parentid = prov.organisationunitid INNER JOIN _periodstructure ps ON p.periodid = ps.periodid ГДЕ dss.datasetid = (ВЫБЕРИТЕ набор данных ОТ набора данных ГДЕ НАЙДЕТСЯ = ГДЕ НАЙДЕТСЯ) RDER BY имя провайдера, имя парня, имя ou.name, p.startdate, dva.timestamp
Запрос, который я пытался изменить, извлекает только отметку времени, когда все элементы данных в наборе данных завершенного сводного отчета были загружены, а не отметку времени, когда загружался только завершенный сводный отчет.
Я хотел бы добавить новый столбец, который извлекает данные метки времени из таблицы, в которой они хранятся, но только для тех случаев, когда завершенный агрегированный отчет *(запись) был загружен.
1 ответ
В DHIS 2 отсутствует прямое представление о сводном отчете. Глядя на созданный столбец таблицы значений, вы получите приблизительное значение. Если ваш клиент для загрузки данных использует наборы значений данных и устанавливает для завершенного свойства значение true, эффективно создавая регистрацию полного набора данных, вы можете запросить в таблице завершенных наборов регистрации записи.