← Back to team overview

dhis2-devs team mailing list archive

Re: Bulk Deletion of Data

 

Hi Morten,

Thanks for the info regarding events, we'll give it a try.

As for datasets / data values I tried it with "Accept: text/plain" and it
now works, thanks. Please let me know if that header requirement is going
to change.

Cheers,

Lorill

On Tue, Oct 27, 2015 at 9:30 PM, Morten Olav Hansen <mortenoh@xxxxxxxxx>
wrote:

> With blueprint #1
>>
>> https://blueprints.launchpad.net/dhis2/+spec/webapi-bulk-deletion-of-tracker-objects
>> it doesn't mention the deletion of the data values itself. Would the
>> deletion of events via the web api also cascade delete the underlying data
>> values?
>>
>
> Yes, it should work that way. What you do is this (for events)
> { "events": [
>   { "event": "id1" },
>   { "event": "id2" }
> ] }
>
> Then send with
> curl -u user:pass -X POST -d @events.json -H "Content-Type:
> application/json" http://server:port/api/events?strategy=DELETE
>
>
>> Alternately, how would I delete single tracked entity data values via the
>> web API? I can't seem to find any API call specifically for these values.
>>
>
> curl -X DELETE -u user:pass http://server:port/api/events/ID should work
>
>
>> And for datasets, I have tried sending a delete request for a specific
>> data value but I get a 406. Not sure if I am doing something wrong? I've
>> pasted my curl and results below for both GET and DELETE.
>>
>
> I'm not sure exactly why we have this requirement, but you need to use -H
> "Accept: text/plain" (with curl), I will look into it..
>
> --
> Morten
>
>
>>
>> Thanks,
>>
>> Lorill
>>
>> curl "
>> http://localhost:8090/dhis/api/dataValues?de=YBl3JnHlR5F&pe=2015&ou=qubeTudDNSC";
>> -X GET -u admin:district -v
>>
>> *   Trying ::1...
>>
>> * Connected to localhost (::1) port 8090 (#0)
>>
>> * Server auth using Basic with user 'admin'
>>
>> > GET /dhis/api/dataValues?de=YBl3JnHlR5F&pe=2015&ou=qubeTudDNSC HTTP/1.1
>>
>> > Host: localhost:8090
>>
>> > Authorization: Basic YWRtaW46ZGlzdHJpY3Q=
>>
>> > User-Agent: curl/7.43.0
>>
>> > Accept: */*
>>
>> >
>>
>> < HTTP/1.1 200 OK
>>
>> < Server: Apache-Coyote/1.1
>>
>> < X-XSS-Protection: 1; mode=block
>>
>> < X-Frame-Options: DENY
>>
>> < X-Content-Type-Options: nosniff
>>
>> < Set-Cookie: JSESSIONID=3F51C4A3F10135A648E45BAF42818AB7; Path=/dhis/;
>> HttpOnly
>>
>> < ETag: "0ab3ca659aa5fc585fa72c6474d6b21df"
>>
>> < Content-Type: application/json;charset=UTF-8
>>
>> < Content-Language: en-US
>>
>> < Content-Length: 10
>>
>> < Date: Tue, 27 Oct 2015 19:16:29 GMT
>>
>> <
>>
>> * Connection #0 to host localhost left intact
>>
>> ["396411"]
>>
>> -----------
>>
>> curl "
>> http://localhost:8090/dhis/api/dataValues?de=YBl3JnHlR5F&pe=2015&ou=qubeTudDNSC";
>> -X DELETE -u admin:district -v
>>
>> *   Trying ::1...
>>
>> * Connected to localhost (::1) port 8090 (#0)
>>
>> * Server auth using Basic with user 'admin'
>>
>> > DELETE /dhis/api/dataValues?de=YBl3JnHlR5F&pe=2015&ou=qubeTudDNSC
>> HTTP/1.1
>>
>> > Host: localhost:8090
>>
>> > Authorization: Basic YWRtaW46ZGlzdHJpY3Q=
>>
>> > User-Agent: curl/7.43.0
>>
>> > Accept: */*
>>
>> >
>>
>> < HTTP/1.1 406 Not Acceptable
>>
>> < Server: Apache-Coyote/1.1
>>
>> < X-XSS-Protection: 1; mode=block
>>
>> < X-Frame-Options: DENY
>>
>> < X-Content-Type-Options: nosniff
>>
>> < Set-Cookie: JSESSIONID=10438B228DF6F9FEF289CA05A3E9CA5F; Path=/dhis/;
>> HttpOnly
>>
>> < Content-Type: text/html;charset=utf-8
>>
>> < Content-Language: en
>>
>> < Content-Length: 1110
>>
>> < Date: Tue, 27 Oct 2015 19:16:35 GMT
>>
>> <
>>
>> * Connection #0 to host localhost left intact
>>
>> <!DOCTYPE html><html><head><title>Apache Tomcat/8.0.21 - Error
>> report</title><style type="text/css">H1
>> {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
>> H2
>> {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;}
>> H3
>> {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;}
>> BODY
>> {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B
>> {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;}
>> P
>> {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A
>> {color : black;}A.name {color : black;}.line {height: 1px;
>> background-color: #525D76; border: none;}</style> </head><body><h1>HTTP
>> Status 406 - </h1><div class="line"></div><p><b>type</b> Status
>> report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The
>> resource identified by this request is only capable of generating responses
>> with characteristics not acceptable according to the request "accept"
>> headers.</u></p><hr class="line"><h3>Apache Tomcat/8.0.21</h3></body></html>
>>
>>
>>
>> On Tue, Oct 27, 2015 at 1:07 AM, Morten Olav Hansen <mortenoh@xxxxxxxxx>
>> wrote:
>>
>>> Just FYI, we have two blueprints related to this in 2.22, [1] is
>>> implemented already and [2] will hopefully come (but we are still
>>> discussing implementation details for that one)
>>>
>>> [1]
>>> https://blueprints.launchpad.net/dhis2/+spec/webapi-bulk-deletion-of-tracker-objects
>>> [2] https://blueprints.launchpad.net/dhis2/+spec/soft-event-delete
>>>
>>> --
>>> Morten
>>>
>>> On Tue, Oct 27, 2015 at 4:01 PM, Knut Staring <knutst@xxxxxxxxx> wrote:
>>>
>>>> My interpretation was that they would like a flag on each datavalue to
>>>> say whether it is still current - which I guess would require an extension
>>>> of that table. However, we do have something akin to this, namely the audit
>>>> functionality, which preserves the history of earlier (overwritten) values
>>>> - perhaps that could be leveraged?
>>>>
>>>> Knut
>>>>
>>>> On Tue, Oct 27, 2015 at 5:50 AM, Jason Pickering <
>>>> jason.p.pickering@xxxxxxxxx> wrote:
>>>>
>>>>> Hi Aaron,
>>>>>
>>>>> There is no "soft delete" function, if that is what you are after, but
>>>>> it has been discussed.
>>>>>
>>>>> Although there is no direct way as Lars points out, if you know what
>>>>> you wish to delete, it is still possible.  Namely, if you transmit a ""
>>>>> value for the value which you wish to delete, it will be deleted. Thus, if
>>>>> you wish to delete all values for a given dataset/OU/period, you can get
>>>>> all of the values from the API, then set them all to "", and upload the
>>>>> data again.  I think you can also use the DELETE verb as documented here (
>>>>> https://www.dhis2.org/doc/snapshot/en/developer/html/ch01s12.html) to
>>>>> delete a value.
>>>>>
>>>>>
>>>>> Not sure if that is the functionality you are after though. Typically,
>>>>> this would be a DB admin's role though and would be done with SQL, if you
>>>>> are say, going to delete ALL values for a large part of the hierarchy. The
>>>>> possibility for a whoopsie-moment could be large here.
>>>>>
>>>>> Regards,
>>>>> Jason
>>>>>
>>>>>
>>>>> On Mon, Oct 26, 2015 at 10:37 PM, Aaron Gladders <agladders@xxxxxxxxxx
>>>>> > wrote:
>>>>>
>>>>>> Hi Lars - is there a recommended approach to "deactive" data without
>>>>>> getting into the database itself?  If not is it worth setting up a
>>>>>> blueprint for it?  We may have a group interested in funding that
>>>>>> development.
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Aaron
>>>>>>
>>>>>> On Thu, Sep 24, 2015 at 2:39 PM, Lars Helge Øverland <
>>>>>> larshelge@xxxxxxxxx> wrote:
>>>>>>
>>>>>>> Hi Lorill,
>>>>>>>
>>>>>>> sorry but at the moment there is no such option. So far we have
>>>>>>> decided not to open up for this to prevent mishaps.
>>>>>>>
>>>>>>> regards,
>>>>>>>
>>>>>>> Lars
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Sep 24, 2015 at 11:37 PM, Lorill Crees <lcrees@xxxxxxxxxx>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Just following up on this. Any ideas on the best way to
>>>>>>>> programatically bulk delete data values?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>> Lorill
>>>>>>>>
>>>>>>>> On Tue, Sep 15, 2015 at 1:04 PM, Lorill Crees <lcrees@xxxxxxxxxx>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I seem to remember a prior thread on this but I can't seem to find
>>>>>>>>> it. We want to be able to programatically bulk delete data values (both
>>>>>>>>> aggregate and program/program stage data) via the Web API. Is there a way
>>>>>>>>> to achieve this?
>>>>>>>>>
>>>>>>>>> We don't want to have to do this on a sql level directly via the
>>>>>>>>> database, nor do we want to have to loop through individual data points in
>>>>>>>>> order to delete them.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>>
>>>>>>>>> Lorill
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Mailing list: https://launchpad.net/~dhis2-devs
>>>>>> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>>>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Jason P. Pickering
>>>>> email: jason.p.pickering@xxxxxxxxx
>>>>> tel:+46764147049
>>>>>
>>>>> _______________________________________________
>>>>> Mailing list: https://launchpad.net/~dhis2-devs
>>>>> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Knut Staring
>>>> Dept. of Informatics, University of Oslo
>>>> Norway: +4791880522
>>>> Skype: knutstar
>>>> http://dhis2.org
>>>>
>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~dhis2-devs
>>>> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>>> More help   : https://help.launchpad.net/ListHelp
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~dhis2-devs
>>> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>> More help   : https://help.launchpad.net/ListHelp
>>>
>>>
>>
>

Follow ups

References