Nagy értékű adatkészletek

English

Használati útmutató

Ez a dokumentáció a Központi Statisztikai Hivatal (KSH) által szolgáltatott Nagyértékű adatkészletek programozott eléréséhez (API) szükséges technikai információkat tartalmaz. Az API lehetővé teszi az aktuális és archív statisztikai adatok elérését géppel olvasható, nyitott formátumokban.

Jelenleg nem engedélyezett az API elérése kliens oldali webalkalmazásokból (CORS Policy által blokkolva).

Hozzáférési URL

Az API bázis URL-je: https://data.ksh.hu/

Hitelesítés

A hozzáférés nem igényel hitelesítést.

Kérés formátuma és végpontok

A részletes specifikáció szabványos OpenAPI leírás formájában érhető el, melyet megtekinthet böngészőben vagy elérhet géppel olvasható formában.

Felhasználási feltételek

Automatizált lekérdezések esetén kérjük, a rendszer erőforrásainak védelme érdekében körültekintően járjon el, elkerülve a túlzott terhelést és a túlhasználatot.

Licenc

Az API használatával Ön elfogadja a KSH szerzői jogi szabályzatát, amely elérhető a következő címen: www.ksh.hu/copyright.

További információk

Ha kérdése van, vegye fel velünk a kapcsolatot a következő címen: www.ksh.hu/kapcsolat

Minta kód programozott hozzáféréshez

Ebben a szakaszban egy adatletöltéshez készített mintaprogramot teszünk közzé. A forráskód NodeJS futtatókörnyezetben használható.

01. Az adatkészletek listájának letöltése

async function listDatasets() {
  const res = await fetch('https://data.ksh.hu/datasets.json');

  if (!res.ok) throw new Error(`datasets.json letöltési hiba: HTTP ${res.status} ${res.statusText}`);

  const datasetsJson = await res.text();

  let datasets;
  try {
    datasets = JSON.parse(datasetsJson);
  } catch {
    throw new Error('A datasets.json válasz nem értelmezhető JSON-ként.');
  }

  if (!Array.isArray(datasets) || datasets.length === 0) {
    throw new Error('A datasets.json nem tartalmaz feldolgozható dataset listát.');
  }
  return datasets;
}

02. Egy adatkészlet metaadatainak letöltése

import { XMLParser } from 'fast-xml-parser';

const XML = new XMLParser({
  removeNSPrefix: true,
  ignoreAttributes: false,
  textNodeName: 'text',
  attributeNamePrefix: '',
});

async function fetchDatasetMetadataRdfAsJson(datasetId) {
  const res = await fetch(`https://data.ksh.hu/datasets/${encodeURIComponent(datasetId)}/metadata.rdf`);

  if (!res.ok) {
    throw new Error(`metadata.rdf letöltési hiba: HTTP ${res.status} ${res.statusText}`);
  }

  const rdfXml = await res.text();

  let rdfJson;
  try {
    rdfJson = XML.parse(rdfXml);
  } catch {
    throw new Error('A metadata.rdf válasz nem értelmezhető érvényes XML-ként.');
  }

  return rdfJson;
}

03. Adatkészlet SDMX adatsémájának és adatállományának letöltése

import { createWriteStream } from 'node:fs';
import { pipeline } from 'node:stream/promises';
import { Readable } from 'node:stream';

const rdfJson = await fetchDatasetMetadataRdfAsJson('XXXX');
const distributionContainer = rdfJson.RDF.Dataset.distribution;
const distributions = (Array.isArray(distributionContainer) ? distributionContainer : [distributionContainer])
  .map(x => x.Distribution);

for (const dist of distributions) {
  const SdmxSchemaURL = dist.conformsTo.resource;
  const SdmxDataURL = dist.downloadURL;

  // séma letöltés
  const schemaRes = await fetch(SdmxSchemaURL);
  if (!schemaRes.ok) {
    throw new Error(`Séma letöltési hiba: HTTP ${schemaRes.status} ${schemaRes.statusText}`);
  }
  const schemaText = await schemaRes.text();
  // XML vagy JSON schema feldolgozása...
  // ...

  // adatok letöltése
  const dataRes = await fetch(SdmxDataURL);
  if (!dataRes.ok) throw new Error(`Letöltési hiba: HTTP ${dataRes.status} ${dataRes.statusText}`);
  // mentés pl. fájlba.
  await pipeline(Readable.fromWeb(dataRes.body), createWriteStream('data.csv'));
}