Nuo ko pradėti

Pavyzdžiai

Kopijuojami sprendimai užduotims, kurias žmonės iš tikrųjų atlieka su Duomenų API – skaičiavimas, filtravimas, puslapiavimas ir eksportas.

Atnaujinta

Trumpi, veikiantys atsakymai į dažnus klausimus – visi su gyva pavyzdine lentele mirusiuju_toksikologinis_rezultatas vardų erdvėje 111958286. Įrašykite savo vardų erdvę ir lentelę, ir jie veiks toliau.

Suskaičiuoti, kiek eilučių atitinka – jų neatsisiunčiant

Paprašykite vienos eilutės ir perskaitykite total; jis atspindi filtruotą rinkinį, todėl tai pigiausias būdas įvertinti užklausos dydį.

curl -s -X POST 'https://api.dataportal.gov.lt/namespaces/111958286/tables/mirusiuju_toksikologinis_rezultatas/query' \
  -H 'Content-Type: application/json' \
  -d '{"filter":"lytis=Moteris","limit":1}' | jq '.total'

Gauti tik reikiamus stulpelius

curl -X POST '…/query' -H 'Content-Type: application/json' \
  -d '{"select":"lytis,mirties_metai,pavadinimas","limit":20}'

Trys filtravimo būdai

# Tiksli atitiktis
-d '{"filter":"lytis=Moteris"}'

# Intervalas – mirtys nuo 2018 m.
-d '{"filter":"mirties_metai._ge=2018"}'

# Yra tarp – medžiagos pavadinime yra „Etan"
-d '{"filter":"pavadinimas._co=Etan"}'

Sujungti sąlygas (IR / ARBA)

Junkite sąlygas filter eilutėje su &; kiekviena papildoma pagal nutylėjimą yra _and, arba prieš ją rašykite _or., kad gautumėte disjunkciją.

# Nuo 2018 m. IR moteris
-d '{"filter":"mirties_metai._ge=2018&_and.lytis=Moteris"}'

# moteris ARBA vyras
-d '{"filter":"lytis=Moteris&_or.lytis=Vyras"}'

Naujausios viršuje

curl -X POST '…/query' -H 'Content-Type: application/json' \
  -d '{"sort":"-mirties_metai","limit":10}'

Pereiti visą lentelę puslapiais

Visada pridėkite pastovų sort (pvz., _id), kad poslinkio puslapiavimas nepraleistų ir nepakartotų eilučių. Sustokite, kai puslapis grąžina mažiau nei limit eilučių.

import requests

URL = "https://api.dataportal.gov.lt/namespaces/111958286/tables/mirusiuju_toksikologinis_rezultatas/query"
limit, offset = 1000, 0
rows = []
while True:
    page = requests.post(URL, json={"limit": limit, "offset": offset, "sort": "_id"}).json()["data"]
    rows += page
    if len(page) < limit:
        break
    offset += limit
print(len(rows), "eilučių iš viso")

Reikia visko? Geriau eksportuokite.

Norėdami viso rinkinio, iš viso nepuslapiuokite – eksporto galinis taškas pateikia visą rezultatų rinkinį viena užklausa.

Eksportuoti visą lentelę į Excel

xlsx ribojamas iki 1 000 000 eilučių; didesnes lenteles filtruokite arba naudokite limit.

curl -L -o toksikologija.xlsx \
  -X POST 'https://api.dataportal.gov.lt/namespaces/111958286/tables/mirusiuju_toksikologinis_rezultatas/export?format=xlsx' \
  -H 'Content-Type: application/json' -d '{}'

Eksportuoti tik filtruotą dalį

Eksportas naudoja tą patį užklausos kūną, todėl bet kurią užklausą galima eksportuoti:

curl -L -o moterys.csv \
  -X POST '…/export?format=csv' -H 'Content-Type: application/json' \
  -d '{"select":"lytis,mirties_metai,pavadinimas","filter":"lytis=Moteris"}'

Atsisiųsti saugomą failą

curl -L -O 'https://api.dataportal.gov.lt/namespaces/{namespace}/files/report.pdf'

Taip pat žiūrėkite

Kaip vertinate šį puslapį?