.. currentmodule:: pandasdmx Data sources ============ SDMX makes a distinction between data providers and sources: - a **data provider** is the original publisher of statistical information and metadata. - a **data source** is a specific web service that provides access to statistical information. Each data *source* might aggregate and provide data or metadata from multiple data *providers*. Or, an agency might operate a data source that only contains information they provide themselves; in this case, the source and provider are identical. pandaSDMX identifies each data source using a string such as ``'ABS'``, and has built-in support for a number of data sources. Use :meth:`list_sources` to list these. Read the following sections, or the file ``sources.json`` in the package source code, for more details. pandaSDMX also supports adding other data sources; see :meth:`add_source` and :class:`~.source.Source`. .. contents:: :local: :backlinks: none Data source limitations ----------------------- Each SDMX web service provides a subset of the full SDMX feature set, so the same request made to two different sources may yield different results, or an error message. A key difference is between sources offering SDMX-ML and SDMX-JSON APIs. SDMX-JSON APIs do not support metadata, or structure queries; only data queries. .. note:: For JSON APIs, start by browsing the source's website to retrieve the dataflow you're interested in. Then try to fine-tune a planned data request by providing a valid key (= selection of series from the dataset). Because structure metadata is unavailable, :mod:`pandaSDMX` cannot automatically validate keys. In order to anticipate and handle these differences: 1. :meth:`add_source` accepts "data_content_type" and "supported" keys. For example: .. code-block:: json [ { "id": "ABS", "data_content_type": "JSON" }, { "id": "UNESCO", "unsupported": ["datastructure"] }, ] pandaSDMX will raise :class:`NotImplementedError` on an attempt to query the "datastructure" API endpoint of either of these data sources. 2. :mod:`pandasdmx.source` includes adapters (subclasses of :class:`~.source.Source`) with hooks used when querying sources and interpreting their HTTP responses. These are documented below: ABS_, ESTAT_, and SGR_. .. _ABS: ``ABS``: Australian Bureau of Statistics ---------------------------------------- SDMX-JSON — `Website `__ .. autoclass:: pandasdmx.source.abs.Source :members: .. _ESTAT: ``ESTAT``: Eurostat ------------------- SDMX-ML — `Website `__ - Thousands of dataflows on a wide range of topics. - No categorisations available. - Long response times are reported. Increase the timeout attribute to avoid timeout exceptions. - Does not return DSDs for dataflow requests with the ``references='all'`` query parameter. .. autoclass:: pandasdmx.source.estat.Source :members: ``ECB``: European Central Bank ------------------------------ SDMX-ML — `Website `__ - Supports categorisations of data-flows. - Supports preview_data and series-key based key validation. - In general short response times. ``ILO``: International Labour Organization ------------------------------------------ SDMX-ML — `Website `__ - :class:`pandasdmx.source.ilo.Source` handles some particularities of the ILO web service. Others that are not handled: - Data flow IDs take on the role of a filter. E.g., there are dataflows for individual countries, ages, sexes etc. rather than merely for different indicators. - The service returns 413 Payload Too Large errors for some queries, with messages like: "Too many results, please specify codelist ID". Test for :class:`pandasdmx.exceptions.HTTPError` (= :class:`requests.exceptions.HTTPError`) and/or specify a ``resource_id``. - It is highly recommended to read the `API guide `_. .. autoclass:: pandasdmx.source.ilo.Source :members: .. _IMF: ``IMF``: International Monetary Fund's “SDMX Central” source ------------------------------------------------------------ SDMX-ML — `Website `__ - Subset of the data available on http://data.imf.org. - Supports series-key-only and hence dataset-based key validation and construction. ``INEGI``: National Institute of Statistics and Geography (Mexico) ------------------------------------------------------------------ SDMX-ML — `Website `__. - Spanish name: Instituto Nacional de Estadística y Geografía. ``INSEE``: National Institute of Statistics and Economic Studies (France) ------------------------------------------------------------------------- SDMX-ML — `Website `__ - French name: Institut national de la statistique et des études économiques. .. warning:: An issue has been reported apparently due to a missing pericite codelist in StructureMessages. This may cause crashes. Avoid downloading this type of message. Prepare the key as string using the web interface, and simply download a dataset. ``ISTAT``: National Institute of Statistics (Italy) --------------------------------------------------- SDMX-ML — `Website `__ - Italian name: Istituto Nazionale di Statistica. - Similar server platform to Eurostat, with similar capabilities. ``NB``: Norges Bank (Norway) ---------------------------- SDMX-ML — `Website `__ - Few dataflows. So do not use categoryscheme. - It is unknown whether NB supports series-keys-only. ``OECD``: Organisation for Economic Cooperation and Development --------------------------------------------------------------- SDMX-JSON — `Website `__ .. _SGR: ``SGR``: SDMX Global Registry ----------------------------- SDMX-ML — `Website `__ .. autoclass:: pandasdmx.source.sgr.Source :members: ``UNSD``: United Nations Statistics Division -------------------------------------------- SDMX-ML — `Website `__ - Supports preview_data and series-key based key validation. .. warning:: supports categoryscheme even though it offers very few dataflows. Use this feature with caution. Moreover, it seems that categories confusingly include dataflows which UNSD does not actually provide. ``UNESCO``: UN Educational, Scientific and Cultural Organization ---------------------------------------------------------------- SDMX-ML — `Website `__ - Free registration required; user credentials must be provided either as parameter or HTTP header with each request. .. warning:: An issue with structure-specific datasets has been reported. It seems that Series are not recognized due to some oddity in the XML format. ``WB``: World Bank Group's “World Integrated Trade Solution” ------------------------------------------------------------ SDMX-ML — `Website `__