uploaded/entered 聚合报告的物理存储在 DHIS2 中的时间戳在哪里?如何从中提取时间戳数据?

Where is the time stamp for uploaded/entered aggregate reports physically stored in DHIS2 and how do I pull the time stamp data from it?

我一直试图在 dhis2 中找到存储上传汇总报告时间戳的 table。我需要该数据用于我使用 SQL 视图创建的报告。我设法找到了一个名为 datavalueaudit 的 table,它有一个时间戳列,但我尝试的每个查询都会提取构成聚合报告的数据元素的时间戳。我仍然是 sql 和 dhis2 的新手,所以我不知道如何解决这个问题。 我正在尝试修改一个我有点理解但仍然觉得有点复杂的查询

以下为查询原文

SELECT DISTINCT p.startdate, prov.name 作为省份, par.name 作为酋长国, ou.name 作为村庄, regexp_replace(ou.phonenumber, '+260', '0'), CASE WHEN b.reported IS NULL THEN 0::integer ELSE 1::integer END AS reported FROM datasetsource 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 LIMIT 12) p LEFT JOIN (SELECT DISTINCT dv.sourceid, dv.periodid, TRUE AS reported FROM datavalue dv INNER 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 LIMIT 12) a ON dv.periodid = a.periodid WHERE dv.dataelementid IN (SELECT DISTINCT dataelementid FROM datasetmembers WHERE datasetid = (SELECT datasetid FROM dataset WHERE uid = 'Hbcr2fLc9jM'))) b ON b.sourceid = dss.sourceid AND b.periodid = p.periodid INNER JOIN organizationunit ou ON dss.sourceid = ou.organisationunitid INNER JOIN organizationunit par ON ou.parentid = [=5 7=] INNER JOIN organizationunit prov ON par.parentid = prov.organisationunitid INNER JOIN _periodstructure ps ON p.periodid = ps.periodid WHERE dss.datasetid = (SELECT datasetid FROM dataset WHERE uid = 'Hbcr2fLc9jM') ORDER BY prov.name, par.name, ou.name, p.startdate

排序

以下是我尝试修改的

SELECT DISTINCT p.startdate, prov.name 作为省份, par.name 作为酋长国, ou.name 作为村庄, regexp_replace(ou.phonenumber, '+260', '0'), CASE WHEN b.reported IS NULL THEN 0::integer ELSE 1::integer END AS reported, dva.timestamp AS "Reports On Time" FROM数据集源 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 LEFT JOIN (SELECT DISTINCT dv.sourceid, dv.periodid, TRUE AS reported FROM datavalue dv INNER 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 LIMIT 12) a ON dv.periodid = a.periodid WHERE dv.dataelementid IN (SELECT DISTINCT dataelementid FROM datasetmembers WHERE datasetid = (SELECT datasetid FROM dataset WHERE uid = 'Hbcr2fLc9jM'))) b ON b.sourceid = dss.sourceid AND b.periodid = p.periodid LEFT JOIN ( SELECT DISTINCT dv.timestamp, dv.periodid, TRUE AS reported FROM datavalueaud它 dv INNER 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) a ON dv.periodid = a.periodid WHERE dv.dataelementid IN (SELECT DISTINCT MAX(dataelementid) FROM datasetmembers WHERE datasetid = '29827' GROUP BY datasetid)) k ON k.periodid = p.periodid INNER JOIN organizationunit ou ON dss.sourceid = ou.organisationunitid LEFT JOIN datavalueaudit dv ON dss.sourceid = dv.organisationunitid INNER JOIN datavalueaudit dva ON k.timestamp = dva.timestamp INNER JOIN organizationunit par ON ou.parentid = par.organisationunitid INNER JOIN organizationunit prov ON par.parentid = prov.organisationunitid INNER JOIN _periodstructure ps ON p.periodid = ps.periodid WHERE dss.datasetid = (SELECT datasetid FROM dataset WHERE uid = 'Hbcr2fLc9jM') ORDER BY prov.name, par.name, ou.name、p.startdate、dva.timestamp

我尝试修改的查询仅提取已完成汇总报告数据集中所有数据元素上传时间的时间戳,而不是仅提取已完成汇总报告上传时间的时间戳

我想添加一个新列,从存储它的 table 中提取时间戳数据,但仅在已上传完整的汇总报告*(记录)时使用。

DHIS 2 中没有汇总报告的直接概念。查看 datavaluecreated 列 table 会给你一个近似值。如果您的数据上传客户端使用 数据值集 并将 completed 属性 设置为 true , 有效地创建了一个完整的数据集注册,你可以查询completedatasetregistration table 的记录。