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'import requests
URL = "https://api.dataportal.gov.lt/namespaces/111958286/tables/mirusiuju_toksikologinis_rezultatas/query"
total = requests.post(URL, json={"filter": "lytis=Moteris", "limit": 1}).json()["total"]
print(total, "eilučių atitinka")const URL = "https://api.dataportal.gov.lt/namespaces/111958286/tables/mirusiuju_toksikologinis_rezultatas/query";
const { total } = await fetch(URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ filter: "lytis=Moteris", limit: 1 }),
}).then((r) => r.json());
console.log(total, "eilučių atitinka");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")const URL = "https://api.dataportal.gov.lt/namespaces/111958286/tables/mirusiuju_toksikologinis_rezultatas/query";
const limit = 1000;
let offset = 0, rows = [];
while (true) {
const page = await fetch(URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ limit, offset, sort: "_id" }),
}).then((r) => r.json());
rows.push(...page.data);
if (page.data.length < limit) break;
offset += limit;
}
console.log(rows.length, "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'Užklausos į lenteles
Visa gramatika, kuria remiasi šie pavyzdžiai.
Klaidos
Ką reiškia kiekvienas būsenos kodas ir kaip jį tvarkyti.
Taip pat žiūrėkite
Kaip vertinate šį puslapį?