Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save romifz/0dba882781385a3f558875da2e8e3131 to your computer and use it in GitHub Desktop.
Save romifz/0dba882781385a3f558875da2e8e3131 to your computer and use it in GitHub Desktop.
[UKRAINE] MAPS quantitative indicators with OCDS#shared
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "[UKRAINE] MAPS quantitative indicators with OCDS#shared",
"version": "0.3.2",
"provenance": [],
"collapsed_sections": [
"79Chhr9j3Srn",
"_EBoASlAjjjA",
"eeNCzYt--CGA",
"YwHEUFCrOY6_",
"CGvg_YJt6tEN",
"jT6p_YDtoOLQ",
"GmYR1mQ6S-XL",
"qfLIIBGwiRj8",
"Lkov9MHEiVWq",
"rEJibw6Yig4W"
]
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"metadata": {
"id": "jxdWZkqD5kEo",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"# Using OCDS data to calculate quantitative MAPS indicators\n",
"\n",
"We explore using OCDS data to calculate the quantitative indicators within MAPS. MAPS is an assessment framework used to evaluate the procurement systems of a given country.\n",
"\n",
"MAPS is composed of indicators, which are each accompanied by quantitative indicators. Quantitative indicators are either required or recommended. Among the required quantitative indicators, we looked at the subset that can be calculated from contracting data (as opposed to, for example, appeals data). These are:\n",
"\n",
"1. Key procurement information published along the procurement cycle (in % of total number of contracts) (sub-indicator 7(a)(c)):\n",
"\n",
" 1. Invitation to bid (in % of total number of contracts)\n",
" 2. Contract awards (purpose, supplier, value, variations/amendments)\n",
" 3. Details related to contract implementation (milestones, completion and payment)\n",
"\n",
"2. Annual procurement statistics\n",
" \n",
"3. Uptake of e-Procurement (sub-indicator 7(b)(a))\n",
" \n",
" 1. Number of e-Procurement procedures in % of total number of procedures\n",
" 2. Value of e-Procurement procedures in % of total value of procedures\n",
" \n",
"4. Total number of contracts (sub-indicator 7(c)(d))\n",
"5. Total value of contracts (sub-indicator 7(c)(d))\n",
"6. Public procurement as a share of government expenditure and as share of GDP (sub-indicator 7(c)(d))\n",
"7. Total value of contracts awarded through competitive methods in the most recent fiscal year (sub-indicator 7(c)(d))\n",
"8. Share of contracts with complete and accurate records and databases (in %) (sub-indicator 9(c)(g))\n",
"\n",
"To explore using OCDS data to calculate these, we chose two data sources that are relatively complete and correct. This notebook shows our calculations with Ukraine's procurement data and the previous checks we conducted to ensure that all calculations were correct. Ukraine's data in OCDS format can be accessed at [http://ocds.prozorro.openprocurement.io/](http://ocds.prozorro.openprocurement.io/).\n",
"\n",
"In the following sections, we assume knowledge of the OCDS and SQL. Additionally, we use pandas for graphs and a few calculations. The data was accessed through [OCDS Kingfisher](https://github.com/open-contracting/kingfisher), which collected the data and saved it in a PostgreSQL database. \n",
"\n",
"It is worth noting that OCDS and MAPS have a few differences in concepts. When these differences affect the analysis, we note which OCDS field approximates the MAPS concept."
]
},
{
"metadata": {
"id": "79Chhr9j3Srn",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"## 1. Setup\n",
"*The steps needed to connect to the data source.*"
]
},
{
"metadata": {
"id": "8npu2NX9MGBn",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"This section includes the initial steps we need to connect to Kingfisher and some utility functions."
]
},
{
"metadata": {
"id": "--8vgOiP_58f",
"colab_type": "code",
"outputId": "b61a3442-ca11-42a9-bebb-abb82c179331",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 521
}
},
"cell_type": "code",
"source": [
"!pip install psycopg2 \n",
"!pip install --upgrade -q gspread\n",
"!pip install gspread-dataframe\n",
"!pip install ocdsmerge"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Requirement already satisfied: psycopg2 in /usr/local/lib/python3.6/dist-packages (2.7.6.1)\n",
"Requirement already satisfied: gspread-dataframe in /usr/local/lib/python3.6/dist-packages (3.0.2)\n",
"Requirement already satisfied: gspread>=3.0.0 in /usr/local/lib/python3.6/dist-packages (from gspread-dataframe) (3.1.0)\n",
"Requirement already satisfied: pandas>=0.14.0 in /usr/local/lib/python3.6/dist-packages (from gspread-dataframe) (0.22.0)\n",
"Requirement already satisfied: requests>=2.2.1 in /usr/local/lib/python3.6/dist-packages (from gspread>=3.0.0->gspread-dataframe) (2.18.4)\n",
"Requirement already satisfied: numpy>=1.9.0 in /usr/local/lib/python3.6/dist-packages (from pandas>=0.14.0->gspread-dataframe) (1.14.6)\n",
"Requirement already satisfied: pytz>=2011k in /usr/local/lib/python3.6/dist-packages (from pandas>=0.14.0->gspread-dataframe) (2018.9)\n",
"Requirement already satisfied: python-dateutil>=2 in /usr/local/lib/python3.6/dist-packages (from pandas>=0.14.0->gspread-dataframe) (2.5.3)\n",
"Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests>=2.2.1->gspread>=3.0.0->gspread-dataframe) (3.0.4)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/dist-packages (from requests>=2.2.1->gspread>=3.0.0->gspread-dataframe) (2018.11.29)\n",
"Requirement already satisfied: idna<2.7,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests>=2.2.1->gspread>=3.0.0->gspread-dataframe) (2.6)\n",
"Requirement already satisfied: urllib3<1.23,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from requests>=2.2.1->gspread>=3.0.0->gspread-dataframe) (1.22)\n",
"Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.6/dist-packages (from python-dateutil>=2->pandas>=0.14.0->gspread-dataframe) (1.11.0)\n",
"Collecting ocdsmerge\n",
" Downloading https://files.pythonhosted.org/packages/39/29/b39392a9171cf5ab3c081115784aef6852b0a0f2ca7da0ef56637ffc28be/ocdsmerge-0.5.1.tar.gz\n",
"Collecting jsonref (from ocdsmerge)\n",
" Downloading https://files.pythonhosted.org/packages/07/92/f8e4ac824b14af77e613984e480fa818397c72d4141fc466decb26752749/jsonref-0.2-py3-none-any.whl\n",
"Requirement already satisfied: requests in /usr/local/lib/python3.6/dist-packages (from ocdsmerge) (2.18.4)\n",
"Requirement already satisfied: urllib3<1.23,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from requests->ocdsmerge) (1.22)\n",
"Requirement already satisfied: idna<2.7,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests->ocdsmerge) (2.6)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/dist-packages (from requests->ocdsmerge) (2018.11.29)\n",
"Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests->ocdsmerge) (3.0.4)\n",
"Building wheels for collected packages: ocdsmerge\n",
" Running setup.py bdist_wheel for ocdsmerge ... \u001b[?25l-\b \bdone\n",
"\u001b[?25h Stored in directory: /root/.cache/pip/wheels/6d/0c/1f/baf82581d6a46220c603e023ef50b1b190546fdd37e8cac84c\n",
"Successfully built ocdsmerge\n",
"Installing collected packages: jsonref, ocdsmerge\n",
"Successfully installed jsonref-0.2 ocdsmerge-0.5.1\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "I-QPDbliMVXC",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Connect to server:"
]
},
{
"metadata": {
"id": "AaUpgXz24Y_A",
"colab_type": "code",
"outputId": "dfe33556-8d79-44cb-fa1a-5388932517ab",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 91
}
},
"cell_type": "code",
"source": [
"import getpass\n",
"import psycopg2\n",
"\n",
"dbpassword = getpass.getpass(\"Enter database user password: \") #see /.pgpass file on server\n",
"\n",
"# db connection config\n",
"conn = psycopg2.connect(\n",
" database = 'ocdskingfisher',\n",
" user = 'ocdskingfisher',\n",
" password = dbpassword,\n",
" host = '195.201.163.242',\n",
" port = '5432',\n",
")\n",
"\n",
"# clear db user password\n",
"dbpassword = ''\n",
"\n",
"# create db cursor\n",
"cur = conn.cursor()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use \"pip install psycopg2-binary\" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.\n",
" \"\"\")\n"
],
"name": "stderr"
},
{
"output_type": "stream",
"text": [
"Enter database user password: ··········\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "Ln5UIRj4-MxO",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### Define functions"
]
},
{
"metadata": {
"id": "6Zxvn8K07Ecp",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Define function to store query results in a pandas dataframe"
]
},
{
"metadata": {
"id": "TYkEHVatrEXC",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"\n",
"def getResults(cur):\n",
"\n",
" headers = [desc[0] for desc in cur.description]\n",
"\n",
" results = pd.DataFrame(cur.fetchall(), columns = headers)\n",
" \n",
" return results"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "_ZYB4II6MbJF",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### Set default variables"
]
},
{
"metadata": {
"id": "4EaO_1gcPROq",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# dataset we want to work with\n",
"\n",
"source_id = 'ukraine'\n",
"data_version = '2018-11-06-17-40-16'\n",
"ocid_prefix = 'ocds-be6bcu'\n",
"\n",
"# base query, to simplify the queries ahead\n",
"\n",
"base_querystring = \"\"\"\n",
" WITH releases AS (\n",
" SELECT\n",
" data\n",
" FROM\n",
" data\n",
" JOIN\n",
" release on data.id = release.data_id\n",
" JOIN\n",
" collection_file_status ON release.collection_file_status_id = collection_file_status.id\n",
" JOIN\n",
" collection ON collection_file_status.collection_id = collection.id\n",
" WHERE\n",
" source_id ='\"\"\" + source_id + \"\"\"' and data_version='\"\"\" + data_version + \"\"\"'\n",
" )\n",
" \"\"\""
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "xQfT_iwM4b8T",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### Set pandas to show long text in cells"
]
},
{
"metadata": {
"id": "CeCah4eT4fm-",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"pd.set_option('display.max_colwidth', -1)"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "_EBoASlAjjjA",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"## 2. Ukraine's Data Facts\n",
"\n",
"*This section shows a few properties from the Ukraine dataset that are relevant to the analysis.*"
]
},
{
"metadata": {
"id": "m8HS-Pzre7ih",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Before diving into the calculations, we present the checks made of Ukraine's data that may affect calculations and results."
]
},
{
"metadata": {
"id": "eeNCzYt--CGA",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"###2.1. Distribution of releases by date\n",
"\n",
"*Here, we identify an appropriate data range to use.*"
]
},
{
"metadata": {
"id": "xQ4oSR87QqwG",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Although these calculations are only for demonstration purposes, it would be good to have a full year of samples to calculate a few indicators. Let's start by making a graph of number of releases by date:"
]
},
{
"metadata": {
"id": "dnEEM0Rc-JGx",
"colab_type": "code",
"outputId": "4b997e23-0d44-4b45-e567-7d9b55d13250",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 406
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" TO_DATE(SUBSTRING(data ->> 'date', 0, 11), 'YYYY-MM-DD') AS \"date\", \n",
" COUNT(*) AS numOfReleases\n",
" FROM\n",
" releases\n",
" GROUP BY \n",
" SUBSTRING(data ->> 'date', 0, 11)\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results.plot(x=\"date\",y=\"numofreleases\",figsize=(12,6))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f227a33a7f0>"
]
},
"metadata": {
"tags": []
},
"execution_count": 12
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nCFalAZgVgRoAYDiyNQAzIVADAAwRG6IjHJYIwEQI1AAA45GnAZgIgRoAAABIAIEaAGA4FqgBmAmB\nGgBgiEh8EzUAmAaBGgBgOA5KBGAmBGoAgCHiLj1OngZgIgRqAAAAIAEEagAAACABBGoAgDFij0mk\n5QOAiRCoAQCG46BEAGZCoAYAGIIIDcCsCNQAAOORrgGYCIEaAGCI2Au7kKcBmAmBGgAAAEgAgRoA\nYLgIp/kAYCL2ljzpjTfe0LJly6L3N2/erIEDB6qqqkper1eS9NBDD2ngwIFasGCBVqxYIYvFohkz\nZmj06NGqqKhQTk6OKioq5PV6NW/ePKWkpGjt2rX6xS9+IZvNpiuvvFLTp083pkoAAADgHGlRoJ44\ncaImTpwoSfrwww/117/+Vdu3b9fcuXPVp0+f6Hb5+flavny5Xn/9dVVWVmrq1Km64oortHDhQl1+\n+eW68847tWTJEs2fP18PPPCAfvazn+nFF19U27ZtlZ2drWuvvVa9evUyplIAwDkVuyjN+jQAM0m4\n5eP555/XPffcc9KfrVu3TqNGjZLT6VRaWpo6duyo7du3Kzc3V+PGjZMkjRkzRrm5ucrPz1dycrLa\nt28vq9Wq0aNHKzc3N9HhAQBaA4kagIm0aIW60SeffKL27dsrGAxKkp599lmVlJSoZ8+emjlzpoqL\ni5WWlhbdPi0tTeFwOO7x9PR0FRUVKRwON9s2Pz8/keEBAFoJeRqAmSQUqJcuXaqbb75ZknTbbbep\nb9++6tKli2bNmqVXXnml2fYnO0gl0QNXUlO9stttCb2GUYJBf2sPoVWZvX6JOaB+c9dfvrc0etvn\nc5lyPsxYcyyz1y8xB2atP6FAvW7dOv3Hf/yHJEVbOCRp7NixWr58uYYPH66dO3dGHy8sLFQoFFIo\nFFI4HJbf7497rLi4uNm2p1NSUpVICYYJBv0Khytaexitxuz1S8wB9Zu7/qYqKo6abj7M/hkwe/0S\nc2CG+k+1w9DiHurCwkIlJSXJ6XQqEono9ttvV3l5uaSGoN27d2+NGDFC7777rqqrq1VYWKiioiL1\n6tVLWVlZWrFihSRp1apVGjVqlDp16qTKykrt3btXtbW1Wr16tbKyslo6PADAeRb7fSNnzQNgJi1e\noY7tebZYLJo0aZJuv/12eTwetW3bVvfee688Ho8mTZqk7OxsWSwWzZ49W1arVdOmTdMDDzygqVOn\nKhAI6Omnn5YkzZ49Wzk5OZKk8ePHq3v37gaUCAAAAJw7lshFfvb9C+WrBTN8zfFVzF6/xBxQv7nr\nl6Syo3X64TNrJElTrumtccM6t/KIzi+zfwbMXr/EHJihfsNbPgAAOKWLeqkGAM4OgRoAYIhITIom\nTwMwEwI1AMB4F3c3IQCcFQI1AMAQXHocgFkRqAEAhmOBGoCZEKgBAACABBCoAQCGi9D0AcBECNQA\nAOORpwGYCIEaAGCI2OuE1dNEDcBECNQAAABAAgjUAABDxK5Js0ANwEwI1AAAw5GnAZgJgRoAYAyW\nqAGYFIEaAGA44jQAMyFQAwAMEbcoTaIGYCIEagCA4cjTAMyEQA0AMETs1REj9FADMBECNQDAcORp\nAGZCoAYAGI48DcBMCNQAAEPEr0oTqQGYB4EaAGA4Wj4AmAmBGgAAAEgAgRoAYDhWqAGYCYEaAGCI\n2FPlReihBmAiBGoAgPHI0wBMhEANADBE3JXHCdQATIRADQAwHC0fAMyEQA0AMEZMhmaFGoCZEKgB\nAACABBCoAQCGY4UagJkQqAEAhojtm6aHGoCZEKgBAMYjTwMwEXtLnrRu3Trdd9996t27tySpT58+\nuvPOO/Xggw+qrq5OwWBQTz/9tJxOp5YtW6aFCxfKarVq0qRJmjhxompqavTwww9r3759stlsmjt3\nrjp37qytW7dq9uzZkqS+ffvq0UcfNaxQAMC5FdvmQZ4GYCYtXqG+/PLLtWjRIi1atEg//elP9eyz\nz2rq1Kl69dVX1bVrVy1dulRVVVV6/vnn9fLLL2vRokVauHChSktL9dZbbykQCOi1117T3XffrXnz\n5kmS5syZo5kzZ+r1119XZWWl1qxZY1ihAIDziEQNwEQMa/lYt26drr76aknSmDFjlJubq40bN2rQ\noEHy+/1yu90aOnSo8vLylJubq3HjxkmSMjMzlZeXp+rqahUUFGjw4MFxrwEAuEjEhOh6EjUAE2lR\ny4ckbd++XXfffbfKyso0Y8YMHTlyRE6nU5KUnp6ucDis4uJipaWlRZ+TlpbW7HGr1SqLxaLi4mIF\nAoHoto2vcTqpqV7Z7baWlmGoYNDf2kNoVWavX2IOqN/c9e8rORq97XY7TDkfZqw5ltnrl5gDs9bf\nokDdrVs3zZgxQ9ddd53y8/N12223qa6uLvrzyCnOl3Q2j59q26ZKSqrOaLtzLRj0KxyuaO1htBqz\n1y8xB9Rv7vql+DN7HDlSY7r5MPtnwOz1S8yBGeo/1Q5Di1o+2rZtq/Hjx8tisahLly5q06aNysrK\ndPRow+pEYWGhQqGQQqGQiouLo88rKiqKPt64+lxTU6NIJKJgMKjS0tLoto2vAQC4CHEiagAm0qJA\nvWzZMr344ouSpHA4rIMHD+r4yu15AAAgAElEQVTb3/62Vq5cKUlatWqVRo0apYyMDG3atEnl5eU6\nfPiw8vLyNGzYMGVlZWnFihWSpNWrV2v48OFyOBzq0aOH1q9fH/caAICLA2f5AGBWLWr5GDt2rH78\n4x/rnXfeUU1NjWbPnq3+/fvroYce0pIlS9ShQwfddNNNcjgcysnJ0R133CGLxaLp06fL7/dr/Pjx\nWrt2raZMmSKn06knnnhCkjRz5kw98sgjqq+vV0ZGhjIzMw0tFgBwfrBADcBMLJEzbVa+QF0ovTpm\n6Bv6KmavX2IOqN/c9UvS3kNH9MgLDWdnujKjvW6/rn8rj+j8MvtnwOz1S8yBGeo3tIcaAICmYldn\nLu6lGgA4OwRqAIDhyNMAzIRADQAwRuxBiSxRAzARAjUAwHjkaQAmQqAGABgi9sIu5GkAZkKgBgAY\njo4PAGZCoAYAGCI+RJOoAZgHgRoAYDjiNAAzIVADAIxHogZgIgRqAIDhyNMAzIRADQAwHOehBmAm\nBGoAgCFiQzR5GoCZEKgBAIYjTwMwEwI1AMAQ8WfNI1IDMA8CNQDAcMRpAGZCoAYAGCNyitsA8C+O\nQA0AMBx5GoCZEKgBAIaIP8sHkRqAeRCoAQAAgAQQqAEAhohroWaBGoCJEKgBAIaj5QOAmRCoAQCG\nI04DMBMCNQDAECxKAzArAjUAwHCEawBmQqAGABgk5rR5NH0AMBECNQDAeORpACZCoAYAGCK2zYM8\nDcBMCNQAAOPRRA3ARAjUAABDxEboevI0ABMhUAMAAAAJIFADAIwR20NNywcAE7G39IlPPfWUNmzY\noNraWn3ve9/T3//+d23ZskUpKSmSpDvuuENXXXWVli1bpoULF8pqtWrSpEmaOHGiampq9PDDD2vf\nvn2y2WyaO3euOnfurK1bt2r27NmSpL59++rRRx81pEgAAADgXGlRoP7ggw/0xRdfaMmSJSopKdHN\nN9+sESNG6Ec/+pHGjBkT3a6qqkrPP/+8li5dKofDoQkTJmjcuHFavXq1AoGA5s2bp/fff1/z5s3T\nM888ozlz5mjmzJkaPHiwcnJytGbNGo0ePdqwYgEA5wcL1ADMpEUtH5dddpl++ctfSpICgYCOHDmi\nurq6Zttt3LhRgwYNkt/vl9vt1tChQ5WXl6fc3FyNGzdOkpSZmam8vDxVV1eroKBAgwcPliSNGTNG\nubm5La0LAHCeReIu7AIA5tGiQG2z2eT1eiVJS5cu1ZVXXimbzabFixfrtttu0w9/+EMdOnRIxcXF\nSktLiz4vLS1N4XA47nGr1SqLxaLi4mIFAoHotunp6QqHw4nUBgBoLSxRAzCRFvdQS9Lbb7+tpUuX\n6qWXXtLmzZuVkpKi/v3764UXXtBzzz2nSy+9NG77Ux2kcrLHz/SAltRUr+x229kP/hwIBv2tPYRW\nZfb6JeaA+s1d/9aC8uhtu8NmyvkwY82xzF6/xByYtf4WB+p//OMf+s1vfqMFCxbI7/dr5MiR0Z+N\nHTtWs2fP1rXXXqvi4uLo40VFRRoyZIhCoZDC4bD69eunmpoaRSIRBYNBlZaWRrctLCxUKBQ67ThK\nSqpaWoKhgkG/wuGK1h5GqzF7/RJzQP3mrr+p6po6082H2T8DZq9fYg7MUP+pdhha1PJRUVGhp556\nSr/97W+jZ/W49957lZ+fL0lat26devfurYyMDG3atEnl5eU6fPiw8vLyNGzYMGVlZWnFihWSpNWr\nV2v48OFyOBzq0aOH1q9fL0latWqVRo0a1ZLhAQBaA6fNA2BSLVqhXr58uUpKSnT//fdHH/v2t7+t\n+++/Xx6PR16vV3PnzpXb7VZOTo7uuOMOWSwWTZ8+XX6/X+PHj9fatWs1ZcoUOZ1OPfHEE5KkmTNn\n6pFHHlF9fb0yMjKUmZlpTJUAgPOLPA3ARCyRi3wZ4UL5asEMX3N8FbPXLzEH1G/u+iXps71lenrx\nBklSjw4B/cdtw1p5ROeX2T8DZq9fYg7MUL+hLR8AAHyVi3upBgDODoEaAGCI+BBNogZgHgRqAIDh\nWKEGYCYEagCA4cjTAMyEQA0AMAQdHwDMikANADBchEQNwEQI1AAAY8Q0TtNDDcBMCNQAAMMRqAGY\nCYEaAGCIyFfcA4B/ZQRqAIDhiNMAzIRADQAwRFybB4kagIkQqAEAhiNPAzATAjUAwCCxZ/kgUgMw\nDwI1AAAAkAACNQDAELGL0ixQAzATAjUAwHC0fAA4F6pr6i7I/74QqAEAhrvw/twBuNjtKazQ9P96\nT3nbwq09lGYI1AAAQ3DaPADn0uadh1RXH1F+UWVrD6UZAjUAwHAREjUAg+3aXy5JqjpW28ojaY5A\nDQAwSOxp81pxGMC/uAuxh/h82HWgQpJ05AIM1PbWHgAAAAC+WiQSUXVNvZ77703aV3xYd36zv/p3\nS2vtYZ03lUdqVFx2VJJ05FhdK4+mOQI1AMAQnDYPMN72gjK9+88C/fOLYvXplKwtOw9Jkn75x0/0\ni+lXyOs2R5TbdaA8evtCXKGm5QMAcA6QqIFEHauu0+OLNmjt5gM6cqxWG788KIukoX2Cqq6p18Hy\no9p9vA2iJUoqjqmiqlr1x/eAczcf0NbdJQaN3li79p+o80IM1ObYrQEAnHOxEbqePA20SG1dvcKl\nR7Ri3Z6TBkeX06a0gEuS9Mqqz7Vtb5nu/fYgXdoneFbv85e1u/Tf7+2QJI0e0kF7Ciu083hofenh\nsQlWYZyj1bXauP2gdh4/INFmtRCoAQAAcEIkEtGXBeXq0SEgq9WiBW99qg8/K4rb5vrMbvrL2l2S\nJJfDJpfDJknatrdMkvT3fxacVaCuravXqg/3RO+v+Xhf3M+PVdfJbrfIYrHIarGooqpaEUkBr7MF\nFbZcbV29fvLCByqrrJYk+TwOJXkcOnK05ryO40wQqAEAhojvoTZ2iXrXgXLtLTqsNsluvbxiqyyS\nJo7ppaFnuSp3Mkera+V28ucQ50ckEtHfPsrXgZIjGtAtTYeP1ujlv26Vy2FTp2CSvtxX3uw5KX5X\n9HZsoPa67Ko6Vhs9ndyZKKk4puKyIzp8tFZf6xPUhpNcJGXpmi+1dvN+2axWDesX0vuf7FNdfUSP\n/J/L1DGYpH9+Uaz0gFvBFLf8pwnZx2rqouNuqj4S0aGyo2qT4pHUcBXELwrK5LBZ1b29X39Zuysa\npiUpOckpp8OqQ+VHz7je84X/ggAADGdUnP58T4l+u2yLSo//UU31u1RScUyS9NyfNik94NLUcX10\nae+zD9b//CKsP7+/U3uLDus/77hc7dO9ikiyWiw6VlOnssPVCh3/Q3++RCIRWSyW8/qeOHN/W5+v\nYLJHQ3q30We7S/TxF8Ua2CNNg3qkx213tLpWm3YcUvt0r+w2q/K2hfXZrkPq3NYvp92qZf+7S5L0\n7j8Los85VlMXDdPfuLyL3t+0X5VHGlZiU5JOhFanwyaXsyGcNp6P+fDRWtXW1ctu++pD497ZsFev\n/G2bko+/Xs+OyXGB+sqM9npv4369s2Hv8Ufq4sb46MsfyWKJ33ke1CNdSR67rhzcQS6vSx98ekBv\nr9+r+ydmyG6z6LGF61VRVaNvDO+iPp1T9N/v7VB5VbUUkdqlebVhW1j33DRQA3uk6We/36B9xYcl\nSd8c2bXZyrnbadNVl3aMbnMhIVADAIx3lon6UPlRfbLjoLq29Wvt5gN6f9N+XdqrjYpKj0TDtNSw\nujakVxvt2F+u8sPVOlh+TL/64yY9c+8VCiSd+dfRhYeq9NwfN0WHOXfxBh0+WqtOQZ/uuv4Svfg/\nn2l3YYUu6Zaqr1/WWTv2lcvvdap3p2RFItIzSzfqkq6puvprnVVbV6+PPiuS023XFQPaal9xlQb2\nSNP6rUXq0tavT74s1oefFWncsM6yWKS/fZSvr1/eWZf2DmrD52EFU9zq2yVV2wvK9Px/b9KwPiFN\nHddbR47Vav/BKvk8DrVN80pqWNHb8HlY3dv5tXbLAdXW1eubI7pFA1ZJxTF53Xa5HDbtPlCh1f/c\nq+uGNwSTw0drdMvonvK47Fr+wW4Vlx3RlRkd1CbZo6pjtfqyoEx9O6fI5bTp9Xe+UEVVjb41sqvW\nbwsrlOJRvy6pqjxaoxUf7FbXdgH16Zys+nqpR8dAXCtA1dEaOexWOey2r9xBaOnOQyQS0ZZdh9Q5\n6FOyz3XSnx85VquIpCS3I/pYXX1EhYeqtHjVNqX6Xbq0T1DFZUe0ZechTbu2r9qmelV2uFrHaurk\n9zjkctr03sZ9eu/jfRo/oqtS/C699vYXkqQ+nZK1Y3+5ausi+tv6fD0weYhsNqv+c+F6WS2S027V\n1j2lzca2ZdeZHfDncdnkdtqigTrgOzG/Lqf1pKu9BeHD6trOf8rXLC49ojfe3S5JKjvc8G8qyWOX\nw25VTW29JKlHh2S9t3G/JKlzyKdgiqfZZb6bfvm0acdBSdIHWwrlctp0rLphRfrTXYdUVxfR/oNV\nkqSl737ZfMzHg/HvV36uqeN6a1/x4eh4viwoU+WRGtltFtXWNbyp22VX1qD2p6yxNRGoAQAGicTd\nqo9EVFNTL5fTpu17y7Rl1yFt3V2iXp2StWt/uSqqauR22XW0ulZ7CptfSviDTwslSWkBly7v11Yr\njvd8pie7VVhSpfLDJ4L2n97boduv6/eVo9uWX6rdBypUUFyp0sqGntAeHQLasa9ch482rPTtDVfq\nkZc+jD7n010l+rRJCHLaraqurVfulkLlbimM+9lfj/e5nsxLyz+L3l7w1meSTtyf9vU++qKgTGWV\n1Xonb6/2FFUc/2q+4avt26/rp0u6pmrOog3RMNRo575y3TcxQ5/tLtF//WGjUnxOPfX9TP1u+Wfa\nU1SptZsLVVvXEJg2fnlQfTun6KOtDT26+YWVOlh+NFp/+3SvOqQnRVctPzvFGR+27CrR8g9O3J//\n4FXaW1Sh+f+9SXnbwkr2OXVZ35DWbNwnn8eh7HF9lOJ3acvOQzpwqEpd2vr15j926Gt9g5p4VS85\nHVYtXPG5IpGIBnRLU/9uqfrfTQeU4nPqa31D+sPft+ujrUUafklbdW3r06JV29QuzavH7rxcX+SX\n6b2N+/S1viH175qquYs3qKD4sCwW6cas7lr/eZH2FVfJarXIbrPo6PHA1/j5kqT/9+Zmffdbl+jx\nxRt05Fidktx29euSGp2HX7+5WVcP7RTdvrF3udELb30a15pwMpf3D8X1Rk/7eh8tWrVNUkM7RGNr\nhCR5XPa4NqTkmB2W2JaPWKv/uVe3X9f/lO+/+G/bVF1TH/eY12WX22lTTW29bFaL/F5H9GdJbruS\nYk7JN+GqnnGheNKYXvrD6u1xr9cYpqWGi7A07mh9c2RX/U/u7ujPbryiu/78/s7o/cojNXph2aeS\npIlX9dSrb3+hcGnDZz892aPCQw2h3O1sXveFgkANADBc+eFqfffJ1XI5bboyo4NWfZQf/dnn+c1X\n7r6Kz+2IO9euz+Nodu7df2zcp7FDO6pL25Ov0NXU1uvJV/KaLZxnDWqvHce/Zk8LuORx2VUQblg1\nu2V0D/1xzY7otl1CPu0pqlR1bb2S3PZoCJUUt4p2Om2S3dGg3KgxWEkNIf+LmMDmsFv1xurtGtyz\nTbMw7fM4tGVXQ+tB49f0pZXV2lNYqT1FDTspjWE6PeDWwfKj0TBtt1mj2zQ6WH40uloZK3YVs2n4\nkxp2EKzHWxskqayyWm8fH09JxTH96k+b4rZfu/mAJOl/Nx3QnsJKjRrcXuuOB9ymB+QtXPF59PZ7\nG0+0ABw4VKW9RYf1mz9vVnlVTVxAlhpWUt88Htoax1xb19A2dORYbTRYS9KewkrNeumj6OnjDh+t\nbdZbvL2g4XficdmiFxb5t3F99Mrftp00TF/au40iEenj7cWSGlojNnweVt3xU+AEU0+0E/XqlKxu\n7fzR0Olx2eV2nQiPsd++NA3USW67LBaLPj/JirjU0Oax7rNCbd9bpi5tfQome6K1uY8H6oqqGrmd\nNnldJ/5deVz26Aq/JKX4nHGf3c5tfdGf+TwODeieFv0dNsxphbq1CzRsGzqxbZLbrtSYnvCMnuna\n+OXB6P1Uv0t2m0UHj/dJtwm4ooHacwEf68B5qAEAhmj6VXBE0tHqumiYtsZ8vd+/a6qGX9I2ej/Z\nF9+u8a3MrtHbSR5H3EqZz+OI+0M/9Zreikja8Hnzg6s2bi/WW2t36X9ydzUL0xY19HA26t0pRV1j\nAnmq36VAzIrdjaO6R28HUzwaP+LEGG/I6q4up/i6vU2yW7eO7RW9n9Gzjfp1SYnev7x/KHrb5bBp\n9JAO0ftD+wTVt0uKDh+t1a4D5bJZLXGhZ8JVPSVJ4bIj0QAiSXuKmp+b+IYrusXV9vXLOkfvO+wN\ncaC6pl4lFcfUMZgU/ZndZolb/c/ola6RA9rFvfa6TwuVu2l/s/fs0CZJA7ufuJpf4/s0CqV4lF9U\nqVePt1KcbOW10YiYz0ujA4eqVF7V/IwPt1/XL+7zlv31PtHbwRSPrsw4Mcc3XtHwe20M0/8+/kSt\nbZLduun4z/eGG3Y+OqSfmJv26Sc+P5I0Y2JG9LbP45DP44i7n3T8vtNuVXLSiVCZ5LbH/V4bV44b\nOWPmxRXTQy01BN+0gEsllcdUeaRGW3eXaP3WIpUfrtb/nf+BXvnbNm0/voPWNtUbHcOJ92l4X7fT\nLm/Mvyuv2y6POz5gx+7IBmOOL+jYJkmX9TvxOZYadqQaW1bapp6Yp6Qm/37bpXs1uOeJHvSGHeYT\nP09PdkdvX8gr1ARqAMA5cee3Tnz9bLFIObeeCBspPmfcKtW/XdMnGuIsFsUFnqZ/YJM88X/Y+3VN\nldTQj/nUq3l6fNEGbfi8SBs+D+uXSz/Rn97bET0I7O4bB0QP3EryOOICs9/jiFsJ9Hud0TMYWC2W\nuPAdSHLGbRtIcirlJP28ja8T22PsT4p/n3HDOsds64gLWgGvQ6nHX3f/wSqlBVzyH3+uxSJ1Cjas\n/JWUH1Np5bHo8/JP0kITu7MQ8MbP/7cyu0UDUV19ROkBdzS8+L3Ok8zLiXmLZZH0f2/7WvR+MNkd\n19c78aqecauVt32jb/S202GN7iBIDQfm9T/+u5WksV/rFD3/cqPdhQ07DlkD28WFrRSfU4GkhjFa\nLA3B/kTt8fPfNtWjNjGhLXaekpOc0f7luvqInHZrXMBrk+yOfp7aJLujve5Swzz5YubJ5z0RsJvu\nJCa5Hc3C66lWY51NVqjdTptSfS5V19TriVfy9NRr/9Sv39ysBf/zabR/Obae2JDviQnuTVeok9yO\nZiG/MQhbLZa4AyWTPI64OZSk0spjOnz89Hapfld0Z8p3ktpjfx9N3zc9EBOoXaxQn5XHH39ct956\nqyZPnqxPPvmktYcDADgDTVeA26cnRYNXis+l1Jg/jMlJruiZBqTjAfV46PQ47XGhsukfYJ/boSRX\nzApXmlcWi5S3Layte0q1vaBML/zlU/3jk/gzBEgNq2qN75uc5IxbrfN5HXHB1+dxRMfvdcePqWG8\nMWHc6zjpAXKNP2saSGPfJz3ZHa2vIVDHbxsbfFP97uj7+jyOaMAsKD4c13LSuELdq2Ny9LHYUJns\ni98BCHgdcSE5kHQiNAeSnHE9vE0DaSyf16E0f8zvucn7pPhccfdjW3RCKd64WlP8rvj7Pmd0B6JR\n41UCUwMujRna8cT7JrmiYwx4m9Sa5JTfE/u7cyot5n3iwneSs9nvw++Jv+/z2I+/pzPuM9B0hdof\n8zn2Nlnt9TZZofY0WaGO1dDycSK+uZ326Gn1Ys9+sXlHwyXKY08tmexzKskT/z6Nq91Wq0WeZgH6\n1CvUsavmXrc9bodTko4cq4ue3i7JY5fzeKBOatLCleS2x81x052N2B0YDyvUZ+7DDz/U7t27tWTJ\nEs2ZM0dz5sxp7SEBAM5Ek56P9GR3NBCl+uMDdLLP2ex+bKCLbQ1oWJGOXaGO/4Nst1njglf/rqmq\nqa3XJ18elN1mjQta6cnuaKDwe+P/cDesUMeH5MYV6kgkIk9MT2ty0xVqr7NZ20rsz+ICdZOV8NgW\nFp/HqRTfqVe+0/yu6JhsVosCXqesFkv04MFgSkP4+LKgoS98SO82cfMUO6bYOQs0CfnJSU457Y0r\n1I7oqnjD/fhAGqthtTE2mLtOEqhjVyNPzH/bVE/cHKY1CdTJSS51jAm70omDJlN8rrgg3xCEG57r\nctridxa8zib1OOJ29mLnqenv2e91xAVSt9Mmq9USfc+m28a3fDhPhGaLmvRBx3+mPW77Kc+NbmsS\nfBtXqBtlDmwXN699Y9qLAklO+WLbOlw22a2N7T51cX3bHnd8gPY0CdixfG5HXMBu/L3t3F8hj8sm\nmzX+33PsvDR8UxT/mYj9957qvzhaPi64tfPc3Fxdc801kqSePXuqrKxMlZWV8vl8p3nm+bN1d4le\n/J/PVFN34sANq9Wi+pZca9egix8Ydc7Xlg6nxfWfAaMvEJGoUw3HYrUochZzYFxVBn2GEnwZi8Wi\nSCRiYF0ybJIMG9VXvUzTk7O28GXOhnH/NIx5oaYH5fk9JwKp3+OICwEpPlezQNd4v/FgrcZzTge8\nTqUH4kNZl+MHRLU9vm2noE+Hyo/JarHo+sxu0aDVMZikzjGrmn5P/NfuDrst7nVjv1L2e0+E/vRk\nd9wp3pqOPznJqbRA/Ffe0dqarXI6dLT6xHPtNqtS/C4VlR5Rksced6GMQJIzbueibZpXZcdbO1L9\nLlmtFqUFXNEDxXp3SlG49EB0+4Hd0+LOzBBIcqr8cLWSffFz2jQMhlI80d+Xz+2IrsI21mq3n3w9\nzuOyx4WnhnmJX2Vu/Ao/PeCSxWKJHuAZSvPEheJUv0uVMVfEc9it0fYRp8Mad8aKFJ8rGmyl498K\nHA/RyUnO+J0JnzMugCb7XNExNj6ncUwpPlfctqFUT9wqtMViUXKSU4fKjynZ51LTNqDYkwJ6XLbo\nZy/V74r7PPm9jrgdD5/brk7HW6Aav2UY0D1NW3YektPRsAPZpa1Pewor1a9rqnp2CESf27FNkopK\nj0T7pmPbZlL9rrig7rDboivLnUK+uL5zn6d5K0bjZ7Nxx81mtaiuPhLdyfB5HKo8UqNgiid6vnjv\n8W+T0pPdOny0UgGvM66HOsnjiJsLp8PW7NuSRrFB+0JzwQXq4uJiDRgwIHo/LS1N4XD4lIE6NdUr\nu/387rEcPFwjf5LzpEdCt4RR5/A37loAxryQkdcmMOqlLrQLJhj2uzdqhi64z6Jxv3ujBmXcZ9Gg\n17nAfvcd2iTpyks7yW6zKBQK6I4bB+qva3fp2hFdFQz69WzOVfrw0wP6emZ32W1Wzaiuk81qVZdO\nqfq36zwKpiVpaL+QgkG/fvXjMfr7+nxdfVkXBZKc+vWDY1VacUx9erRR7+7pCgQawk0w6Nd9U4bq\njXe+0LB+IV0+oJ12FFZq/8HD+mZmd3XvEFDZkVp17xBQKBTQPROHaNW63bp6WBcFg34988PR2pZf\nqrGXd5FFUsWxOnlcNnXqkKKp112ipCSXLrukrYJBv56YfoU2fVmsb2Z1l8/j0H23DlHVsVr17x1S\n+3bJOnKsVgN7tpH7+Pl4czfv102je6l9myR998aB2ltUqeEZnVRTW6ejtfXq2j6gYNCv6ROH6O/r\n8zXu8i5q2zagGRMz9OXeMl11WRfZbFbtLmr4Kn/qtX1VVlmttBSvsjI6KBj068fZw/T+xwWqi0R0\n6zV9NKRvSO9v3Kev9Qtp6ID2+sX9V8rjsisY9Oun3xmu//1kn751RQ+1TfNqxsQhCpdW6bLBHdW/\nqlrh48Hw+qt6a1DfkFZ+sFvfGNlN7dom6+HbLtOu/eW66vKuslotKjtSK5/Hod5dUnW0ularPtit\nMcM6Kxj066HbhunjbWFdm9VdgSSXsr/RTzV19erXK6j27ZKVmuLRpX0bfs8/+rev6cMtB/Ttsb3V\nLj1Jd988SOHSI7pscEcNrq7V0dqIurbzKxj067p0n47WRnT5gHb6dOchfbytSIEkp0YPa5iniqO1\nCiQ51b5dsm67foDSU0/M00+/M1xbdhzUN7J6yOdx6O5vD5bdZlGvbulK8rlVL4tGDGyvYNCvudOv\n0P9u3KfrMrspPdmj798yWPvCh3XzVT3lctp1tLZePTumKBj0654JQ5S7ab/GZ3WXw27T/ZMvVdGh\nKo36WmdZrVZZHXYl+5wKhQK665YM9eqapsv6t43+e1j/WaG+kdVDLqdNs+4cobq6enXtnKbOHVMV\nCvrULj1JwaBfj34vU29/uEdXZHRQss+lx+7O0idfhDXq0k6yWS1KTvHq7x/l6/rRvZTRr63+unaX\nenZK1pD+7RrGVHJEVwztIofdqgdl0bHqOgWDft11S4a6d07RgB7pCgb9mnn7ZdpRUK5rRnSTx2VX\nztShksWirp1TNTHgli/JpWHH/z08OeMKvfdxgb51ZS+1SfHouQfGaOuuEvXrlqo/rd6uYzV1GjWk\nY8P83zFC//i4QKMv7aRQmlf3Thqi3fvLlXVpJ9VHpLKqGgVTPQoG/coef4lSAm5165CsjH5to//u\nrhnZ7YK9qqklcoEt//30pz/V6NGjo6vUU6ZM0eOPP67u3bufdPtwuPmRzK0hGPRfMGNpDWavX2IO\nqN/c9UvMAfWbu36JOTBD/cHgyc/mc8H1UIdCIRUXF0fvFxUVKRg8+0vKAgAAAOfDBReos7KytHLl\nSknSli1bFAqFLqj+aQAAACDWBdeIMnToUA0YMECTJ0+WxWLRrFmzWntIAAAAwCldcIFakn784x+3\n9hAAAACAM3LBtXwAAAAAFxMCNQAAAJAAAjUAAACQAAI1AAAAkAACNQAAAJAAAjUAAACQAAI1AAAA\nkAACNQAAAJAAAjUAAACQAEskEom09iAAAACAixUr1AAAAEACCNQAAABAAgjUAAAAQAII1AAAAEAC\nCNQAAABAAgjUAAAAQFdFe9UAAAuCSURBVALsrT2AC8FTTz2lDRs2qLa2Vt/73vc0aNAgPfjgg6qr\nq1MwGNTTTz8tp9OpsrIy/ehHP1JSUpKeffZZSdKf/vQn/fKXv1SXLl0kSZmZmfr+978f9/o1NTV6\n+OGHtW/fPtlsNs2dO1edO3fWO++8oxdeeEEOh0NpaWl6+umn5XK5TFF/hw4ddPvtt0e3KSoq0s03\n36y77777vNUd61zPwf9v7/5joiz8OIC/7yB23KI5JJc/mZLFGuloRTmStHKjNf7A9WssyKI1cyFt\nSF4cYUaLH2ZbESMFwkVWCtwf5EwdSwjBHw2KYoW4UGOUV2bowQnccZ/vH+zuC53KyXPcHQ/v11/y\nPM89z/P++Hzgc/jcIwCcOnUKmZmZeO+997B27VoAgMPhwAcffIDa2lqcOHHCd4H/Q0l+AKisrER9\nfT2Cg4Oxbds2rFixYsL+1dwDwNTyq6kHgMlrAKi3B8rKytDa2urKc/HiRRw+fHjC/i0WC7KysmCx\nWKDX67Fz507MmTMH+/fvR21tLbRaLaKjo7Ft2zZoNJpZkX94eBhbtmxxbdPb24usrCwkJSX5Lvg4\n010DAPjmm2+Qk5ODffv24a677gIADA8PIy8vD2fOnIHJZPJd4P9Qkt9sNiMnJwcjIyNwOBx48803\nERMTM2H/gd4Disksd/z4cXn55ZdFROTSpUvyyCOPiMFgkIMHD4qIyM6dO2Xv3r0iIpKZmSmlpaWS\nkZHhen1dXZ0UFhbe8Bgmk0nefvttERFpbm6WzMxMERFJS0uTK1euiIiIwWCQ+vp674bzgD/zj5ee\nni5//PGHVzLdLF/U4Pz587Jx40bZtGmTfPvtt67lZWVl8vnnn0tcXJy3Y3lMaf7u7m5JTk4Wm80m\nnZ2d8uGHH7odQ809oCT/eDO5BzypgZp7YDyTySTl5eVuy0tKSlzLv/rqKykuLhar1SppaWkyMjIi\nIiKpqanS1tbm9XyT8Vf+8Ww2mzz33HMyMDDgtVw3wxc1OHnypBgMBnn22Wfl9OnTruXvvPOOVFVV\nSXJysrdjeUxp/sLCQvnyyy9FRKStrU1eeuklt2MEcg94w6wfqO12uwwODrr+HBcXJ2vXrpXh4WER\nEWlvb5fXXntNREQsFoucOHHipoep7OxsaWlpERGR0dFRWb169YT1NptN0tPT5eTJk17L5alAyN/S\n0iL5+fley3SzfFEDq9Uqdrtdtm7dOmGYsFgsIiJ+HSaU5t+1a5fs3r37hsdQcw94I/9M7wFPaqDm\nHnCy2Wzy9NNPy9WrV93WpaSkyLlz50RExGw2uw1PVqtVkpOT5ffff/dqNk8EQv79+/dLVVWVN2Pd\nFF/UwHmtP//88xMGaovFIr29vX4dqL3xPaCsrExERI4ePSpZWVluxwjkHvCGWX8PdVBQEPR6PQCg\ntrYWCQkJuHr1KkJCQgAAc+fOxd9//w0AuPXWW6+5j1OnTiE9PR0vvPACfvnlF7f1Fy9eRHh4OABA\nq9VCo9FgZGQEwNjtAo8//jiWLFmCuLg4r+ebjL/zA8Bnn32GtLQ0r+a6Gb6oQWhoKIKCgtyWX29/\nvqQ0f19fH/78809X/q6uLrdt1NwDSvMDM78HPKmBmnvA6ciRI3j44Yeh0+nc1o2/BubOnYu//vrL\ntW737t1Yt24dEhMTsXjxYq/l8pS/8wNATU0NnnrqKa/kmQpf1OB6r1NDD2zYsAEHDx5EYmIicnNz\nkZmZ6bZNIPeAN8z6gdqpoaEBtbW1yMvLm7BcJvmf2VeuXImMjAxUVlbi9ddfx9atWyc91vh9rl+/\nHg0NDbh8+TK+/vrrqZ28F/grv9lshtVqdd1/7E++rEEgmmp+EcHo6CgqKiqQkZEBo9E46bHU1ANK\n86uhB6ZSg0A01fxOdXV1WL9+/aTb/Xd/r7zyChoaGtDc3Iy2tjbPT9jL/JX/hx9+wLJlywJisPRV\nDQLVVPNXVFTgiSeewKFDh5Cfn4+ioqIbbh+oPaAEB2oAzc3N+OSTT1BeXo6wsDDo9XoMDQ0BGPth\nN2/evOu+NioqCmvWrAEAxMbG4tKlS7BarUhNTUVqaioaGxsxb9481zs7m80GGbvVBt999x0AIDg4\nGI899pjfLiJ/5He+621qasJDDz00vQE9MN01CHRK8kdEROCBBx6ARqPB/fffj76+PgwNDc2aHphq\nfjX1gCc1CHRK8gOA1WrFhQsXsGjRIgBjH7Bz5u/s7JxwDTj319/fj++//x4AoNPpkJCQgPb29mlM\neX3+yO/U2NiIVatWTVMyz013DQKdkvzt7e1YvXo1ACA+Ph6dnZ0zrgeUmvUDtcViQXFxMXbt2oU5\nc+YAGHtKg/PTuUeOHHFdJNdSXl6OAwcOAAC6u7sRHh4OvV6P6upqVFdXY82aNYiPj8ehQ4cAAEeP\nHsWDDz6IoKAgvPXWWzCbzQCAn376CUuXLp3OqNfkr/xOP//8M6Kjo6crnkd8UYNApjR/QkICjh07\nBgD47bffMH/+fOh0ulnTA1PN76SGHvCkBoFMaX4A6OrqwrJly1xfL1682JU/JiZmwjXg3J/dbofB\nYMDg4CCAsWthJvYAMLX8TmroAWDyGgQypfkjIyPR0dEBYOx7eWRk5IzqAW/QiKf/jqFS+/btQ0lJ\nyYS/wMLCQuTm5mJ4eBgLFixAQUEBtFotNmzYgCtXrsBsNmP58uXYtGkTli5diuzsbIgI7HY7cnJy\n3B4XNTo6itzcXJw7dw4hISEoLCzE/Pnz0dTUhJKSEoSEhCAiIgJFRUUIDQ2dNfkBYOPGjXj11Vex\ncuVKn+Yezxc1aGxsRGVlJXp6ehAeHo7bb78dn376KfLz89Hd3Y329nbcd999ePTRR/Hiiy/OqPyr\nVq3CRx99hJaWFgCAwWBAbGzshGOouQeU5AfU0QOe1EDtPXD48GG0trZi+/bt1zzG4OAgsrOz0d/f\nj9tuuw07duxAWFgYTCYT9u7di+DgYNx9993Yvn27zx8Z5s/8AJCUlISqqipERET4JO+1+KIGNTU1\nqK+vx6+//orIyEhERUWhuLgYmzdvxoULF3DmzBnExMTgmWee8fmjA5Xmj4qKgtFodP1G22g0ur1J\nCuQe8IZZP1ATERERESkx62/5ICIiIiJSggM1EREREZECHKiJiIiIiBTgQE1EREREpAAHaiIiIiIi\nBThQExGp1JYtW2Ayma67vqmpCf39/T48IyIideJATUQ0S+3ZsweXL1/292kQEc14fA41EZFKOBwO\nGI1GnD59GgsXLoTVasWTTz6J3t5eHD9+HABwxx13YMeOHaipqUFBQQGio6NRUFAAu92OoqIi2O12\n2Gw25OXl4Z577vFzIiKimSHY3ydARETe0draip6eHtTV1WFoaAjr1q1DYmIiQkND8cUXX0Cr1SI9\nPR3Hjh1DSkoKKioq8P777yMyMhJJSUkoLS3FkiVL0NXVhZycnBveLkJERP/HgZqISCW6u7sRGxsL\njUaD0NBQrFixAkFBQdBqtUhJSUFwcDB6enrw77//TnjdP//8g7Nnz8JoNLqWDQwMwOFwQKvlnYFE\nRJPhQE1EpBIiAo1G4/ra4XDAbDajvr4edXV10Ov12Lx5s9vrQkJCcMstt6C6utqXp0tEpBr81QMR\nkUrceeed6OjogIhgYGAAHR0d0Ol0WLhwIfR6Pfr6+vDjjz9iZGQEAKDRaGC32xEWFoZFixahqakJ\nAHD27Fl8/PHH/oxCRDSj8EOJREQqMTo6ijfeeAPnz5/HggULYLPZEB8fjwMHDkCj0WD58uW49957\nUVpaiqqqKuzZswetra0oKiqCTqfDu+++6xqyDQYDYmNj/R2JiGhG4EBNRERERKQAb/kgIiIiIlKA\nAzURERERkQIcqImIiIiIFOBATURERESkAAdqIiIiIiIFOFATERERESnAgZqIiIiISAEO1ERERERE\nCvwPcyAARnVmi8MAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f227cb990b8>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "5mdLdqAuDN59",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Here we can see that there is a spike of releases around November 2016. After that, the releases seem to be regular, so let's redraw the graph by looking after November 2016 only:"
]
},
{
"metadata": {
"id": "2xXAZ3kiDO1D",
"colab_type": "code",
"outputId": "be3d8e5a-c877-4b20-db62-fcb70b6ac09a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 433
}
},
"cell_type": "code",
"source": [
"results.plot(x=\"date\",y=\"numofreleases\",figsize=(18,6),ylim=(0,12500), xlim=('2016-12-01','2018-06-30'), rot=90)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f22779d0da0>"
]
},
"metadata": {
"tags": []
},
"execution_count": 13
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f227a33af98>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "Sp0eZXRCNztf",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"There is a drop of publications around January 2017, but the same happens in January 2018, so this could be explained as a seasonal occurrence in public procurement. Since 2017 seems to be a complete and regular year, we will use it for annual calculations for the indicators that require so."
]
},
{
"metadata": {
"id": "YwHEUFCrOY6_",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"###2.2. Tags and Updates\n",
"\n",
"*Here, we determine how to interpret the release tags.*"
]
},
{
"metadata": {
"id": "veQOqkUZO4F3",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"We will need to know how the release tags are used to write SQL queries. Let's look at the tags and count the releases used for each one:"
]
},
{
"metadata": {
"id": "8R1b8_9eO13y",
"colab_type": "code",
"outputId": "bc845b77-1fa4-44e1-852f-f56d3102e517",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 235
}
},
"cell_type": "code",
"source": [
"querystring = \"\"\"\n",
"\n",
" SELECT\n",
" data ->> 'tag' AS tag,\n",
" COUNT(data ->> 'id') AS release_count,\n",
" COUNT(data ->> 'buyer') AS buyer,\n",
" COUNT(data ->> 'planning') AS planning,\n",
" COUNT(data ->> 'tender') AS tender,\n",
" COUNT(data ->> 'awards') AS award,\n",
" COUNT(data ->> 'contracts') AS contract\n",
" FROM\n",
" data\n",
" JOIN\n",
" release ON data.id = release.data_id\n",
" JOIN\n",
" collection_file_status ON release.collection_file_status_id = collection_file_status.id\n",
" JOIN\n",
" collection ON collection_file_status.collection_id = collection.id\n",
" WHERE\n",
" source_id = '\"\"\" + source_id + \"\"\"' AND data_version = '\"\"\" + data_version + \"\"\"'\n",
" GROUP BY\n",
" tag\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>tag</th>\n",
" <th>release_count</th>\n",
" <th>buyer</th>\n",
" <th>planning</th>\n",
" <th>tender</th>\n",
" <th>award</th>\n",
" <th>contract</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>[\"tender\"]</td>\n",
" <td>225700</td>\n",
" <td>225700</td>\n",
" <td>0</td>\n",
" <td>225700</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>[\"tender\", \"award\"]</td>\n",
" <td>12909</td>\n",
" <td>12909</td>\n",
" <td>0</td>\n",
" <td>12909</td>\n",
" <td>12909</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>[\"tender\", \"award\", \"bid\"]</td>\n",
" <td>60005</td>\n",
" <td>60005</td>\n",
" <td>0</td>\n",
" <td>60005</td>\n",
" <td>60005</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>[\"tender\", \"award\", \"contract\"]</td>\n",
" <td>984698</td>\n",
" <td>984698</td>\n",
" <td>0</td>\n",
" <td>984698</td>\n",
" <td>984698</td>\n",
" <td>984698</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>[\"tender\", \"award\", \"contract\", \"bid\"]</td>\n",
" <td>535809</td>\n",
" <td>535809</td>\n",
" <td>0</td>\n",
" <td>535809</td>\n",
" <td>535809</td>\n",
" <td>535809</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>[\"tender\", \"bid\"]</td>\n",
" <td>36367</td>\n",
" <td>36367</td>\n",
" <td>0</td>\n",
" <td>36367</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" tag release_count buyer planning \\\n",
"0 [\"tender\"] 225700 225700 0 \n",
"1 [\"tender\", \"award\"] 12909 12909 0 \n",
"2 [\"tender\", \"award\", \"bid\"] 60005 60005 0 \n",
"3 [\"tender\", \"award\", \"contract\"] 984698 984698 0 \n",
"4 [\"tender\", \"award\", \"contract\", \"bid\"] 535809 535809 0 \n",
"5 [\"tender\", \"bid\"] 36367 36367 0 \n",
"\n",
" tender award contract \n",
"0 225700 0 0 \n",
"1 12909 12909 0 \n",
"2 60005 60005 0 \n",
"3 984698 984698 984698 \n",
"4 535809 535809 535809 \n",
"5 36367 0 0 "
]
},
"metadata": {
"tags": []
},
"execution_count": 8
}
]
},
{
"metadata": {
"id": "QuunAvgYPZ8C",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Note that there is no `planning` tag, which means that Ukraine does not publish any planning information.\n",
"\n",
"Also note that there is no update tags (`tenderUpdate`, `tenderAmendment`, `awardUpdate`, etc), neither are single tags used in releases (except for `tender`), which suggests that this publisher might be updating releases with new procurement information instead of generating new ones. Let's check if there is more than one release per `ocid` to be sure:"
]
},
{
"metadata": {
"id": "VZWjcc6mQRBW",
"colab_type": "code",
"outputId": "edc74eb3-1d85-4320-84f7-059dcdd3d7cd",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
}
},
"cell_type": "code",
"source": [
"querystring = \"\"\"\n",
"\n",
" WITH multiple_releases AS (\n",
" \n",
" SELECT\n",
" ocid AS ocid,\n",
" COUNT(*) AS release_count\n",
" FROM\n",
" release\n",
" JOIN\n",
" collection_file_status ON release.collection_file_status_id = collection_file_status.id\n",
" JOIN\n",
" collection ON collection_file_status.collection_id = collection.id\n",
" WHERE\n",
" source_id = '\"\"\" + source_id + \"\"\"' AND data_version = '\"\"\" + data_version + \"\"\"'\n",
" GROUP BY\n",
" ocid\n",
" \n",
" )\n",
" SELECT\n",
" MIN(release_count) AS min_release_count,\n",
" MAX(release_count) AS max_release_count,\n",
" AVG(release_count) AS average_release_count\n",
" FROM\n",
" multiple_releases\n",
"\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>min_release_count</th>\n",
" <th>max_release_count</th>\n",
" <th>average_release_count</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1.00000000000000000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" min_release_count max_release_count average_release_count\n",
"0 1 1 1.00000000000000000000"
]
},
"metadata": {
"tags": []
},
"execution_count": 7
}
]
},
{
"metadata": {
"id": "nL6oGAoNU2J1",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"There is no more than one release per procurement process, which seems to confirm our hypothesis. \n",
"\n",
"Although this method of publication is not compliant with OCDS, we can use the lack of historic data to simplify the queries. Therefore, all the queries from here on will be written knowing that each release contains the latest state of a procurement process. \n",
"\n",
"To help with the calculations ahead, let's count how many releases we have per tag:\n",
"\n",
"| Tag | # of Releases |\n",
"|--|--|\n",
"| Tender | 1,855,488 |\n",
"| Award | 1,593,421 |\n",
"| Contract | 1,520,507 |\n"
]
},
{
"metadata": {
"id": "CGvg_YJt6tEN",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### 2.3. Suppliers information\n",
"\n",
"*Here, we determine how suppliers are uniquely identified.*"
]
},
{
"metadata": {
"id": "ZCWzOxrbX18D",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Annual reports on public procurement usually include suppliers statistics. For the calculations involving suppliers to be accurate, we need a way to identify uniquely each one. \n",
"\n",
"OCDS defines the type `Identifier` for organisations, which allows publishers to use a national registry or other identification schemes when refering to them. Let's verify if this field is correctly used in the Ukraine dataset:"
]
},
{
"metadata": {
"id": "8A5XTsv66jIY",
"colab_type": "code",
"outputId": "9744367b-4910-46b1-c740-b870eff32f27",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1969
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT DISTINCT\n",
" suppliers -> 'name' AS Name,\n",
" suppliers -> 'identifier' ->> 'scheme' AS scheme,\n",
" suppliers -> 'identifier' ->> 'id' AS ID\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'awards') AS awards\n",
" CROSS JOIN\n",
" jsonb_array_elements(awards -> 'suppliers') AS suppliers\n",
" WHERE\n",
" data -> 'tag' ? 'award'\n",
" ORDER BY\n",
" suppliers -> 'identifier' ->> 'id'\n",
" \n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" <th>scheme</th>\n",
" <th>id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>TM.P. S.p.A. – TERMOMECCANICA POMPE.</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>«AIFA-GROUPSERVICE»</td>\n",
" <td>UA-EDR</td>\n",
" <td>_</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>«Fitch Ratings Ltd»</td>\n",
" <td>GB-GOV</td>\n",
" <td>_</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>AERO-GSE SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ SPÓŁKA KOMANDYTOWA</td>\n",
" <td>UA-EDR</td>\n",
" <td>__</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>«Fitch Ratings Ltd»</td>\n",
" <td>UA-EDR</td>\n",
" <td>__</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>«Moody’s Investors Service, Inc»</td>\n",
" <td>UA-EDR</td>\n",
" <td>__</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>«Moody’s Investors Service, Inc»</td>\n",
" <td>US-USAGOV</td>\n",
" <td>___</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>________</td>\n",
" <td>UA-EDR</td>\n",
" <td>_________</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>IATA</td>\n",
" <td>CA-CRA_ACR</td>\n",
" <td>__________</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>ФОП Лукошков В.М.</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>ФОП Вовк І.В.</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>ФОП Вінат А.В.</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>ПП Охорона-002</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>ФОП Добровольський Я.В.</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>ТОВ «Літера ЛТД»</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>SENTEK DYNAMICS Inc</td>\n",
" <td>US-EIN</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>ПП Рембуд Партнет</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>ФОП Лиходєдов Л.Б.</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>ЧФ ПАТ Укртелеком</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>ФОП Тригуб О.К.</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>ДП Черкаський міський земельно-кадастровий центр</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>ТОВ Пробрейн</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>ТОВ Черкасишляхбуд</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>Видавництво \"Алатон\"</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>Видавничий дім \"Освіта\"</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>SHENZHEN RION INERTIAL TECHNOLOGY CO., LTD</td>\n",
" <td>CN-SAIC</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>Видавництво \"Абетка\"</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>ФОП Геращенко Ю.М.</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>ТОВ Автомагістраль-Центр</td>\n",
" <td>UA-EDR</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>ANHUI JB IMP.&amp;EXP.CO.,LTD</td>\n",
" <td>CN-SAIC</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428200</th>\n",
" <td>ФОП Чернін Ігор Олександрович</td>\n",
" <td>UA-EDR</td>\n",
" <td>ФОП Чернін І.О.</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428201</th>\n",
" <td>Томсон Рейтерс (Маркетс) Истерн Юроп ЛТД /Thomson Reuters (Markets) Eastern Europe LTD</td>\n",
" <td>UA-EDR</td>\n",
" <td>ххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428202</th>\n",
" <td>ФОП Дуняк І.В.</td>\n",
" <td>UA-EDR</td>\n",
" <td>ххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428203</th>\n",
" <td>ФОП Данилюк Р.І.</td>\n",
" <td>UA-EDR</td>\n",
" <td>хххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428204</th>\n",
" <td>ФОП Чепига Олег Романович</td>\n",
" <td>UA-EDR</td>\n",
" <td>хххххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428205</th>\n",
" <td>ФОП Спасюк Василь Миколайович</td>\n",
" <td>UA-EDR</td>\n",
" <td>хххххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428206</th>\n",
" <td>ФОП Бурдега Віталій Дмитрович</td>\n",
" <td>UA-EDR</td>\n",
" <td>хххххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428207</th>\n",
" <td>Фізична особа-підприємець Пуримов Михайло Юрійович</td>\n",
" <td>UA-EDR</td>\n",
" <td>хххххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428208</th>\n",
" <td>ФОП Колотило Роман Іванович</td>\n",
" <td>UA-EDR</td>\n",
" <td>хххххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428209</th>\n",
" <td>ФОП Петрук Сергій Васильович</td>\n",
" <td>UA-EDR</td>\n",
" <td>хххххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428210</th>\n",
" <td>Фізична особа-підприємець Нікітіна Зоя Андріївна</td>\n",
" <td>UA-EDR</td>\n",
" <td>хххххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428211</th>\n",
" <td>ФОП Дідур Наталія Володимирівна</td>\n",
" <td>UA-EDR</td>\n",
" <td>хххххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428212</th>\n",
" <td>П/п Ільчук Іванна Дмитрівна</td>\n",
" <td>UA-EDR</td>\n",
" <td>хххххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428213</th>\n",
" <td>ФОП Онопчук Вікторія Петрівна</td>\n",
" <td>UA-EDR</td>\n",
" <td>хххххххххх</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428214</th>\n",
" <td>ФОП Пенязь Тетяна Олексіївна</td>\n",
" <td>UA-EDR</td>\n",
" <td>ХХХХХХХХХХ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428215</th>\n",
" <td>ФОП Петраш Ксенія Тарасівна</td>\n",
" <td>FI-PRO</td>\n",
" <td>ХХХХХХХХХХ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428216</th>\n",
" <td>ФОП Черскова І.О.</td>\n",
" <td>UA-EDR</td>\n",
" <td>Черскова Інга Олександрівна</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428217</th>\n",
" <td>Товариство з обмеженою відповідальністю фірма \"ОСТ\" ЛТД</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428218</th>\n",
" <td>Товариство з обмеженою відповідальністю \"компанія\"Стімпекс\"</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428219</th>\n",
" <td>ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ \"ОТ\"</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428220</th>\n",
" <td>ПП Штріх</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428221</th>\n",
" <td>ФОП Піскайкіна Ольга Володимирівна</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428222</th>\n",
" <td>Приватне підприємство \"Торгова фірма \"Скорпіон\"</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428223</th>\n",
" <td>Товариство з обмеженою відповідальністю \"Рігвєда\"</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428224</th>\n",
" <td>Товариство з обмеженою відповідальністю \"Україна-енергосервіс, ЛТД\"</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428225</th>\n",
" <td>ТОВ \"Компанія \"Версія\"</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428226</th>\n",
" <td>Приватна наукова виробнича комерційна фірма \"Дельта\"</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428227</th>\n",
" <td>ТОВ \"Корсар\"</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428228</th>\n",
" <td>ООО \"Азовтехгаз\"</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428229</th>\n",
" <td>ТОВ СПЕЦ ДРЕНАЖ</td>\n",
" <td>UA-EDR</td>\n",
" <td>None</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>428230 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" name \\\n",
"0 TM.P. S.p.A. – TERMOMECCANICA POMPE. \n",
"1 «AIFA-GROUPSERVICE» \n",
"2 «Fitch Ratings Ltd» \n",
"3 AERO-GSE SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ SPÓŁKA KOMANDYTOWA \n",
"4 «Fitch Ratings Ltd» \n",
"5 «Moody’s Investors Service, Inc» \n",
"6 «Moody’s Investors Service, Inc» \n",
"7 ________ \n",
"8 IATA \n",
"9 ФОП Лукошков В.М. \n",
"10 ФОП Вовк І.В. \n",
"11 ФОП Вінат А.В. \n",
"12 ПП Охорона-002 \n",
"13 ФОП Добровольський Я.В. \n",
"14 ТОВ «Літера ЛТД» \n",
"15 SENTEK DYNAMICS Inc \n",
"16 ПП Рембуд Партнет \n",
"17 ФОП Лиходєдов Л.Б. \n",
"18 ЧФ ПАТ Укртелеком \n",
"19 ФОП Тригуб О.К. \n",
"20 ДП Черкаський міський земельно-кадастровий центр \n",
"21 ТОВ Пробрейн \n",
"22 ТОВ Черкасишляхбуд \n",
"23 Видавництво \"Алатон\" \n",
"24 Видавничий дім \"Освіта\" \n",
"25 SHENZHEN RION INERTIAL TECHNOLOGY CO., LTD \n",
"26 Видавництво \"Абетка\" \n",
"27 ФОП Геращенко Ю.М. \n",
"28 ТОВ Автомагістраль-Центр \n",
"29 ANHUI JB IMP.&EXP.CO.,LTD \n",
"... ... \n",
"428200 ФОП Чернін Ігор Олександрович \n",
"428201 Томсон Рейтерс (Маркетс) Истерн Юроп ЛТД /Thomson Reuters (Markets) Eastern Europe LTD \n",
"428202 ФОП Дуняк І.В. \n",
"428203 ФОП Данилюк Р.І. \n",
"428204 ФОП Чепига Олег Романович \n",
"428205 ФОП Спасюк Василь Миколайович \n",
"428206 ФОП Бурдега Віталій Дмитрович \n",
"428207 Фізична особа-підприємець Пуримов Михайло Юрійович \n",
"428208 ФОП Колотило Роман Іванович \n",
"428209 ФОП Петрук Сергій Васильович \n",
"428210 Фізична особа-підприємець Нікітіна Зоя Андріївна \n",
"428211 ФОП Дідур Наталія Володимирівна \n",
"428212 П/п Ільчук Іванна Дмитрівна \n",
"428213 ФОП Онопчук Вікторія Петрівна \n",
"428214 ФОП Пенязь Тетяна Олексіївна \n",
"428215 ФОП Петраш Ксенія Тарасівна \n",
"428216 ФОП Черскова І.О. \n",
"428217 Товариство з обмеженою відповідальністю фірма \"ОСТ\" ЛТД \n",
"428218 Товариство з обмеженою відповідальністю \"компанія\"Стімпекс\" \n",
"428219 ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ \"ОТ\" \n",
"428220 ПП Штріх \n",
"428221 ФОП Піскайкіна Ольга Володимирівна \n",
"428222 Приватне підприємство \"Торгова фірма \"Скорпіон\" \n",
"428223 Товариство з обмеженою відповідальністю \"Рігвєда\" \n",
"428224 Товариство з обмеженою відповідальністю \"Україна-енергосервіс, ЛТД\" \n",
"428225 ТОВ \"Компанія \"Версія\" \n",
"428226 Приватна наукова виробнича комерційна фірма \"Дельта\" \n",
"428227 ТОВ \"Корсар\" \n",
"428228 ООО \"Азовтехгаз\" \n",
"428229 ТОВ СПЕЦ ДРЕНАЖ \n",
"\n",
" scheme id \n",
"0 UA-EDR - \n",
"1 UA-EDR _ \n",
"2 GB-GOV _ \n",
"3 UA-EDR __ \n",
"4 UA-EDR __ \n",
"5 UA-EDR __ \n",
"6 US-USAGOV ___ \n",
"7 UA-EDR _________ \n",
"8 CA-CRA_ACR __________ \n",
"9 UA-EDR - \n",
"10 UA-EDR - \n",
"11 UA-EDR - \n",
"12 UA-EDR - \n",
"13 UA-EDR - \n",
"14 UA-EDR - \n",
"15 US-EIN - \n",
"16 UA-EDR - \n",
"17 UA-EDR - \n",
"18 UA-EDR - \n",
"19 UA-EDR - \n",
"20 UA-EDR - \n",
"21 UA-EDR - \n",
"22 UA-EDR - \n",
"23 UA-EDR - \n",
"24 UA-EDR - \n",
"25 CN-SAIC - \n",
"26 UA-EDR - \n",
"27 UA-EDR - \n",
"28 UA-EDR - \n",
"29 CN-SAIC - \n",
"... ... .. \n",
"428200 UA-EDR ФОП Чернін І.О. \n",
"428201 UA-EDR ххххххх \n",
"428202 UA-EDR ххххххх \n",
"428203 UA-EDR хххххххх \n",
"428204 UA-EDR хххххххххх \n",
"428205 UA-EDR хххххххххх \n",
"428206 UA-EDR хххххххххх \n",
"428207 UA-EDR хххххххххх \n",
"428208 UA-EDR хххххххххх \n",
"428209 UA-EDR хххххххххх \n",
"428210 UA-EDR хххххххххх \n",
"428211 UA-EDR хххххххххх \n",
"428212 UA-EDR хххххххххх \n",
"428213 UA-EDR хххххххххх \n",
"428214 UA-EDR ХХХХХХХХХХ \n",
"428215 FI-PRO ХХХХХХХХХХ \n",
"428216 UA-EDR Черскова Інга Олександрівна \n",
"428217 UA-EDR None \n",
"428218 UA-EDR None \n",
"428219 UA-EDR None \n",
"428220 UA-EDR None \n",
"428221 UA-EDR None \n",
"428222 UA-EDR None \n",
"428223 UA-EDR None \n",
"428224 UA-EDR None \n",
"428225 UA-EDR None \n",
"428226 UA-EDR None \n",
"428227 UA-EDR None \n",
"428228 UA-EDR None \n",
"428229 UA-EDR None \n",
"\n",
"[428230 rows x 3 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 52
}
]
},
{
"metadata": {
"id": "MwoMwtv_SNrS",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"They seem to use a standard scheme, but still we can see some issues:\n",
"\n",
"* The use of dummy and `null` values as Supplier ID\n",
"* A few suppliers seem to be duplicated (like *ФОП \"Кокін Е.Г.\"* and *ФОП \"Кокін Е.Г.*, the last one is missing a quote sign)\n",
"\n",
"So although we can make calculations on suppliers, we have no way to know how accurate they would be. "
]
},
{
"metadata": {
"id": "jT6p_YDtoOLQ",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"###2.4. Award and Contract value information\n",
"\n",
"*Here, we determine whether award and contract values are available.*"
]
},
{
"metadata": {
"id": "myZMn-V0oX0q",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"In OCDS, a `value` object (which represents a monetary value) is included in both `awards` and `contracts` sections. The standard requires to specify both the awarded value and the contract value because they may differ. \n",
"\n",
"Let's see if the `value` information is correctly included in the `awards` section first:\n",
"\n"
]
},
{
"metadata": {
"id": "SqdwtKblrQqV",
"colab_type": "code",
"outputId": "991cbb84-c912-4e88-a367-4506f662ec9a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1847
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" data -> 'ocid' AS ocid,\n",
" data -> 'date' AS publicationDate,\n",
" awards -> 'status' AS status,\n",
" awards -> 'value' ->> 'amount' AS amount,\n",
" awards -> 'value' ->> 'currency' AS currency\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'awards') AS awards\n",
" WHERE\n",
" data -> 'tag' ? 'award'\n",
" AND\n",
" (\n",
" awards -> 'value' IS NULL \n",
" OR \n",
" awards -> 'value' ->> 'amount' IS NULL\n",
" OR\n",
" awards -> 'value' ->> 'amount' = '0'\n",
" OR\n",
" awards -> 'value' ->> 'amount' = ''\n",
" OR\n",
" awards -> 'value' ->> 'currency' IS NULL\n",
" OR\n",
" awards -> 'value' ->> 'currency' = ''\n",
" )\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ocid</th>\n",
" <th>publicationdate</th>\n",
" <th>status</th>\n",
" <th>amount</th>\n",
" <th>currency</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>ocds-be6bcu-UA-2016-12-19-000117-c</td>\n",
" <td>2016-12-19T21:33:01.481971+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>ocds-be6bcu-UA-2017-04-21-000661-c</td>\n",
" <td>2017-06-21T11:10:08.143340+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>ocds-be6bcu-UA-2017-04-21-000661-c</td>\n",
" <td>2017-06-21T11:10:08.143340+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>ocds-be6bcu-UA-2017-04-21-000661-c</td>\n",
" <td>2017-06-21T11:10:08.143340+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>ocds-be6bcu-UA-2017-04-21-000661-c</td>\n",
" <td>2017-06-21T11:10:08.143340+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>ocds-be6bcu-UA-2016-07-21-000171-b</td>\n",
" <td>2016-11-04T22:45:30.497858+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>ocds-be6bcu-UA-2016-12-07-000963-a</td>\n",
" <td>2016-12-22T16:22:08.473647+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>ocds-be6bcu-UA-2016-11-17-000788-c</td>\n",
" <td>2016-11-29T13:44:43.816893+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>ocds-be6bcu-UA-2016-12-06-000796-b</td>\n",
" <td>2016-12-21T12:56:25.524798+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>ocds-be6bcu-UA-2017-04-28-000165-c</td>\n",
" <td>2017-06-02T09:33:59.624736+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>ocds-be6bcu-UA-2017-04-28-000165-c</td>\n",
" <td>2017-06-02T09:33:59.624736+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>ocds-be6bcu-UA-2016-12-28-001127-b</td>\n",
" <td>2017-01-05T12:12:34.400738+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>ocds-be6bcu-UA-2016-08-16-000016-b</td>\n",
" <td>2016-11-04T23:18:41.218290+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>ocds-be6bcu-UA-2016-05-31-000100-c</td>\n",
" <td>2016-11-04T21:52:36.334622+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>ocds-be6bcu-UA-2017-04-05-000187-c</td>\n",
" <td>2017-04-05T11:25:43.543182+03:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>ocds-be6bcu-UA-2016-06-16-000034-a</td>\n",
" <td>2016-11-04T22:10:01.106579+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>ocds-be6bcu-UA-2016-10-05-000063-b</td>\n",
" <td>2016-11-05T01:08:39.026820+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>ocds-be6bcu-UA-2016-12-08-000185-a</td>\n",
" <td>2016-12-20T11:28:37.362483+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>ocds-be6bcu-UA-2017-03-02-000599-b</td>\n",
" <td>2017-03-02T13:21:35.226329+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>ocds-be6bcu-UA-2017-04-04-000499-a</td>\n",
" <td>2017-05-26T10:59:58.744245+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>ocds-be6bcu-UA-2017-04-04-000499-a</td>\n",
" <td>2017-05-26T10:59:58.744245+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>ocds-be6bcu-UA-2017-04-04-000499-a</td>\n",
" <td>2017-05-26T10:59:58.744245+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>ocds-be6bcu-UA-2017-04-04-000499-a</td>\n",
" <td>2017-05-26T10:59:58.744245+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>ocds-be6bcu-UA-2017-04-04-000499-a</td>\n",
" <td>2017-05-26T10:59:58.744245+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>ocds-be6bcu-UA-2017-04-04-000499-a</td>\n",
" <td>2017-05-26T10:59:58.744245+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>ocds-be6bcu-UA-2017-04-04-000499-a</td>\n",
" <td>2017-05-26T10:59:58.744245+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>ocds-be6bcu-UA-2017-04-04-000499-a</td>\n",
" <td>2017-05-26T10:59:58.744245+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>ocds-be6bcu-UA-2017-04-04-000499-a</td>\n",
" <td>2017-05-26T10:59:58.744245+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>ocds-be6bcu-UA-2017-04-04-000499-a</td>\n",
" <td>2017-05-26T10:59:58.744245+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>ocds-be6bcu-UA-2017-04-04-000499-a</td>\n",
" <td>2017-05-26T10:59:58.744245+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>ocds-be6bcu-UA-2017-03-29-000156-b</td>\n",
" <td>2017-05-05T09:11:23.562021+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>ocds-be6bcu-UA-2016-12-22-000529-a</td>\n",
" <td>2016-12-22T16:18:06.381443+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>ocds-be6bcu-UA-2017-03-02-001126-b</td>\n",
" <td>2017-03-02T16:51:33.129241+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>ocds-be6bcu-UA-2017-01-04-000487-b</td>\n",
" <td>2017-01-30T09:49:03.622588+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>ocds-be6bcu-UA-2016-05-31-000111-c</td>\n",
" <td>2016-11-04T21:52:38.150483+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>ocds-be6bcu-UA-2017-03-21-000142-a</td>\n",
" <td>2017-05-05T11:29:22.621294+03:00</td>\n",
" <td>cancelled</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>ocds-be6bcu-UA-2017-07-12-001357-b</td>\n",
" <td>2017-07-12T14:39:12.356063+03:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>ocds-be6bcu-UA-2017-04-05-000740-c</td>\n",
" <td>2017-06-08T14:54:57.345739+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>ocds-be6bcu-UA-2017-04-05-000740-c</td>\n",
" <td>2017-06-08T14:54:57.345739+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>ocds-be6bcu-UA-2016-11-10-001420-b</td>\n",
" <td>2016-12-27T00:05:03.429018+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>ocds-be6bcu-UA-2016-11-10-001420-b</td>\n",
" <td>2016-12-27T00:05:03.429018+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>ocds-be6bcu-UA-2016-11-10-001420-b</td>\n",
" <td>2016-12-27T00:05:03.429018+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>ocds-be6bcu-UA-2016-11-10-001420-b</td>\n",
" <td>2016-12-27T00:05:03.429018+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>ocds-be6bcu-UA-2016-11-10-001420-b</td>\n",
" <td>2016-12-27T00:05:03.429018+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>ocds-be6bcu-UA-2016-11-10-001420-b</td>\n",
" <td>2016-12-27T00:05:03.429018+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>ocds-be6bcu-UA-2016-11-10-001420-b</td>\n",
" <td>2016-12-27T00:05:03.429018+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>ocds-be6bcu-UA-2016-11-10-001420-b</td>\n",
" <td>2016-12-27T00:05:03.429018+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>ocds-be6bcu-UA-2016-11-10-001420-b</td>\n",
" <td>2016-12-27T00:05:03.429018+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>ocds-be6bcu-UA-2016-11-15-001770-a</td>\n",
" <td>2016-12-19T16:44:42.424787+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>ocds-be6bcu-UA-2017-05-15-002555-b</td>\n",
" <td>2017-07-01T15:58:04.044969+03:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>ocds-be6bcu-UA-2017-07-12-001442-b</td>\n",
" <td>2017-07-12T14:53:20.326947+03:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>ocds-be6bcu-UA-2016-10-13-000286-a</td>\n",
" <td>2016-11-05T01:26:46.811378+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>ocds-be6bcu-UA-2017-05-18-000589-c</td>\n",
" <td>2017-05-18T16:58:06.239603+03:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>ocds-be6bcu-UA-2017-04-25-000202-c</td>\n",
" <td>2017-04-25T15:46:14.618354+03:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>ocds-be6bcu-UA-2017-12-06-000438-a</td>\n",
" <td>2017-12-27T12:20:55.770458+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>ocds-be6bcu-UA-2017-05-19-000308-b</td>\n",
" <td>2017-05-19T10:34:31.316795+03:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>ocds-be6bcu-UA-2017-02-10-000038-a</td>\n",
" <td>2017-02-28T12:44:41.760769+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>ocds-be6bcu-UA-2016-12-26-000542-c</td>\n",
" <td>2017-01-27T14:51:02.545720+02:00</td>\n",
" <td>unsuccessful</td>\n",
" <td>None</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ocid publicationdate \\\n",
"0 ocds-be6bcu-UA-2016-12-19-000117-c 2016-12-19T21:33:01.481971+02:00 \n",
"1 ocds-be6bcu-UA-2017-04-21-000661-c 2017-06-21T11:10:08.143340+03:00 \n",
"2 ocds-be6bcu-UA-2017-04-21-000661-c 2017-06-21T11:10:08.143340+03:00 \n",
"3 ocds-be6bcu-UA-2017-04-21-000661-c 2017-06-21T11:10:08.143340+03:00 \n",
"4 ocds-be6bcu-UA-2017-04-21-000661-c 2017-06-21T11:10:08.143340+03:00 \n",
"5 ocds-be6bcu-UA-2016-07-21-000171-b 2016-11-04T22:45:30.497858+02:00 \n",
"6 ocds-be6bcu-UA-2016-12-07-000963-a 2016-12-22T16:22:08.473647+02:00 \n",
"7 ocds-be6bcu-UA-2016-11-17-000788-c 2016-11-29T13:44:43.816893+02:00 \n",
"8 ocds-be6bcu-UA-2016-12-06-000796-b 2016-12-21T12:56:25.524798+02:00 \n",
"9 ocds-be6bcu-UA-2017-04-28-000165-c 2017-06-02T09:33:59.624736+03:00 \n",
"10 ocds-be6bcu-UA-2017-04-28-000165-c 2017-06-02T09:33:59.624736+03:00 \n",
"11 ocds-be6bcu-UA-2016-12-28-001127-b 2017-01-05T12:12:34.400738+02:00 \n",
"12 ocds-be6bcu-UA-2016-08-16-000016-b 2016-11-04T23:18:41.218290+02:00 \n",
"13 ocds-be6bcu-UA-2016-05-31-000100-c 2016-11-04T21:52:36.334622+02:00 \n",
"14 ocds-be6bcu-UA-2017-04-05-000187-c 2017-04-05T11:25:43.543182+03:00 \n",
"15 ocds-be6bcu-UA-2016-06-16-000034-a 2016-11-04T22:10:01.106579+02:00 \n",
"16 ocds-be6bcu-UA-2016-10-05-000063-b 2016-11-05T01:08:39.026820+02:00 \n",
"17 ocds-be6bcu-UA-2016-12-08-000185-a 2016-12-20T11:28:37.362483+02:00 \n",
"18 ocds-be6bcu-UA-2017-03-02-000599-b 2017-03-02T13:21:35.226329+02:00 \n",
"19 ocds-be6bcu-UA-2017-04-04-000499-a 2017-05-26T10:59:58.744245+03:00 \n",
"20 ocds-be6bcu-UA-2017-04-04-000499-a 2017-05-26T10:59:58.744245+03:00 \n",
"21 ocds-be6bcu-UA-2017-04-04-000499-a 2017-05-26T10:59:58.744245+03:00 \n",
"22 ocds-be6bcu-UA-2017-04-04-000499-a 2017-05-26T10:59:58.744245+03:00 \n",
"23 ocds-be6bcu-UA-2017-04-04-000499-a 2017-05-26T10:59:58.744245+03:00 \n",
"24 ocds-be6bcu-UA-2017-04-04-000499-a 2017-05-26T10:59:58.744245+03:00 \n",
"25 ocds-be6bcu-UA-2017-04-04-000499-a 2017-05-26T10:59:58.744245+03:00 \n",
"26 ocds-be6bcu-UA-2017-04-04-000499-a 2017-05-26T10:59:58.744245+03:00 \n",
"27 ocds-be6bcu-UA-2017-04-04-000499-a 2017-05-26T10:59:58.744245+03:00 \n",
"28 ocds-be6bcu-UA-2017-04-04-000499-a 2017-05-26T10:59:58.744245+03:00 \n",
"29 ocds-be6bcu-UA-2017-04-04-000499-a 2017-05-26T10:59:58.744245+03:00 \n",
"30 ocds-be6bcu-UA-2017-03-29-000156-b 2017-05-05T09:11:23.562021+03:00 \n",
"31 ocds-be6bcu-UA-2016-12-22-000529-a 2016-12-22T16:18:06.381443+02:00 \n",
"32 ocds-be6bcu-UA-2017-03-02-001126-b 2017-03-02T16:51:33.129241+02:00 \n",
"33 ocds-be6bcu-UA-2017-01-04-000487-b 2017-01-30T09:49:03.622588+02:00 \n",
"34 ocds-be6bcu-UA-2016-05-31-000111-c 2016-11-04T21:52:38.150483+02:00 \n",
"35 ocds-be6bcu-UA-2017-03-21-000142-a 2017-05-05T11:29:22.621294+03:00 \n",
"36 ocds-be6bcu-UA-2017-07-12-001357-b 2017-07-12T14:39:12.356063+03:00 \n",
"37 ocds-be6bcu-UA-2017-04-05-000740-c 2017-06-08T14:54:57.345739+03:00 \n",
"38 ocds-be6bcu-UA-2017-04-05-000740-c 2017-06-08T14:54:57.345739+03:00 \n",
"39 ocds-be6bcu-UA-2016-11-10-001420-b 2016-12-27T00:05:03.429018+02:00 \n",
"40 ocds-be6bcu-UA-2016-11-10-001420-b 2016-12-27T00:05:03.429018+02:00 \n",
"41 ocds-be6bcu-UA-2016-11-10-001420-b 2016-12-27T00:05:03.429018+02:00 \n",
"42 ocds-be6bcu-UA-2016-11-10-001420-b 2016-12-27T00:05:03.429018+02:00 \n",
"43 ocds-be6bcu-UA-2016-11-10-001420-b 2016-12-27T00:05:03.429018+02:00 \n",
"44 ocds-be6bcu-UA-2016-11-10-001420-b 2016-12-27T00:05:03.429018+02:00 \n",
"45 ocds-be6bcu-UA-2016-11-10-001420-b 2016-12-27T00:05:03.429018+02:00 \n",
"46 ocds-be6bcu-UA-2016-11-10-001420-b 2016-12-27T00:05:03.429018+02:00 \n",
"47 ocds-be6bcu-UA-2016-11-10-001420-b 2016-12-27T00:05:03.429018+02:00 \n",
"48 ocds-be6bcu-UA-2016-11-15-001770-a 2016-12-19T16:44:42.424787+02:00 \n",
"49 ocds-be6bcu-UA-2017-05-15-002555-b 2017-07-01T15:58:04.044969+03:00 \n",
"50 ocds-be6bcu-UA-2017-07-12-001442-b 2017-07-12T14:53:20.326947+03:00 \n",
"51 ocds-be6bcu-UA-2016-10-13-000286-a 2016-11-05T01:26:46.811378+02:00 \n",
"52 ocds-be6bcu-UA-2017-05-18-000589-c 2017-05-18T16:58:06.239603+03:00 \n",
"53 ocds-be6bcu-UA-2017-04-25-000202-c 2017-04-25T15:46:14.618354+03:00 \n",
"54 ocds-be6bcu-UA-2017-12-06-000438-a 2017-12-27T12:20:55.770458+02:00 \n",
"55 ocds-be6bcu-UA-2017-05-19-000308-b 2017-05-19T10:34:31.316795+03:00 \n",
"56 ocds-be6bcu-UA-2017-02-10-000038-a 2017-02-28T12:44:41.760769+02:00 \n",
"57 ocds-be6bcu-UA-2016-12-26-000542-c 2017-01-27T14:51:02.545720+02:00 \n",
"\n",
" status amount currency \n",
"0 active None UAH \n",
"1 unsuccessful None UAH \n",
"2 unsuccessful None UAH \n",
"3 unsuccessful None UAH \n",
"4 unsuccessful None UAH \n",
"5 active None UAH \n",
"6 unsuccessful None UAH \n",
"7 pending None UAH \n",
"8 active None UAH \n",
"9 unsuccessful None UAH \n",
"10 unsuccessful None UAH \n",
"11 unsuccessful None UAH \n",
"12 active None UAH \n",
"13 active None UAH \n",
"14 active None UAH \n",
"15 active None UAH \n",
"16 active None UAH \n",
"17 active None UAH \n",
"18 pending None UAH \n",
"19 unsuccessful None UAH \n",
"20 unsuccessful None UAH \n",
"21 unsuccessful None UAH \n",
"22 unsuccessful None UAH \n",
"23 unsuccessful None UAH \n",
"24 unsuccessful None UAH \n",
"25 unsuccessful None UAH \n",
"26 unsuccessful None UAH \n",
"27 unsuccessful None UAH \n",
"28 unsuccessful None UAH \n",
"29 unsuccessful None UAH \n",
"30 unsuccessful None UAH \n",
"31 active None UAH \n",
"32 pending None UAH \n",
"33 unsuccessful None UAH \n",
"34 active None UAH \n",
"35 cancelled None UAH \n",
"36 active None UAH \n",
"37 unsuccessful None UAH \n",
"38 unsuccessful None UAH \n",
"39 unsuccessful None UAH \n",
"40 unsuccessful None UAH \n",
"41 unsuccessful None UAH \n",
"42 unsuccessful None UAH \n",
"43 unsuccessful None UAH \n",
"44 unsuccessful None UAH \n",
"45 unsuccessful None UAH \n",
"46 unsuccessful None UAH \n",
"47 unsuccessful None UAH \n",
"48 unsuccessful None UAH \n",
"49 unsuccessful None UAH \n",
"50 active None UAH \n",
"51 active None UAH \n",
"52 pending None UAH \n",
"53 active None UAH \n",
"54 unsuccessful None UAH \n",
"55 active None UAH \n",
"56 active None UAH \n",
"57 unsuccessful None UAH "
]
},
"metadata": {
"tags": []
},
"execution_count": 53
}
]
},
{
"metadata": {
"id": "qHPcJzbrr8SQ",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Values are not relevant for unsuccessful tenders or cancelled awards, so we are excluding those.\n",
"\n",
"There are a few awards with missing values. Note that most of them are unsuccessful, which makes sense, but a few are active, which seems wrong. This could be a publication issue, because the number is very low for the number of releases with awards sections (~20 awards vs 1,593,421 releases with award sections). Since the number is very low, we can ignore these missing amounts in the calculations.\n",
"\n",
"Let's do the same now for values in the `contracts` section:"
]
},
{
"metadata": {
"id": "cvnH_RMitJNJ",
"colab_type": "code",
"outputId": "74d9d01c-cd28-4860-c966-a5c7c86d44c6",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1969
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" data -> 'ocid' AS ocid,\n",
" data -> 'date' AS publicationDate,\n",
" contracts ->> 'status' AS status,\n",
" contracts -> 'value' ->> 'amount' AS amount,\n",
" contracts -> 'value' ->> 'currency' AS currency\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'contracts') AS contracts\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" AND\n",
" (\n",
" contracts -> 'value' IS NULL \n",
" OR \n",
" contracts -> 'value' ->> 'amount' IS NULL\n",
" OR\n",
" contracts -> 'value' ->> 'amount' = '0'\n",
" OR\n",
" contracts -> 'value' ->> 'amount' = ''\n",
" OR\n",
" contracts -> 'value' ->> 'currency' IS NULL\n",
" OR\n",
" contracts -> 'value' ->> 'currency' = ''\n",
" )\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ocid</th>\n",
" <th>publicationdate</th>\n",
" <th>status</th>\n",
" <th>amount</th>\n",
" <th>currency</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>ocds-be6bcu-UA-2016-01-29-000216-b</td>\n",
" <td>2016-11-04T20:32:30.269709+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>ocds-be6bcu-UA-2015-12-21-000125-a</td>\n",
" <td>2016-11-04T20:23:54.004334+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>ocds-be6bcu-UA-2015-11-19-000032-b</td>\n",
" <td>2016-11-04T20:13:46.755658+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>ocds-be6bcu-UA-2016-01-19-000065-a</td>\n",
" <td>2016-11-04T20:28:01.532376+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>ocds-be6bcu-UA-2015-12-02-000157-a</td>\n",
" <td>2016-11-04T20:18:19.949402+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>ocds-be6bcu-UA-2015-09-23-000159</td>\n",
" <td>2016-11-04T20:01:21.154264+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>ocds-be6bcu-UA-2016-03-12-000100-c</td>\n",
" <td>2016-11-04T20:54:52.420353+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>ocds-be6bcu-UA-2015-10-19-000033</td>\n",
" <td>2016-11-04T20:05:24.113557+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>ocds-be6bcu-UA-2016-01-13-000036-a</td>\n",
" <td>2016-11-04T20:26:19.881689+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>ocds-be6bcu-UA-2015-12-08-000107-a</td>\n",
" <td>2016-11-04T20:20:16.547638+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>ocds-be6bcu-UA-2015-08-28-000123</td>\n",
" <td>2016-11-04T19:58:07.017935+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>ocds-be6bcu-UA-2015-12-14-000007-b</td>\n",
" <td>2016-11-04T20:21:59.291206+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>ocds-be6bcu-UA-2015-08-10-000004</td>\n",
" <td>2016-11-04T19:56:52.619887+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>ocds-be6bcu-UA-2015-12-16-000144</td>\n",
" <td>2016-11-04T20:23:04.267801+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>ocds-be6bcu-UA-2015-11-30-000052-a</td>\n",
" <td>2016-11-04T20:17:00.497278+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>ocds-be6bcu-UA-2015-12-15-000030-b</td>\n",
" <td>2016-11-04T20:22:22.422977+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>ocds-be6bcu-UA-2015-09-10-000157</td>\n",
" <td>2016-11-04T19:59:34.165520+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>ocds-be6bcu-UA-2016-01-21-000042-b</td>\n",
" <td>2016-11-04T20:28:55.382425+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>ocds-be6bcu-UA-2015-11-19-000071-b</td>\n",
" <td>2016-12-26T11:27:59.332854+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>ocds-be6bcu-UA-2016-03-03-000150-c</td>\n",
" <td>2016-11-04T20:50:19.724935+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>ocds-be6bcu-UA-2015-09-01-000062</td>\n",
" <td>2016-11-04T19:58:18.516277+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>ocds-be6bcu-UA-2016-01-20-000187-a</td>\n",
" <td>2016-11-04T20:28:38.721629+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>ocds-be6bcu-UA-2016-03-16-000182-c</td>\n",
" <td>2016-11-04T20:57:55.538379+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>ocds-be6bcu-UA-2015-08-04-000072</td>\n",
" <td>2016-11-04T19:56:39.684079+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>ocds-be6bcu-UA-2015-06-03-000033</td>\n",
" <td>2016-11-04T19:53:53.591955+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>ocds-be6bcu-UA-2016-02-22-000035-b</td>\n",
" <td>2016-11-04T20:43:28.550467+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>ocds-be6bcu-UA-2015-11-26-000122-a</td>\n",
" <td>2016-11-04T20:16:10.588259+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>ocds-be6bcu-UA-2016-03-09-000277-c</td>\n",
" <td>2016-11-04T20:52:19.458897+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>ocds-be6bcu-UA-2016-03-16-000289-c</td>\n",
" <td>2016-11-04T20:58:06.575855+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>ocds-be6bcu-UA-2015-12-04-000061-b</td>\n",
" <td>2016-11-04T20:19:03.224523+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43145</th>\n",
" <td>ocds-be6bcu-UA-2016-03-11-000491-c</td>\n",
" <td>2016-11-04T20:54:33.238898+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43146</th>\n",
" <td>ocds-be6bcu-UA-2015-08-05-000085</td>\n",
" <td>2016-11-04T19:56:41.975292+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43147</th>\n",
" <td>ocds-be6bcu-UA-2016-02-09-000071-a</td>\n",
" <td>2016-11-04T20:36:42.802450+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43148</th>\n",
" <td>ocds-be6bcu-UA-2015-11-12-000150</td>\n",
" <td>2016-11-04T20:11:45.036401+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43149</th>\n",
" <td>ocds-be6bcu-UA-2016-03-04-000193-c</td>\n",
" <td>2016-11-04T20:51:08.500834+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43150</th>\n",
" <td>ocds-be6bcu-UA-2015-11-12-000093</td>\n",
" <td>2016-11-04T20:11:37.892261+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43151</th>\n",
" <td>ocds-be6bcu-UA-2015-12-13-000005-a</td>\n",
" <td>2016-11-04T20:21:56.737544+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43152</th>\n",
" <td>ocds-be6bcu-UA-2016-03-10-000302-b</td>\n",
" <td>2016-11-04T20:53:19.210706+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43153</th>\n",
" <td>ocds-be6bcu-UA-2016-02-17-000081-c</td>\n",
" <td>2016-11-04T20:41:17.783949+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43154</th>\n",
" <td>ocds-be6bcu-UA-2015-11-17-000026-b</td>\n",
" <td>2016-11-04T20:12:47.242232+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43155</th>\n",
" <td>ocds-be6bcu-UA-2016-01-19-000091-a</td>\n",
" <td>2016-11-04T20:28:03.786898+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43156</th>\n",
" <td>ocds-be6bcu-UA-2015-11-27-000118-b</td>\n",
" <td>2016-11-04T20:16:34.492663+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43157</th>\n",
" <td>ocds-be6bcu-UA-2016-02-23-000272-b</td>\n",
" <td>2016-11-04T20:44:49.485026+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43158</th>\n",
" <td>ocds-be6bcu-UA-2015-11-13-000096-b</td>\n",
" <td>2016-11-04T20:12:06.979392+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43159</th>\n",
" <td>ocds-be6bcu-UA-2016-02-24-000110-b</td>\n",
" <td>2016-11-04T20:45:14.740349+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43160</th>\n",
" <td>ocds-be6bcu-UA-2016-03-17-000091-b</td>\n",
" <td>2016-11-04T20:58:42.583976+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43161</th>\n",
" <td>ocds-be6bcu-UA-2016-03-09-000131-b</td>\n",
" <td>2016-11-04T20:51:50.399554+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43162</th>\n",
" <td>ocds-be6bcu-UA-2016-02-26-000255-b</td>\n",
" <td>2016-11-04T20:47:16.383303+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43163</th>\n",
" <td>ocds-be6bcu-UA-2015-11-03-000066</td>\n",
" <td>2016-11-04T20:08:52.825759+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43164</th>\n",
" <td>ocds-be6bcu-UA-2015-04-16-000019</td>\n",
" <td>2016-11-04T19:53:16.735343+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43165</th>\n",
" <td>ocds-be6bcu-UA-2015-11-26-000057-a</td>\n",
" <td>2016-11-04T20:15:57.576698+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43166</th>\n",
" <td>ocds-be6bcu-UA-2015-12-03-000031</td>\n",
" <td>2016-11-04T20:18:36.150152+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43167</th>\n",
" <td>ocds-be6bcu-UA-2015-11-24-000078-a</td>\n",
" <td>2016-11-04T20:15:09.429453+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43168</th>\n",
" <td>ocds-be6bcu-UA-2016-02-09-000130-a</td>\n",
" <td>2016-11-04T20:36:52.181168+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43169</th>\n",
" <td>ocds-be6bcu-UA-2016-03-15-000241-c</td>\n",
" <td>2017-01-12T17:31:37.911248+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43170</th>\n",
" <td>ocds-be6bcu-UA-2016-02-08-000175-a</td>\n",
" <td>2016-11-04T20:36:19.211735+02:00</td>\n",
" <td>pending</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43171</th>\n",
" <td>ocds-be6bcu-UA-2015-10-08-000226</td>\n",
" <td>2016-11-04T20:04:11.259911+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43172</th>\n",
" <td>ocds-be6bcu-UA-2016-03-21-000391-c</td>\n",
" <td>2016-11-04T21:01:40.921310+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43173</th>\n",
" <td>ocds-be6bcu-UA-2015-11-27-000038-b</td>\n",
" <td>2016-11-04T20:16:24.530707+02:00</td>\n",
" <td>active</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43174</th>\n",
" <td>ocds-be6bcu-UA-2015-11-11-000120-b</td>\n",
" <td>2016-11-04T20:11:19.133075+02:00</td>\n",
" <td>cancelled</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>43175 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" ocid publicationdate \\\n",
"0 ocds-be6bcu-UA-2016-01-29-000216-b 2016-11-04T20:32:30.269709+02:00 \n",
"1 ocds-be6bcu-UA-2015-12-21-000125-a 2016-11-04T20:23:54.004334+02:00 \n",
"2 ocds-be6bcu-UA-2015-11-19-000032-b 2016-11-04T20:13:46.755658+02:00 \n",
"3 ocds-be6bcu-UA-2016-01-19-000065-a 2016-11-04T20:28:01.532376+02:00 \n",
"4 ocds-be6bcu-UA-2015-12-02-000157-a 2016-11-04T20:18:19.949402+02:00 \n",
"5 ocds-be6bcu-UA-2015-09-23-000159 2016-11-04T20:01:21.154264+02:00 \n",
"6 ocds-be6bcu-UA-2016-03-12-000100-c 2016-11-04T20:54:52.420353+02:00 \n",
"7 ocds-be6bcu-UA-2015-10-19-000033 2016-11-04T20:05:24.113557+02:00 \n",
"8 ocds-be6bcu-UA-2016-01-13-000036-a 2016-11-04T20:26:19.881689+02:00 \n",
"9 ocds-be6bcu-UA-2015-12-08-000107-a 2016-11-04T20:20:16.547638+02:00 \n",
"10 ocds-be6bcu-UA-2015-08-28-000123 2016-11-04T19:58:07.017935+02:00 \n",
"11 ocds-be6bcu-UA-2015-12-14-000007-b 2016-11-04T20:21:59.291206+02:00 \n",
"12 ocds-be6bcu-UA-2015-08-10-000004 2016-11-04T19:56:52.619887+02:00 \n",
"13 ocds-be6bcu-UA-2015-12-16-000144 2016-11-04T20:23:04.267801+02:00 \n",
"14 ocds-be6bcu-UA-2015-11-30-000052-a 2016-11-04T20:17:00.497278+02:00 \n",
"15 ocds-be6bcu-UA-2015-12-15-000030-b 2016-11-04T20:22:22.422977+02:00 \n",
"16 ocds-be6bcu-UA-2015-09-10-000157 2016-11-04T19:59:34.165520+02:00 \n",
"17 ocds-be6bcu-UA-2016-01-21-000042-b 2016-11-04T20:28:55.382425+02:00 \n",
"18 ocds-be6bcu-UA-2015-11-19-000071-b 2016-12-26T11:27:59.332854+02:00 \n",
"19 ocds-be6bcu-UA-2016-03-03-000150-c 2016-11-04T20:50:19.724935+02:00 \n",
"20 ocds-be6bcu-UA-2015-09-01-000062 2016-11-04T19:58:18.516277+02:00 \n",
"21 ocds-be6bcu-UA-2016-01-20-000187-a 2016-11-04T20:28:38.721629+02:00 \n",
"22 ocds-be6bcu-UA-2016-03-16-000182-c 2016-11-04T20:57:55.538379+02:00 \n",
"23 ocds-be6bcu-UA-2015-08-04-000072 2016-11-04T19:56:39.684079+02:00 \n",
"24 ocds-be6bcu-UA-2015-06-03-000033 2016-11-04T19:53:53.591955+02:00 \n",
"25 ocds-be6bcu-UA-2016-02-22-000035-b 2016-11-04T20:43:28.550467+02:00 \n",
"26 ocds-be6bcu-UA-2015-11-26-000122-a 2016-11-04T20:16:10.588259+02:00 \n",
"27 ocds-be6bcu-UA-2016-03-09-000277-c 2016-11-04T20:52:19.458897+02:00 \n",
"28 ocds-be6bcu-UA-2016-03-16-000289-c 2016-11-04T20:58:06.575855+02:00 \n",
"29 ocds-be6bcu-UA-2015-12-04-000061-b 2016-11-04T20:19:03.224523+02:00 \n",
"... ... ... \n",
"43145 ocds-be6bcu-UA-2016-03-11-000491-c 2016-11-04T20:54:33.238898+02:00 \n",
"43146 ocds-be6bcu-UA-2015-08-05-000085 2016-11-04T19:56:41.975292+02:00 \n",
"43147 ocds-be6bcu-UA-2016-02-09-000071-a 2016-11-04T20:36:42.802450+02:00 \n",
"43148 ocds-be6bcu-UA-2015-11-12-000150 2016-11-04T20:11:45.036401+02:00 \n",
"43149 ocds-be6bcu-UA-2016-03-04-000193-c 2016-11-04T20:51:08.500834+02:00 \n",
"43150 ocds-be6bcu-UA-2015-11-12-000093 2016-11-04T20:11:37.892261+02:00 \n",
"43151 ocds-be6bcu-UA-2015-12-13-000005-a 2016-11-04T20:21:56.737544+02:00 \n",
"43152 ocds-be6bcu-UA-2016-03-10-000302-b 2016-11-04T20:53:19.210706+02:00 \n",
"43153 ocds-be6bcu-UA-2016-02-17-000081-c 2016-11-04T20:41:17.783949+02:00 \n",
"43154 ocds-be6bcu-UA-2015-11-17-000026-b 2016-11-04T20:12:47.242232+02:00 \n",
"43155 ocds-be6bcu-UA-2016-01-19-000091-a 2016-11-04T20:28:03.786898+02:00 \n",
"43156 ocds-be6bcu-UA-2015-11-27-000118-b 2016-11-04T20:16:34.492663+02:00 \n",
"43157 ocds-be6bcu-UA-2016-02-23-000272-b 2016-11-04T20:44:49.485026+02:00 \n",
"43158 ocds-be6bcu-UA-2015-11-13-000096-b 2016-11-04T20:12:06.979392+02:00 \n",
"43159 ocds-be6bcu-UA-2016-02-24-000110-b 2016-11-04T20:45:14.740349+02:00 \n",
"43160 ocds-be6bcu-UA-2016-03-17-000091-b 2016-11-04T20:58:42.583976+02:00 \n",
"43161 ocds-be6bcu-UA-2016-03-09-000131-b 2016-11-04T20:51:50.399554+02:00 \n",
"43162 ocds-be6bcu-UA-2016-02-26-000255-b 2016-11-04T20:47:16.383303+02:00 \n",
"43163 ocds-be6bcu-UA-2015-11-03-000066 2016-11-04T20:08:52.825759+02:00 \n",
"43164 ocds-be6bcu-UA-2015-04-16-000019 2016-11-04T19:53:16.735343+02:00 \n",
"43165 ocds-be6bcu-UA-2015-11-26-000057-a 2016-11-04T20:15:57.576698+02:00 \n",
"43166 ocds-be6bcu-UA-2015-12-03-000031 2016-11-04T20:18:36.150152+02:00 \n",
"43167 ocds-be6bcu-UA-2015-11-24-000078-a 2016-11-04T20:15:09.429453+02:00 \n",
"43168 ocds-be6bcu-UA-2016-02-09-000130-a 2016-11-04T20:36:52.181168+02:00 \n",
"43169 ocds-be6bcu-UA-2016-03-15-000241-c 2017-01-12T17:31:37.911248+02:00 \n",
"43170 ocds-be6bcu-UA-2016-02-08-000175-a 2016-11-04T20:36:19.211735+02:00 \n",
"43171 ocds-be6bcu-UA-2015-10-08-000226 2016-11-04T20:04:11.259911+02:00 \n",
"43172 ocds-be6bcu-UA-2016-03-21-000391-c 2016-11-04T21:01:40.921310+02:00 \n",
"43173 ocds-be6bcu-UA-2015-11-27-000038-b 2016-11-04T20:16:24.530707+02:00 \n",
"43174 ocds-be6bcu-UA-2015-11-11-000120-b 2016-11-04T20:11:19.133075+02:00 \n",
"\n",
" status amount currency \n",
"0 active None None \n",
"1 active None None \n",
"2 active None None \n",
"3 active None None \n",
"4 active None None \n",
"5 pending None None \n",
"6 pending None None \n",
"7 pending None None \n",
"8 active None None \n",
"9 active None None \n",
"10 active None None \n",
"11 active None None \n",
"12 active None None \n",
"13 active None None \n",
"14 active None None \n",
"15 pending None None \n",
"16 active None None \n",
"17 active None None \n",
"18 active None None \n",
"19 active None None \n",
"20 active None None \n",
"21 active None None \n",
"22 active None None \n",
"23 active None None \n",
"24 active None None \n",
"25 active None None \n",
"26 active None None \n",
"27 active None None \n",
"28 active None None \n",
"29 active None None \n",
"... ... ... ... \n",
"43145 pending None None \n",
"43146 active None None \n",
"43147 active None None \n",
"43148 active None None \n",
"43149 active None None \n",
"43150 active None None \n",
"43151 active None None \n",
"43152 active None None \n",
"43153 active None None \n",
"43154 active None None \n",
"43155 active None None \n",
"43156 active None None \n",
"43157 active None None \n",
"43158 active None None \n",
"43159 active None None \n",
"43160 active None None \n",
"43161 pending None None \n",
"43162 active None None \n",
"43163 pending None None \n",
"43164 active None None \n",
"43165 active None None \n",
"43166 active None None \n",
"43167 pending None None \n",
"43168 pending None None \n",
"43169 active None None \n",
"43170 pending None None \n",
"43171 active None None \n",
"43172 active None None \n",
"43173 active None None \n",
"43174 cancelled None None \n",
"\n",
"[43175 rows x 5 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 54
}
]
},
{
"metadata": {
"id": "CaNG1frut3be",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"This time, most of the contracts with no values seem to be active. Let's confirm:"
]
},
{
"metadata": {
"id": "yyv0jv0xW-dP",
"colab_type": "code",
"outputId": "e488420e-d021-4ab5-af7f-11cc83df6652",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 107
}
},
"cell_type": "code",
"source": [
"results.groupby('status').size()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"status\n",
"active 34662\n",
"cancelled 3269 \n",
"pending 5244 \n",
"dtype: int64"
]
},
"metadata": {
"tags": []
},
"execution_count": 56
}
]
},
{
"metadata": {
"id": "s2agxgj7XDz7",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"But still, the total is low relative to the number of releases with contracts sections. The number of releases with missing contract values is:"
]
},
{
"metadata": {
"id": "i8oODaDXv7EG",
"colab_type": "code",
"outputId": "c59138b9-0359-47eb-ff0f-79e077e54716",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
}
},
"cell_type": "code",
"source": [
"len(results.ocid.unique())"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"41054"
]
},
"metadata": {
"tags": []
},
"execution_count": 57
}
]
},
{
"metadata": {
"id": "t_KdphHuwDv2",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"We have 1,520,507 releases with contracts sections, so the number with missing amounts is about 3% of the total. Since this number is small, we can ignore these missing amounts as well.\n",
"\n",
"Let's test if the value information is being omitted in the `contracts` section because the value from the `awards` section has not changed. For that, we can look for a sample of releases in which both `contracts` and `awards` values are specified:"
]
},
{
"metadata": {
"id": "w3Ih1X2lgQci",
"colab_type": "code",
"outputId": "dd58dab7-9bda-447a-d5c9-c707a8026c2d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1599
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" awards -> 'value' ->> 'amount' as awardAmount,\n",
" awards -> 'value' ->> 'currency' as awardCurrency,\n",
" contracts -> 'value' ->> 'amount' as contractAmount,\n",
" contracts -> 'value' ->> 'currency' as contractCurrency\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'contracts') as contracts\n",
" JOIN\n",
" jsonb_array_elements(data -> 'awards') as awards\n",
" ON\n",
" contracts ->> 'awardID' = awards ->> 'id'\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" AND\n",
" contracts -> 'value' IS NOT NULL\n",
" LIMIT\n",
" 50\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>awardamount</th>\n",
" <th>awardcurrency</th>\n",
" <th>contractamount</th>\n",
" <th>contractcurrency</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2875.0</td>\n",
" <td>UAH</td>\n",
" <td>2875.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>22736.0</td>\n",
" <td>UAH</td>\n",
" <td>22736.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>133437.0</td>\n",
" <td>UAH</td>\n",
" <td>133437.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>24906.0</td>\n",
" <td>UAH</td>\n",
" <td>24906.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>171252.0</td>\n",
" <td>UAH</td>\n",
" <td>171252.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>293673.0</td>\n",
" <td>UAH</td>\n",
" <td>293673.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>71398.8</td>\n",
" <td>UAH</td>\n",
" <td>71398.8</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>71398.8</td>\n",
" <td>UAH</td>\n",
" <td>71398.8</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>71400.0</td>\n",
" <td>UAH</td>\n",
" <td>71400.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>30000.0</td>\n",
" <td>UAH</td>\n",
" <td>30000.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>99331.71</td>\n",
" <td>UAH</td>\n",
" <td>99331.71</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>16741.1</td>\n",
" <td>UAH</td>\n",
" <td>16741.1</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>994.0</td>\n",
" <td>UAH</td>\n",
" <td>994.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>3000.0</td>\n",
" <td>UAH</td>\n",
" <td>3000.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>556842.5</td>\n",
" <td>UAH</td>\n",
" <td>556842.5</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>5504.0</td>\n",
" <td>UAH</td>\n",
" <td>5504.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>90015.66</td>\n",
" <td>UAH</td>\n",
" <td>90015.66</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>6000.0</td>\n",
" <td>UAH</td>\n",
" <td>6000.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>2655.0</td>\n",
" <td>UAH</td>\n",
" <td>2655.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>24869.89</td>\n",
" <td>UAH</td>\n",
" <td>24869.89</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>44095.9</td>\n",
" <td>UAH</td>\n",
" <td>44095.9</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>40920.0</td>\n",
" <td>UAH</td>\n",
" <td>40920.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>400.0</td>\n",
" <td>UAH</td>\n",
" <td>400.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>903950.4</td>\n",
" <td>UAH</td>\n",
" <td>903950.4</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>4090.14</td>\n",
" <td>UAH</td>\n",
" <td>4090.14</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>30000.0</td>\n",
" <td>UAH</td>\n",
" <td>30000.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>61875.1</td>\n",
" <td>UAH</td>\n",
" <td>61875.1</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>29940.0</td>\n",
" <td>UAH</td>\n",
" <td>29940.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>10000.0</td>\n",
" <td>UAH</td>\n",
" <td>10000.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>102076.0</td>\n",
" <td>UAH</td>\n",
" <td>102076.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>4263.0</td>\n",
" <td>UAH</td>\n",
" <td>4263.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>156280.68</td>\n",
" <td>UAH</td>\n",
" <td>156280.68</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>97455.0</td>\n",
" <td>UAH</td>\n",
" <td>97455.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>8042.7</td>\n",
" <td>UAH</td>\n",
" <td>8042.7</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>51391.39</td>\n",
" <td>UAH</td>\n",
" <td>51391.39</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>7734.82</td>\n",
" <td>UAH</td>\n",
" <td>7734.82</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>11500.0</td>\n",
" <td>UAH</td>\n",
" <td>11500.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>150000.0</td>\n",
" <td>UAH</td>\n",
" <td>150000.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>2100.8</td>\n",
" <td>UAH</td>\n",
" <td>2100.8</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>182000.0</td>\n",
" <td>UAH</td>\n",
" <td>182000.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>193900.0</td>\n",
" <td>UAH</td>\n",
" <td>193900.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>84756.0</td>\n",
" <td>UAH</td>\n",
" <td>84756.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>1410696.99</td>\n",
" <td>UAH</td>\n",
" <td>1410696.99</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>13259.0</td>\n",
" <td>UAH</td>\n",
" <td>13259.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>136965.0</td>\n",
" <td>UAH</td>\n",
" <td>136965.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>115640.0</td>\n",
" <td>UAH</td>\n",
" <td>115640.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>2472.0</td>\n",
" <td>UAH</td>\n",
" <td>2472.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>112628.0</td>\n",
" <td>UAH</td>\n",
" <td>112628.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>144344.0</td>\n",
" <td>UAH</td>\n",
" <td>144344.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>150815.0</td>\n",
" <td>UAH</td>\n",
" <td>150815.0</td>\n",
" <td>UAH</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" awardamount awardcurrency contractamount contractcurrency\n",
"0 2875.0 UAH 2875.0 UAH \n",
"1 22736.0 UAH 22736.0 UAH \n",
"2 133437.0 UAH 133437.0 UAH \n",
"3 24906.0 UAH 24906.0 UAH \n",
"4 171252.0 UAH 171252.0 UAH \n",
"5 293673.0 UAH 293673.0 UAH \n",
"6 71398.8 UAH 71398.8 UAH \n",
"7 71398.8 UAH 71398.8 UAH \n",
"8 71400.0 UAH 71400.0 UAH \n",
"9 30000.0 UAH 30000.0 UAH \n",
"10 99331.71 UAH 99331.71 UAH \n",
"11 16741.1 UAH 16741.1 UAH \n",
"12 994.0 UAH 994.0 UAH \n",
"13 3000.0 UAH 3000.0 UAH \n",
"14 556842.5 UAH 556842.5 UAH \n",
"15 5504.0 UAH 5504.0 UAH \n",
"16 90015.66 UAH 90015.66 UAH \n",
"17 6000.0 UAH 6000.0 UAH \n",
"18 2655.0 UAH 2655.0 UAH \n",
"19 24869.89 UAH 24869.89 UAH \n",
"20 44095.9 UAH 44095.9 UAH \n",
"21 40920.0 UAH 40920.0 UAH \n",
"22 400.0 UAH 400.0 UAH \n",
"23 903950.4 UAH 903950.4 UAH \n",
"24 4090.14 UAH 4090.14 UAH \n",
"25 30000.0 UAH 30000.0 UAH \n",
"26 61875.1 UAH 61875.1 UAH \n",
"27 29940.0 UAH 29940.0 UAH \n",
"28 10000.0 UAH 10000.0 UAH \n",
"29 102076.0 UAH 102076.0 UAH \n",
"30 4263.0 UAH 4263.0 UAH \n",
"31 156280.68 UAH 156280.68 UAH \n",
"32 97455.0 UAH 97455.0 UAH \n",
"33 8042.7 UAH 8042.7 UAH \n",
"34 51391.39 UAH 51391.39 UAH \n",
"35 7734.82 UAH 7734.82 UAH \n",
"36 11500.0 UAH 11500.0 UAH \n",
"37 150000.0 UAH 150000.0 UAH \n",
"38 2100.8 UAH 2100.8 UAH \n",
"39 182000.0 UAH 182000.0 UAH \n",
"40 193900.0 UAH 193900.0 UAH \n",
"41 84756.0 UAH 84756.0 UAH \n",
"42 1410696.99 UAH 1410696.99 UAH \n",
"43 13259.0 UAH 13259.0 UAH \n",
"44 136965.0 UAH 136965.0 UAH \n",
"45 115640.0 UAH 115640.0 UAH \n",
"46 2472.0 UAH 2472.0 UAH \n",
"47 112628.0 UAH 112628.0 UAH \n",
"48 144344.0 UAH 144344.0 UAH \n",
"49 150815.0 UAH 150815.0 UAH "
]
},
"metadata": {
"tags": []
},
"execution_count": 58
}
]
},
{
"metadata": {
"id": "tbAsj8S8guo7",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"It does not seem to be the case."
]
},
{
"metadata": {
"id": "GmYR1mQ6S-XL",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"###2.5. Currencies used\n",
"\n",
"*Here, we determine whether we need to account for different currencies.*"
]
},
{
"metadata": {
"id": "Vk1pl2ibesml",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Some of the indicators include calculations of quantities that may use different currencies. First, let's check which currencies are used in the `contracts` sections:"
]
},
{
"metadata": {
"id": "yeiY8wSSfjai",
"colab_type": "code",
"outputId": "2191d0db-cb1b-4102-c62f-e5b946ef2cd4",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 235
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" contracts -> 'value' ->> 'currency' AS currency,\n",
" count(*) AS numContracts\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'contracts') AS contracts\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" GROUP BY\n",
" contracts -> 'value' ->> 'currency'\n",
" \n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>currency</th>\n",
" <th>numcontracts</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>None</td>\n",
" <td>43155</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>UAH</td>\n",
" <td>1564226</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>RUB</td>\n",
" <td>72</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>USD</td>\n",
" <td>390</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>EUR</td>\n",
" <td>436</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>GBP</td>\n",
" <td>22</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" currency numcontracts\n",
"0 None 43155 \n",
"1 UAH 1564226 \n",
"2 RUB 72 \n",
"3 USD 390 \n",
"4 EUR 436 \n",
"5 GBP 22 "
]
},
"metadata": {
"tags": []
},
"execution_count": 60
}
]
},
{
"metadata": {
"id": "ebakLY9ChrSE",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Note: We have a `None` result because of the missing `value` objects in contracts.\n",
"\n",
"In total we have 5 different currencies used, included the Hryvnia, the Ukrainian currency. Converting currency accurately can be a problem: conversion rates change daily, and most important, we do not know exactly how currency exchange is managed in the procurement system. For calculating percentages and comparisons, an approximate exchange rate may be good enough, especially if most of the transactions use the same single currency. As we see in the results, the Hryvnia is the most used currency in data, by far.\n",
"\n",
"We can look at the currency exchange rates [online](https://www.xe.com/currencycharts/) and pick an approximate average from the last two years for each currency used. Below is the conversion rates chosen to convert all foreign currencies to the Ukrainian national currency; we will use these rates in all calculations that involve currencies."
]
},
{
"metadata": {
"id": "laBvhRZvKZbO",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"#### Conversion rates to Ukrainian Hryvnia\n",
"\n",
"* [1 USD = 27 UAH](https://www.xe.com/currencycharts/?from=USD&to=UAH&view=2Y)\n",
"* [1 EUR = 31 UAH](https://www.xe.com/currencycharts/?from=EUR&to=UAH&view=2Y)\n",
"* [1 GBP= 35 UAH](https://www.xe.com/currencycharts/?from=GBP&to=UAH&view=2Y)\n",
"* [1 RUB = 0.42 UAH](https://www.xe.com/currencycharts/?from=RUB&to=UAH&view=2Y)"
]
},
{
"metadata": {
"id": "PjVw9IdueI3O",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### 2.6. Types of Documents used in the Tender Stage"
]
},
{
"metadata": {
"id": "HD6VeepMrwGo",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"For a particular indicator, we will need to know if Ukraine publishes tender notices or any other documents alike. The OCDS section that contains this information is `tender/documents`, which includes the `documentType` field. Specifically, we should look for the `tenderNotice` type and any other custom types that may be used for similar documents.\n",
"\n",
"Let's start by looking at the distribution of documents per process: it will help us to understand how the `tender/documents` field is used."
]
},
{
"metadata": {
"id": "7rwuini-sw6k",
"colab_type": "code",
"outputId": "e8c6270c-8406-4a43-bb87-e26c920e0e24",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 392
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" data -> 'ocid' AS ocid,\n",
" jsonb_array_length(data -> 'tender' -> 'documents') AS documentCount\n",
" FROM\n",
" releases\n",
" WHERE\n",
" data -> 'tag' ? 'tender'\n",
" \n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results[results['documentcount'] < 30].plot.hist(by='documentcount',bins=30,figsize=(12,6))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f4c091b8908>"
]
},
"metadata": {
"tags": []
},
"execution_count": 61
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuIAAAFlCAYAAACuvo3CAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3X9clHW+///nxY85HnRIhmYsyUq0\n0FWhXPMHSOYPamV3b1lHWeVDdsra7aN02g6pNJnilkKZrrnZapKbW8fkFrfdPdbHBT9tyKdWoohd\nVt2s9LTdCBVmFFREBWG+f/Rt1h+oozBeXPS4/+W8ec+b18XrdnV7dvGeN4bP5/MJAAAAwBUVYnYB\nAAAAwHcRQRwAAAAwAUEcAAAAMAFBHAAAADABQRwAAAAwAUEcAAAAMEGY2QWYxeM5etE5UVERqq9v\nugLVoDPQL+uhZ9ZDz6yFflkPPbOeQHrmdNrbHeeJ+AWEhYWaXQIuAf2yHnpmPfTMWuiX9dAz6+lI\nzwjiAAAAgAmCtjXl2LFjmj9/vg4fPqyWlhbNmTNHTqdTOTk5kqS4uDgtXrxYkpSfn6+ioiIZhqHM\nzEyNGzdOR48eVVZWlo4ePaqIiAgtX75cvXv31vbt27VixQqFhobq9ttv15w5cyRJS5cuVVVVlQzD\nkNvtVnx8fLAuDQAAAOiwoAXx3//+9+rfv7+ysrJUW1ur+++/X06n0x+Ss7KyVFpaqtjYWG3ZskWb\nNm1SY2Oj0tPTNXbsWG3YsEEjR47UQw89pIKCAq1bt05z587Vs88+q1dffVV9+vRRRkaG7rrrLh06\ndEhfffWVCgoKtHfvXrndbhUUFATr0gAAAIAOC9rWlKioKDU0NEiSjhw5ot69e6umpsb/pHr8+PEq\nKytTeXm5kpOTZbPZ5HA4FBMToz179qisrEwpKSlnzK2urtZVV12la6+9ViEhIRo3bpzKyspUVlam\nSZMmSZIGDBigw4cPq7GxMViXBgAAAHRY0IL4D3/4Q+3bt08pKSnKyMjQvHnzFBkZ6f96dHS0PB6P\nvF6vHA6Hf9zhcJwzHh0drbq6Onk8nvPOjYqKOmccAAAA6KqCtjXlv//7v9W3b1+9+uqr2r17t+bM\nmSO7/Z9Ht/h8vnbf1974+eaeTyDzo6IiAvqU6/mOm0HXRL+sh55ZDz2zFvplPfTMei63Z0EL4pWV\nlRo7dqwkadCgQTp58qROnTrl/3ptba1cLpdcLpe+/PLLdsc9Ho/sdvsZY16v95y54eHhZ4zX1dXJ\n6XResL5Azuh0Ou0BnTeOroF+WQ89sx56Zi30y3romfUE0rMrfo74DTfcoKqqKklSTU2NevbsqQED\nBqiiokKStHXrViUnJ2v06NHatm2bmpubVVtbq7q6Og0cOFBJSUkqKio6Y+51112nxsZGff311zp1\n6pRKSkqUlJSkpKQkFRcXS5J27doll8ulXr16BevSAAAAIKmpqUlTp/7Y7DLOcOxYoz766MOgfo+S\nknc7ZZ2gPRH/yU9+IrfbrYyMDJ06dUo5OTlyOp1auHCh2tralJCQoMTERElSWlqaMjIyZBiGcnJy\nFBISovvuu09z585Venq6IiMjtWzZMklSTk6OsrKyJEmpqanq37+/+vfvryFDhmj69OkyDEOLFi0K\n1mUBAAB0GQ/mvdep663PntCp65nhs89266OPPtTIkaOD9j3eeGODxo+f1OF1DN+lbsDuJgL5tQ+/\nHrIW+mU99Mx66Jm10C/rudSemRHEjx1r1FNPzVNzc7Pi42/Ru+8Wy+1epFdeeVlhYWFyOl168smF\nCgkJ0bPPLlJt7X7ZbP+iBQsW6+OPy/U//7NXmZk/V1NTk2bO/IkKC99WWtrd+vGP79G2bX/Sdddd\np7i4wSopeVfXXXe9Fi16Vl6vR7m5z+jUqRaFhIRo/vyndc011+gnP5mi5OQ7tGNHlXr1smvZspWa\nOXO6mpqO6f77Z2nUqDF69tlFamtr0zXXXKunnsrRwYNe5eb+Qi0t36yVnf20DMPQggXz9eqrr0uS\nZs26T88++5zWr39FV1/t1Geffara2gNauPBZffLJR1q7drWSkm7X0qXLuubWFAAAAHQ/xcV/VGzs\nAL38cr5uuulmSdILL+Rq8eKleumlV2S32/V//2+R/vjHdxQdHa1f/3q9fvzjKfrgg/933jXb2toU\nFzdI+fm/1Y4df9M11/TVunW/VVXVX3T06FGtW/drTZ/+v/Tii79WWtoMbdiQL0nat69GP/jBD7V2\n7W909OgR7d37hdLT79OECSm6++579corL2v69P+ll1/O19VXX63duz9Vfv4a/ehHd+ull17RPfdM\n1fr1r1zwepubm7VixUuaNm26ior+j9LTZ6pXr15aunRZh3+WBHEAAAAE7B//+B8NHZogSbr11u/r\n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\nAAAAgAkI4gAAAIAJCOIAAACACcLMLgAd92Dee5263vrsCZ26HgAAAM7FE3EAAADABARxAAAAwAQE\ncQAAAMAEBHEAAADABARxAAAAwAQEcQAAAMAEBHEAAADABARxAAAAwAQEcQAAAMAEBHEAAADABARx\nAAAAwAQEcQAAAMAEYcFc/Pnnn9cnn3yiU6dO6Wc/+5mGDRumefPmqbW1VU6nU8uWLZPNZtPmzZu1\nYcMGhYSEKC0tTdOmTVNLS4uys7O1b98+hYaGKjc3V/369dPu3buVk5MjSYqLi9PixYslSfn5+Soq\nKpJhGMrMzNS4ceOCeWkAAABAhwQtiH/44Yf64osvVFBQoPr6et1zzz0aM2aM0tPTNXnyZK1YsUKF\nhYWaMmWKVq9ercLCQoWHh2vq1KlKSUlRSUmJIiMjtXz5cn3wwQdavny5Vq5cqSVLlsjtdis+Pl5Z\nWVkqLS1VbGystmzZok2bNqmxsVHp6ekaO3asQkNDg3V5AAAAQIcEbWvKbbfdphdffFGSFBkZqePH\nj6u8vFwTJ06UJI0fP15lZWWqqqrSsGHDZLfb1aNHDw0fPlyVlZUqKytTSkqKJCkxMVGVlZVqbm5W\nTU2N4uPjz1ijvLxcycnJstlscjgciomJ0Z49e4J1aQAAAECHBe2JeGhoqCIiIiRJhYWFuv322/XB\nBx/IZrNJkqKjo+XxeOT1euVwOPzvczgc54yHhITIMAx5vV5FRkb65367Ru/evdtdIy4u7rz1RUVF\nKCzs4k/MnU77pV14N2Dla7Zy7d9V9Mx66Jm10C/roWfWc7k9C+oecUl69913VVhYqPXr1+vOO+/0\nj/t8vnbnX8r4pa5xuvr6povOcTrt8niOXnRed2PVa/6u9svK6Jn10DNroV/WQ8+sJ5CenS+oB/XU\nlPfff19r1qzRunXrZLfbFRERoRMnTkiSamtr5XK55HK55PV6/e+pq6vzj3s8HklSS0uLfD6fnE6n\nGhoa/HPPt8a34wAAAEBXFbQgfvToUT3//PNau3atevfuLembvd7FxcWSpK1btyo5OVkJCQnasWOH\njhw5omPHjqmyslIjRoxQUlKSioqKJEklJSUaNWqUwsPDFRsbq4qKijPWGD16tLZt26bm5mbV1taq\nrq5OAwcODNalAQAAAB0WtK0pW7ZsUX19vX7+85/7x/Ly8rRgwQIVFBSob9++mjJlisLDw5WVlaVZ\ns2bJMAzNmTNHdrtdqamp2r59u2bMmCGbzaa8vDxJktvt1sKFC9XW1qaEhAQlJiZKktLS0pSRkSHD\nMJSTk6OQEI5IBwAAQNdl+ALZUN0NBbL/Khj7tB7Me69T1wuG9dkTzC7hsrCvznromfXQM2uhX9ZD\nz6yny+4RBwAAANA+gjgAAABgAoI4AAAAYIKgnyMO6+nsfexW3XMOAAAQTDwRBwAAAExAEAcAAABM\nQBAHAAAATEAQBwAAAExAEAcAAABMQBAHAAAATMDxhQi6zj4OUeJIRAAAYH08EQcAAABMQBAHAAAA\nTEAQBwAAAExAEAcAAABMQBAHAAAATEAQBwAAAExAEAcAAABMQBAHAAAATEAQBwAAAExAEAcAAABM\nQBAHAAAATEAQBwAAAExAEAcAAABMQBAHAAAATEAQBwAAAExAEAcAAABMQBAHAAAATEAQBwAAAExA\nEAcAAABMENQg/vnnn2vSpEl64403JEn79+/Xfffdp/T0dD322GNqbm6WJG3evFn/9m//pmnTpumt\nt96SJLW0tCgrK0szZsxQRkaGqqurJUm7d+/W9OnTNX36dC1atMj/vfLz8zV16lRNmzZNpaWlwbws\nAAAAoMOCFsSbmpr0zDPPaMyYMf6xVatWKT09XRs3btQNN9ygwsJCNTU1afXq1Xrttdf0+uuva8OG\nDWpoaNA777yjyMhIvfnmm3rkkUe0fPlySdKSJUvkdru1adMmNTY2qrS0VNXV1dqyZYs2btyotWvX\nKjc3V62trcG6NAAAAKDDghbEbTab1q1bJ5fL5R8rLy/XxIkTJUnjx49XWVmZqqqqNGzYMNntdvXo\n0UPDhw9XZWWlysrKlJKSIklKTExUZWWlmpubVVNTo/j4+DPWKC8vV3Jysmw2mxwOh2JiYrRnz55g\nXRoAAADQYWFBWzgsTGFhZy5//Phx2Ww2SVJ0dLQ8Ho+8Xq8cDod/jsPhOGc8JCREhmHI6/UqMjLS\nP/fbNXr37t3uGnFxccG6PJjswbz3OnW99dkTOnU9AACAiwlaEL8Yn8/X4fFLXeN0UVERCgsLveg8\np9N+0TmwPvpsHn721kPPrIV+WQ89s57L7dkVDeIRERE6ceKEevToodraWrlcLrlcLnm9Xv+curo6\n3XLLLXK5XPJ4PBo0aJBaWlrk8/nkdDrV0NDgn3v6Gl9++eU54xdSX9900XqdTrs8nqOXcaWwGvps\nDu4x66Fn1kK/rIeeWU8gPTtfUL+ixxcmJiaquLhYkrR161YlJycrISFBO3bs0JEjR3Ts2DFVVlZq\nxIgRSkpKUlFRkSSppKREo0aNUnh4uGJjY1VRUXHGGqNHj9a2bdvU3Nys2tpa1dXVaeDAgVfy0gAA\nAIBLErQn4jt37tRzzz2nmpoahYWFqbi4WC+88IKys7NVUFCgvn37asqUKQoPD1dWVpZmzZolwzA0\nZ84c2e12paamavv27ZoxY4ZsNpvy8vIkSW63WwsXLlRbW5sSEhKUmJgoSUpLS1NGRoYMw1BOTo5C\nQjgiHQAAAF2X4QtkQ3U3FMivfYLx66HO/pAhOgcf1jQHv4K1HnpmLfTLeuiZ9VhmawoAAACAbxDE\nAQAAABMQxAEAAAATEMQBAAAAExDEAQAAABMQxAEAAAATEMQBAAAAExDEAQAAABMQxAEAAAATBO1P\n3ANW0tl/8ZS/1AkAAC6GJ+IAAACACQjiAAAAgAkI4gAAAIAJCOIAAACACQjiAAAAgAkI4gAAAIAJ\nCOIAAACACThHHAgCziUHAAAXwxNxAAAAwAQEcQAAAMAEBHEAAADABARxAAAAwAQEcQAAAMAEnJoC\nWEBnn8IicRILAABm44k4AAAAYAKCOAAAAGACgjgAAABgAvaIA99R/PVPAADMxRNxAAAAwAQ8EQfQ\nKXjCDgDApeGJOAAAAGCCbvVEfOnSpaqqqpJhGHK73YqPjze7JACXibPTAQDdXbcJ4h999JG++uor\nFRQUaO/evXK73SooKDC7LABdCNtnAABdSbcJ4mVlZZo0aZIkacCAATp8+LAaGxvVq1cvkysD0F0F\n46l9Z+J/FACga+s2Qdzr9WrIkCH+1w6HQx6PhyAOAJ3ox1n/bXYJsCD+pxBoX7cJ4mfz+XwX/LrT\naQ9onUDnBert5Xd36noAcCXx3zAg+Do7eyD4Lrdn3ebUFJfLJa/X639dV1cnp9NpYkUAAADA+XWb\nIJ6UlKTi4mJJ0q5du+RyudiWAgAAgC6r22xNGT58uIYMGaLp06fLMAwtWrTI7JIAAACA8zJ8F9tM\nDQAAAKDTdZutKQAAAICVEMQBAAAAE3SbPeKdaenSpaqqqpJhGHK73YqPjze7JFxAeXm5HnvsMd10\n002SpJtvvllPP/20yVWhPZ9//rlmz56tf//3f1dGRob279+vefPmqbW1VU6nU8uWLZPNZjO7TJzm\n7J5lZ2dr165d6t27tyRp1qxZuuOOO8wtEn7PP/+8PvnkE506dUo/+9nPNGzYMO6xLu7snr333nvc\nY13Y8ePHlZ2drYMHD+rkyZOaPXu2Bg0adNn3GUH8LB999JG++uorFRQUaO/evXK73SooKDC7LFzE\nyJEjtWrVKrPLwAU0NTXpmWee0ZgxY/xjq1atUnp6uiZPnqwVK1aosLBQ6enpJlaJ07XXM0n6z//8\nT40fP96kqnA+H374ob744gsVFBSovr5e99xzj8aMGcM91oW117PRo0dzj3VhJSUlGjp0qB5++GHV\n1NTowQcf1PDhwy/7PmNrylnKyso0adIkSdKAAQN0+PBhNTY2mlwVYH02m03r1q2Ty+Xyj5WXl2vi\nxImSpPHjx6usrMys8tCO9nqGruu2227Tiy++KEmKjIzU8ePHuce6uPZ61traanJVuJDU1FQ9/PDD\nkqT9+/erT58+HbrPCOJn8Xq9ioqK8r92OBzyeDwmVoRA7NmzR4888ohmzJihP//5z2aXg3aEhYWp\nR48eZ4wdP37c/+u76Oho7rUupr2eSdIbb7yhmTNn6vHHH9ehQ4dMqAztCQ0NVUREhCSpsLBQt99+\nO/dYF9dez0JDQ7nHLGD69Ol64okn5Ha7O3SfsTXlIjjdseu78cYblZmZqcmTJ6u6ulozZ87U1q1b\n2QdpMdxr1nD33Xerd+/eGjx4sF555RW99NJLWrhwodll4TTvvvuuCgsLtX79et15553+ce6xruv0\nnu3cuZN7zAI2bdqkTz/9VHPnzj3j3rrU+4wn4mdxuVzyer3+13V1dXI6nSZWhIvp06ePUlNTZRiG\nrr/+el199dWqra01uywEICIiQidOnJAk1dbWsgXCAsaMGaPBgwdLkiZMmKDPP//c5Ipwuvfff19r\n1qzRunXrZLfbuccs4OyecY91bTt37tT+/fslSYMHD1Zra6t69ux52fcZQfwsSUlJKi4uliTt2rVL\nLpdLvXr1MrkqXMjmzZv16quvSpI8Ho8OHjyoPn36mFwVApGYmOi/37Zu3ark5GSTK8LFPProo6qu\nrpb0zR7/b08rgvmOHj2q559/XmvXrvWfuME91rW11zPusa6toqJC69evl/TNduampqYO3Wf8Zc12\nvPDCC6qoqJBhGFq0aJEGDRpkdkm4gMbGRj3xxBM6cuSIWlpalJmZqXHjxpldFs6yc+dOPffcc6qp\nqVFYWJj69OmjF154QdnZ2Tp58qT69u2r3NxchYeHm10q/n/t9SwjI0OvvPKK/vVf/1URERHKzc1V\ndHS02aVCUkFBgX71q1+pf//+/rG8vDwtWLCAe6yLaq9n9957r9544w3usS7qxIkTeuqpp7R//36d\nOHFCmZmZGjp0qObPn39Z9xlBHAAAADABW1MAAAAAExDEAQAAABMQxAEAAAATEMQBAAAAExDEAQAA\nABMQxAEAAAATEMQBAAAAExDEAQAAABP8f6d/2k42WugbAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4c0f9ef240>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "5Ug90NTG0wJp",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Note that there is no tenders without documents:"
]
},
{
"metadata": {
"id": "VflPosq9xVbi",
"colab_type": "code",
"outputId": "02c1f88a-8373-43e9-8c53-0f136185dcdf",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
}
},
"cell_type": "code",
"source": [
"len(results[results['documentcount'] == 0].index)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0"
]
},
"metadata": {
"tags": []
},
"execution_count": 28
}
]
},
{
"metadata": {
"id": "ZsN1lukUsxYh",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"And that most of the tenders have a small number of documents.\n",
"\n",
"Now, let's look at the types of documents used."
]
},
{
"metadata": {
"id": "sahlKXppeg1l",
"colab_type": "code",
"outputId": "db20de8b-24ce-4572-b628-95294d7528e7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 365
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" documents ->> 'documentType' AS documentType,\n",
" COUNT(DISTINCT data ->> 'ocid') AS processCount\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'tender' -> 'documents') AS documents\n",
" WHERE\n",
" data -> 'tag' ? 'tender'\n",
" GROUP BY\n",
" documents ->> 'documentType'\n",
" \n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results.sort_values(by='processcount').plot.barh(x='documenttype', y='processcount', legend=False)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f4bf719e630>"
]
},
"metadata": {
"tags": []
},
"execution_count": 62
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nyEVB/HoAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4bf8a4dda0>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "jGVCBla1dgbY",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Note the `None` bar: a big proportion of the documents have no type specified. This is not good; documents should not be published without a descripting `documentType`.\n",
"\n",
"The type `tenderNotice` is used but in a very small proportion, especially considering that all tenders have at least one document. There is also a `notice` type, which purpose is not very clear but it may be used for similar intentions. We could do a review of a sample of these documents to have a grasp of their content.\n",
"\n",
"Now we will restrict the results to the tenders that are `open` or `selective`, because tender notices have no meaning for other procurement methods."
]
},
{
"metadata": {
"id": "Nxi92XzAlNne",
"colab_type": "code",
"outputId": "f6511408-85eb-4c6e-f957-72bf675c23cf",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 2686
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" documents ->> 'documentType' AS documentType,\n",
" documents ->> 'format' AS format,\n",
" documents ->> 'url' as url\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'tender' -> 'documents') AS documents\n",
" WHERE\n",
" data -> 'tag' ? 'tender' AND documents ->> 'documentType' IN ('tenderNotice', 'notice')\n",
" AND\n",
" data -> 'tender' ->> 'procurementMethod' IN ('open', 'selective')\n",
" \n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results[results['documenttype'] == 'notice']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>documenttype</th>\n",
" <th>format</th>\n",
" <th>url</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/41457ce9643e44cc8058f303bd23fb0c?KeyID=52462340&amp;Signature=A0cg2lOSHl8utrViJeTGc4t6pV0Phfj0iLvwihljt6dovtLMm3%2FbpvvOyiETq%2FbF0z8xTn2oliVr6US9zwM7Dg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/495c7309ea934ffebce6ede88183c727?Prefix=00ac8e1a24f7495cb5e0dd5e6684eeb2%2F4e9e9e65ca934e9aa66eebcf10757d31&amp;KeyID=52462340&amp;Signature=NtAuH29KEPurUmmM8KTEiZJ%2F6nDIT6mDhUDfIWI9OLKjVRMOor86e8Eblrl%252BB1jmBLrkDtqZFHtm4u0AQNPYBA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/2065065452574b70841e818526016a8b?Prefix=00ac8e1a24f7495cb5e0dd5e6684eeb2%2Fb5ee437bd0204f16977adf6e254a02c7&amp;KeyID=52462340&amp;Signature=5Q75umgE2PuW1TazVrxnLjIdOz27mib6hniwQ3IJ2Vt0Z90Q8FRlXUNh1IG3z1AmE8Bxawwe%252BjVbYCqRVcr3Aw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/126bebf55b844c3989ffe0b6895d220e?Prefix=00ac8e1a24f7495cb5e0dd5e6684eeb2%2F4e9e9e65ca934e9aa66eebcf10757d31&amp;KeyID=52462340&amp;Signature=JRc4nnQRn3T%252Bb%252BIAmFu0fQUlNC6oNE0X2AfTOPRqbtUmYTqG%252BQL4H3i%2FFQahEPivDyD34QstdgUeyLP2tET9DA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/072f794c91414d7bac0da83e033d4f53?KeyID=52462340&amp;Signature=HCUQ2DYM%2F8LVz9Sxyv1KpvZhrZmjzdHD61XvsLHVhPkZjEgGN5mgriTIamcjoZWSoQudy40bMfzlVER%2Fkuw9AQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/bd7bb1c9ff534a33ac959ff44f55aa6d?KeyID=52462340&amp;Signature=GzJGH8Aw8sFbJFmXbB89deeEPASVxm%2FDFAr5U91dBICNHjREUUKTM1iYaThdv0adKg8uXGYvoykkCCBlw8JhDA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/3c41da7ab84c43b69ab9162a3b40270d?KeyID=52462340&amp;Signature=UJon0sqwfb12fh44HpCS%2F%252BK9a01Rnj2hrTZWYuzq6pNNQXNIkBIVPyNHwH6D5aBTwI2DEw16BTNOzYVHSqkVDw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/c61bdcf1d83e460d8d2e50d6d41a277a?Prefix=00fda329f3174f7aa5ccbc77c272d1de%2Fee8478c2a6074ac5bd871e15c9bd36b4&amp;KeyID=52462340&amp;Signature=c1UnJ1Bg%252Brplmop7%252Bm%252BBVt05i8ZAKnWjnMW%252BHXbjmEKjfUXOuCcWd4yT%252BqDAyxbs5yRtVwtMMuC%2FyOuCeU00DQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/6feb40cebd464e4eaed8241356a0738c?Prefix=00fda329f3174f7aa5ccbc77c272d1de%2Fee8478c2a6074ac5bd871e15c9bd36b4&amp;KeyID=52462340&amp;Signature=U75wuGpGtDPiGdUKccREiLQpXHb9drM6z%252B0bwdWj%2Fhof9NGv1Z6Gt%2F9vRp4QMvEIICzm7j7jJKboUZP2%252BSMvCA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/b735a08dcc4f4dd38e8bc7b03655763a?Prefix=00fda329f3174f7aa5ccbc77c272d1de%2Fee8478c2a6074ac5bd871e15c9bd36b4&amp;KeyID=52462340&amp;Signature=k5bILLMI4nZbcQAsguMybduauyJZC%2FU%252BoTGlVi9pITKGAzmAZCKUGeAj7CiDbPLf%2FAK26WZNnKi5xjcAmBcRCg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/5273d8cfc7b24582b7c2b194ae1d3181?Prefix=010edfa685a64db49a25d5e8695446a5%2Fc0e09587efc84020abc68b521ea85048&amp;KeyID=52462340&amp;Signature=AwfGEl8wC0TOr2O1a%252B2jK9FfnGIU5esLQl74q3yJe4jBZy%252BbUWF%252B3Ishh9DFZyOnmweHGGXsrmZkJ7Ub%2FU8uAg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/cd58462e84d44999b0e5d8441a53f365?Prefix=01157b6f979a4cf19c3d505d378073c1%2Fefa4bbd2e7f74b238c4e89268652cb45&amp;KeyID=52462340&amp;Signature=2qw7VWboWK%2F8KPRpxxVrdtGUGGlex%2F38VV9L9EfTz%252Bmo0fge%2F8Ej1wd%252BuViQNMPJ54H67yFGBd77iM8iUU4qBw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/a50beb83009740ec91362a88ac8bc79f?Prefix=0120525509fb48c2b94617fe8ed08523%2F8569c29f29fc4e5e8db144009dd65ed9&amp;KeyID=52462340&amp;Signature=bnxP6%2F8ii2bTanJj9VZyNw9lRG%2Fy1Nmze0fOFmRqDa2sLemvq22j69NXJN6L3ggyJ6FmKM98CBZ1DdkcZAgXBg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/df96805515234b4a9afdf2f04688cb4a?Prefix=0120525509fb48c2b94617fe8ed08523%2F8569c29f29fc4e5e8db144009dd65ed9&amp;KeyID=52462340&amp;Signature=8ietYU3szTB1sS9a0J1GgEiCBIajt%2FxLoYaFZ0K7itwkobSMuhuBKJACFpkjG%252BVVjQf8xOL9kbAOx3Zo9CbGBQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/7891a33b0fbb4bc5be63569bbf86ab2b?Prefix=012321e9ece44e6292981d3d9b871068%2F0ba460adcad843a9ab6c3b9b3235a48f&amp;KeyID=52462340&amp;Signature=2udhwN9cdfUt2zxguvDuWtzeFepHGVgreZ2PHm9jmoy%252BT7dMuobX8EzMvNMIyjD8UVdBdGK3nJVDEfHpfAbFAg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/31edc06c7c454962ae4d21feaa0165f0?Prefix=014b66f471ae4035bd3e8f1601f2b7eb%2Fe3ea747286e64d12ad3e75b62b53f526&amp;KeyID=52462340&amp;Signature=EWJUNY2I0S6meSCaEG85FjkVtFhgPa863hyNIliT9O3bhkYXgwpsO2ofbydn1b4X0XpZuVU%2FOWC0L7ULrGKTAA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/601f677f5e2941258ce135042074da84?Prefix=014b66f471ae4035bd3e8f1601f2b7eb%2Fe3ea747286e64d12ad3e75b62b53f526&amp;KeyID=52462340&amp;Signature=lev5q6wKsePsAdNkpzBYQRM9nqvuHaEvru9m3U84wm8sjLf2H5hEAuxeJXJnB3iNpiGvpOaD%2FgeTBzEjrgveBw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/7f55983a7a8f46c5a8bd3b81e896e528?KeyID=52462340&amp;Signature=ckgEkwchvpS%252BHybZvi789Z9NJYH%2FXzg8KmuyXjjgBnuCrXTdLK%2F74%2FOaKlg%2FQdR%252B6A8%2FmhPxfYnmXalMm0tfDA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/a69ad0d5b979486cb9936b0183cf614c?KeyID=52462340&amp;Signature=CTnbMUXMSrtyzcfce4FDII5Yc9I7PaqWmra%2FhJc9ADZJ0%2F14CzmWzu1%2FXsnJfFvsXr5rNHW%2FGAVd5SfL81O5Ag%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>notice</td>\n",
" <td>application/pkcs7-signature</td>\n",
" <td>https://public.docs.openprocurement.org/get/f69c169030b443e5ae8696a1a5ace939?KeyID=52462340&amp;Signature=wrQSz4DBWKsm%2FJXp255JgNkgLuNu%252B5gWvSGxjMWpye5ZkFp9Za6gOPtzUtiiUmQ6BhmTsNg5kFfTMOA50Ot1Dw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/2241f4060d434a06ba4c96b2e2415e91?Prefix=01eb28d652ca42da814d3f9245b5d785%2Fcb844b359c40415e875cefe7586cb241&amp;KeyID=52462340&amp;Signature=2yF26KQLM3CrTibUVsEJOqa0BkW1njzVoBCfqvQJUvxKjUoM2uWlvD%252B4IbAq%2Fd%252BPhcNL6pEKIKVu%252B96qn6yeDA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/7148f6357dc045edb2d30c83614e4757?Prefix=0219f7373aa74e84946ea229d449e5fc%2F5d0d58fcbb0e4c7fb11c56f9700c4ade&amp;KeyID=52462340&amp;Signature=JLazNeMyspcsPMyclBblBHVTa%252B09xincIMg0ocKikPKT%252B0%252BmIwsu7n5iXaeQ%252Bus%2FEHYo2n%252Bj%252BkIJF9kkY14%2FAA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/3afd52fb3f944c7fac74f024d87f093a?Prefix=02269037bf5a46be923364313dc28106%2F50331c173e604c66818b4f013189b593&amp;KeyID=52462340&amp;Signature=4OKzoxWIfPv01GBaSybLpMSbtU%2FNEeobypxgxw31Eny7kjaIyvbfhK3aXmpW3QDiYYGb1Pj8Guc%252BV8hAajtpBg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/bebeeefe139d430bba317e97c9974d43?Prefix=02269037bf5a46be923364313dc28106%2F50331c173e604c66818b4f013189b593&amp;KeyID=52462340&amp;Signature=LJYQcNoeJpBcWaveuhs2xU4x%252BCkCKN11%2FFHtEGb9Lfw7%252BteKCgmg01Trs4luVsMF56NfT%2FczTVaIIFtOvVPbCg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/b37081845feb4c13adcf00d60362a189?KeyID=52462340&amp;Signature=ryPufCQCTYqcn%2Fz6fue%2F5oOqQgUGR7v%252BDmVsq2dz5iE%252BSuKbXA9H2sRpz68mEdk8%2FLZyE1aSByEmSgxPwfflAw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/2f574cd87976430cbf9936aa0847a43d?KeyID=52462340&amp;Signature=%252B7%252Bd62R1VDESBphDIieH23lCvL1dXza%252Bh1Bj1172EKsKlZNKPRD9YXWZX7YL9EWyuMfk6ohrYsBJ%2FSUSH5ccAw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/e9710c77b4fb4d199a402e5e50149434?Prefix=02844d0ae48841a49a613b0965bc08e9%2Faf88f08b3a624fd49f7501130fb24d7e&amp;KeyID=52462340&amp;Signature=uMfCMgIYYjKL4vVG2bePKOojQSV1vD5%2FQ2%2FdHCqBEaG%252BtOFNGFONHHJ3ksQ7If%252BxJjcjEGp%252Bd45bA5IwPnb1AQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/940f495295ca49ad95356b6ce41cb990?KeyID=52462340&amp;Signature=RoKgIymCuAOz%252BQEEQk9UL3f%252BBhsXSa%252B3KDbAThBTpdx6IvU1v2z7JyhAkDN%2FfjxvY%2F3vP99o8kN78A0oNqpZCg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/ead59446be6945eea61604ca96dd5e36?KeyID=52462340&amp;Signature=VWHBmzU69LCd47eYY%2FIF9auaGx9gKEuFqdY9LXIi9kx5rCYZclB7Rjo4g41eYDEIHF1ZH3eJWH7M1RD4EG4%2FAQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/7a72c86a8346470f90fa387b20e554ed?KeyID=52462340&amp;Signature=FtawZJEvvNIwscWl%2F840jbE6y7Gg3NK67OteMXjqln33Wjq8XvDmrDgXVFpmmIhSlgAA3zuq0ItZ8g9YKVB%2FBA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4059</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/7673f936212149c8bdb9c4f29dedefba?KeyID=52462340&amp;Signature=7KjRjSLhJJZtGNOXVWbKx7RqBogpG3e6aSTjBy8Xv6nVjVXUy8zT0aG8OYZ4b5DwYO00ZiZ6s2B7d0yMGFL8Bw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4061</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/973a690d421f4c44b8166dc940a22091?Prefix=fda5bfe34bfd49dda29d48625da3bcd2%2F641b9a363a224ec7b5e1318165301ffb&amp;KeyID=52462340&amp;Signature=MJG%2FY%252BRF8NbgHSMdw%252BpZkMt6rwptW7AoaqKGk74%2F1TGdOamcvTDsSv2KbmCB50DKKVNMQbilG%2FyLhs1tHIl%2FDg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4062</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/64dfa80efc95456e84d84c25dde8ce01?KeyID=52462340&amp;Signature=JVbuabF%252BrwBSKsKA2QVNMhK6GYeLRDBQzMx6SENYrpFyGkDPic0WgoDBi5ryhCAwEn4m5E4D%2FyubNANDQrIjCA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4064</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/71030309ab2a4a1b831d03b6c70e4e08?Prefix=fdf6240fc77d4443b380672b0852f040%2F95925a18e3324f718627679342016ffb&amp;KeyID=52462340&amp;Signature=b4CH3sXZ1KYF6N5nT6Vs2B2HTGFxxB78YWtQwoO8cnKKlQnbT9x0WANVpQFeVdWXPgtEQTd%252BD%2F88CIQS7il1Bw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4065</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/5d85d1916d98485f9ffc1af4c057233f?Prefix=fdf6240fc77d4443b380672b0852f040%2F5885b46adb05467ab5c2de8bc8af60f9&amp;KeyID=52462340&amp;Signature=5exaHptjd%2Fu9Y5%2FEIummQPbdTdQKl7yKn09d%252BYnBjnJvKa%252BrbdIJVXoU6E1SLp36NpuCMi%252BtNSmDfFdoC8jGAQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4066</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/b5fa6932fd1445b58406719cf89c673d?Prefix=fe05b1ecd3ca4c02b2ff8c6d1f73e2d3%2F9d2c8f319a244318869f14d236ed176c&amp;KeyID=52462340&amp;Signature=Wt9%2F8uHqKo%2FCF%2FbRHu9Su%252B%2Fn%2FcLP%2FZsnhE3Qlg9jxuXN1mmXH178tHHZuvCMu4%252BZb%252Bz1oQoCSc8Q6I7RtMusBA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4067</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/758c87861111405bad9420eecb027cde?KeyID=52462340&amp;Signature=jEeTLo%252BLfVBS%252BKLMS66eBs7q6YB1CSGFRTaJcPy1qS%2FWjmOTgqvslfdR3bQxjgEhM%252BxgkW31jz6L7QT4jeucBQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4068</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/ac7b290118d646088bfde50dcc011283?Prefix=fe1e00976b1249b29b4b83b02803a360%2Fd81fb68bddf84112b24f81d1aec5c66b&amp;KeyID=52462340&amp;Signature=YceScqm4vTC5tTFpKg5HIymH%252B76pFPNCgYyy3xSMjpKE9BJ7qiBzoPUJqTG05dJsEmqhe1Y%252Bo3yvbwyYR5TqAg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4069</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/54942256ddca46fdb017683f55019afe?KeyID=52462340&amp;Signature=kccpYY%252BwYOsVkZT9IitDTrWkVvC%2FfeOV3BDjU4%2FEjcAMW20kHJKQLY7P4LzfQIBjKBLnMZ0MQjZqM8qK8FZ6BA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4070</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/5238b1e35e0941ccb035075a7ef786c7?KeyID=52462340&amp;Signature=yQx374o%252BO2AYY9TqtlvvjPVFe2%2FoHhO0HXuPYG7zyc%2Fmqxr9hFGMCkR85g%2FD9Muzh2R0ZjhrLlS1kUiQIXU0Ag%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4071</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/fb226ca36ad6452d817732fe9ce985c2?KeyID=52462340&amp;Signature=aRT3YvlrNGg6Cvfspf7Heok%2FCZYo6mMDq%252BgdYD2XB7YjRiUNdMOX2h3i6yJEqylWMYniCzeFKf98RYL4PCgkDA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4073</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/afb2c9d7c1464cb2be67b6a870d3a347?KeyID=52462340&amp;Signature=lXbpBBOE%2FMLwvxzP4lfvTLyyTJa1vOigYzDoCNUDnPFXFIGHOU0n7U%2FMOlA2MQFaXxAhtcEYFjUDdNCmWg19Cg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4074</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/e1693937bc6d4dacb92e6fdbc6d95ec0?KeyID=52462340&amp;Signature=CV8WxV4dG1L%2FoFdQrYyN%2FmCjVVvqE%2Fy5frdOVO%2FM0GqiX4k0HQu9aPEdHSN6B5KazDXZNKmtFr30QAYZIlyABw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4075</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/319282178cae4f3ca0e6e274d4bb3b47?KeyID=52462340&amp;Signature=w%2FZK4U2YHmXM5WtVmWrOPxbRe3fkjzpDMzYlgAlpItdU7UFORqKHFejowr8ZdI5lz%2F3STi6wRhcQ4EBE0yJqAQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4076</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/692cb016beb94db9b9b50cc5b62e099f?Prefix=fe7f1404e6b84cf29adff37a990cdc6f%2Fdf3cf8e65a994b3eb4cec70872da86dd&amp;KeyID=52462340&amp;Signature=O1jIXinXPyzOkaOcZ2BMfWzaOdbXaw0gdIfg4k%2FzIdnoJFf%2FQOk3nGDq%252Bc6siMxFYrizXfaGMZm2P60maR7sCw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4077</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/9d89be5940ad4b3eb326c5bb46f74c5b?KeyID=52462340&amp;Signature=FQ1u4%252BklkMK5A5Sgk51ZST8s%2FOT0WtFtkMJEa7hopyjwWH3okaQkXInG3r1It5OswB9gp%252ByA2UvDv%2Fq6vhY5Dg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4080</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/8d8f58d273f14ea18a7738f88d1625c8?Prefix=fea114cf1c3044beada8eaf302e6e6bc%2Ffd7b49b862ef49c4b72a841d8e34e4c5&amp;KeyID=52462340&amp;Signature=%2Far%2Fppr2DWQoWQBy0VWr4HroxQSCNzviozF%252BaCCMjMXQRV3Pdzy9xCwOwUBdFqHC0WXhmd3ZoPnCW5rZxX6cCw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4081</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/f40b0ef40ffd4197a07cb93e44ed2c45?Prefix=fea114cf1c3044beada8eaf302e6e6bc%2Ffd7b49b862ef49c4b72a841d8e34e4c5&amp;KeyID=52462340&amp;Signature=vKGHqYVal1D8UFUBKzvT5Mm84XVz%252BYiP3ncYKg3Bajycr32nbHVWF1FFNwubI68R%252BDbLQ0HxWotIySRE1yNhBQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4082</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/aeb6ef289ec34b459a37818cc17f27ee?KeyID=52462340&amp;Signature=7XAX%252BbzG5WVTyet%252BTr9n13jQgRiatk1ABYRrk5JIRDr%2FKmCV4y%252B%2F2fNWwRvgHq6hiH3o3WY9UY7lRXFD0mkaAw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4083</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/03aab68d266f498a8d73dc756290d90a?Prefix=fed7a6ff50904acea0938b855b80a523%2F4920096ed25543a59d99e26fd1778d15&amp;KeyID=52462340&amp;Signature=m2iDhcvmJ52Uxr9C9hZiRSRjfQ34bv8oyv4jSf5lNntqxFr5sL9k83TDfgQsWVpWymT5bsCdBSHinwhhZkXZDA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4084</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/8c8c11282a384e04bd577186c30657cc?Prefix=fee03c7ac273407785d3b612cf75356a%2F533b075f65344474b03be219633c5306&amp;KeyID=52462340&amp;Signature=ofyn5NnZkcJAyGrCUK5XFNdInzgJejeyfRhM5krrlR5blRe8Hqx2rYpNcGE9wviEEUW3W4%252BJTQLFPbnVLbVFCg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4085</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/b78c82f08e664237bb4e21a39e3d2ed1?KeyID=52462340&amp;Signature=ihza9CZjTFr7IYgOOCXj5LLEok7KQChcXFddDamOjId5aibg%2FbYjtBw6vebtO4YGZFx9QoY%252Bi2yAWC0v2L2CBA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4088</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/f0c58da1b6a444f1b4c940f4634213c0?KeyID=52462340&amp;Signature=Ym7AO%252BUeDqBGTyNnj0csbJwtr257HQB%2FsyUjhmI1Nn7wuz0NwmxfZHyDsrnwe1qmJV3xwL0rJqgVO2PpnHMMBw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4091</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/8007b38c0e8b4e1cb4f2b3698944b64e?Prefix=ff5b566206e74bafbaee2825cb1ad3fd%2F94c438620d0c48abb6d610b217d9b370&amp;KeyID=52462340&amp;Signature=RMTJHP4bcypbFyt3Mj%2FPONxUphyqEj1U3int7VVXeU%252B%2FGaelOnOsg4mYB4F2IDH9yP1iQwN00mxYe43lPclNBQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4093</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/873a0adcf6dd49c191477dceafca121a?Prefix=0053c448f0f347f4aa10b9bafa684a0e%2F0999499aa03a4e9eae34ffcd300df93b&amp;KeyID=52462340&amp;Signature=xdh0UiB4Gd8cO7Rm0ikDOy77K35mOJzhVcWlRCKhNzR%2FjCJzHmipjYjuOLQS%2Fpmtu1YtNsLqWohB9mVvJ%252BKLDg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4094</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/b9a5e46eae9843e698596c84e4e9c2f8?Prefix=0053c448f0f347f4aa10b9bafa684a0e%2F0999499aa03a4e9eae34ffcd300df93b&amp;KeyID=52462340&amp;Signature=q8ZR2MsMnRTS3wpssdhCnYeyHT2f7euV22vRihE0juP732aNpRyrDmi6fN0uHGCYeJncIfd7fw6IugjoU%252BeECw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4095</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/9edc72a4046e41b29478ad8569378e22?Prefix=0053c448f0f347f4aa10b9bafa684a0e%2F0999499aa03a4e9eae34ffcd300df93b&amp;KeyID=52462340&amp;Signature=JPbJUln%2FUyYKj%2FPcTTxbNF6lYRR%252B9zLq0JKlakU%2Fmd%2Fw%252BfSPW6lHK%2FB6bpvYqgSa%252By19SXPNqmRNLH8jjiF5Cw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4096</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>https://public.docs.openprocurement.org/get/c4a4bdd62774481c81b1b9ebe54e3fbc?Prefix=005ddbcacf7d479188afafa1e8e5491c%2F501b50e9a1e04d5bbfb566bfdb0ccf45&amp;KeyID=52462340&amp;Signature=UaW4E72cLmfEzNewJV0TnIc%252BcGQObH4K%252ByWIfXRHTO0ifk3YVmYIVW69GFoJlRnksN85Xlo9zA57%2F172eFpUBA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4097</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>https://public.docs.openprocurement.org/get/4ff35874115f49dba4cf0ff63ab6c086?Prefix=003e9cf28d8146d7b9a342349b4dd65e%2Fb72c3316f3bd4842842ff562b453b087&amp;KeyID=52462340&amp;Signature=boKa5KkcbO1bIhCaxoFtBBcwUbaxOL670GAufknwHxZcQNA%2FQeyvSVXKJMNIujvLCQxDjuWJvh6R33Y3RqYIAg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4098</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>https://public.docs.openprocurement.org/get/04e7b69181a74846a287d4368fac89de?Prefix=0066761ef7e74c50a2f32b5420f0b464%2Fa77df3618acf47719ad9834a096f93e6&amp;KeyID=52462340&amp;Signature=o%2FEaLZfyh7tSsUpKPzatRqJvIPHWLcl3da6iHTSqFsM7iCtI9%2FPo85NL6LByCc6DJJxKNTY6J6xWSmN6yt4gCg%253D%253D</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2569 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" documenttype \\\n",
"0 notice \n",
"1 notice \n",
"2 notice \n",
"3 notice \n",
"4 notice \n",
"5 notice \n",
"6 notice \n",
"7 notice \n",
"8 notice \n",
"9 notice \n",
"10 notice \n",
"11 notice \n",
"12 notice \n",
"13 notice \n",
"14 notice \n",
"16 notice \n",
"17 notice \n",
"25 notice \n",
"26 notice \n",
"27 notice \n",
"28 notice \n",
"29 notice \n",
"30 notice \n",
"31 notice \n",
"33 notice \n",
"34 notice \n",
"35 notice \n",
"37 notice \n",
"38 notice \n",
"39 notice \n",
"... ... \n",
"4059 notice \n",
"4061 notice \n",
"4062 notice \n",
"4064 notice \n",
"4065 notice \n",
"4066 notice \n",
"4067 notice \n",
"4068 notice \n",
"4069 notice \n",
"4070 notice \n",
"4071 notice \n",
"4073 notice \n",
"4074 notice \n",
"4075 notice \n",
"4076 notice \n",
"4077 notice \n",
"4080 notice \n",
"4081 notice \n",
"4082 notice \n",
"4083 notice \n",
"4084 notice \n",
"4085 notice \n",
"4088 notice \n",
"4091 notice \n",
"4093 notice \n",
"4094 notice \n",
"4095 notice \n",
"4096 notice \n",
"4097 notice \n",
"4098 notice \n",
"\n",
" format \\\n",
"0 application/pdf \n",
"1 application/msword \n",
"2 application/msword \n",
"3 application/msword \n",
"4 application/pdf \n",
"5 application/msword \n",
"6 application/pdf \n",
"7 application/msword \n",
"8 application/msword \n",
"9 application/msword \n",
"10 application/msword \n",
"11 application/pdf \n",
"12 application/msword \n",
"13 application/msword \n",
"14 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"16 application/msword \n",
"17 application/msword \n",
"25 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"26 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"27 application/pkcs7-signature \n",
"28 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"29 application/msword \n",
"30 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"31 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"33 application/msword \n",
"34 application/pdf \n",
"35 application/msword \n",
"37 application/pdf \n",
"38 application/pdf \n",
"39 application/pdf \n",
"... ... \n",
"4059 application/pdf \n",
"4061 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"4062 application/pdf \n",
"4064 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"4065 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"4066 application/msword \n",
"4067 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"4068 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"4069 application/pdf \n",
"4070 application/msword \n",
"4071 application/pdf \n",
"4073 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"4074 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"4075 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"4076 application/pdf \n",
"4077 application/pdf \n",
"4080 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"4081 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"4082 application/msword \n",
"4083 application/pdf \n",
"4084 application/pdf \n",
"4085 application/pdf \n",
"4088 application/pdf \n",
"4091 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"4093 application/msword \n",
"4094 application/msword \n",
"4095 application/msword \n",
"4096 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"4097 application/pdf \n",
"4098 application/msword \n",
"\n",
" url \n",
"0 https://public.docs.openprocurement.org/get/41457ce9643e44cc8058f303bd23fb0c?KeyID=52462340&Signature=A0cg2lOSHl8utrViJeTGc4t6pV0Phfj0iLvwihljt6dovtLMm3%2FbpvvOyiETq%2FbF0z8xTn2oliVr6US9zwM7Dg%253D%253D \n",
"1 https://public.docs.openprocurement.org/get/495c7309ea934ffebce6ede88183c727?Prefix=00ac8e1a24f7495cb5e0dd5e6684eeb2%2F4e9e9e65ca934e9aa66eebcf10757d31&KeyID=52462340&Signature=NtAuH29KEPurUmmM8KTEiZJ%2F6nDIT6mDhUDfIWI9OLKjVRMOor86e8Eblrl%252BB1jmBLrkDtqZFHtm4u0AQNPYBA%253D%253D \n",
"2 https://public.docs.openprocurement.org/get/2065065452574b70841e818526016a8b?Prefix=00ac8e1a24f7495cb5e0dd5e6684eeb2%2Fb5ee437bd0204f16977adf6e254a02c7&KeyID=52462340&Signature=5Q75umgE2PuW1TazVrxnLjIdOz27mib6hniwQ3IJ2Vt0Z90Q8FRlXUNh1IG3z1AmE8Bxawwe%252BjVbYCqRVcr3Aw%253D%253D \n",
"3 https://public.docs.openprocurement.org/get/126bebf55b844c3989ffe0b6895d220e?Prefix=00ac8e1a24f7495cb5e0dd5e6684eeb2%2F4e9e9e65ca934e9aa66eebcf10757d31&KeyID=52462340&Signature=JRc4nnQRn3T%252Bb%252BIAmFu0fQUlNC6oNE0X2AfTOPRqbtUmYTqG%252BQL4H3i%2FFQahEPivDyD34QstdgUeyLP2tET9DA%253D%253D \n",
"4 https://public.docs.openprocurement.org/get/072f794c91414d7bac0da83e033d4f53?KeyID=52462340&Signature=HCUQ2DYM%2F8LVz9Sxyv1KpvZhrZmjzdHD61XvsLHVhPkZjEgGN5mgriTIamcjoZWSoQudy40bMfzlVER%2Fkuw9AQ%253D%253D \n",
"5 https://public.docs.openprocurement.org/get/bd7bb1c9ff534a33ac959ff44f55aa6d?KeyID=52462340&Signature=GzJGH8Aw8sFbJFmXbB89deeEPASVxm%2FDFAr5U91dBICNHjREUUKTM1iYaThdv0adKg8uXGYvoykkCCBlw8JhDA%253D%253D \n",
"6 https://public.docs.openprocurement.org/get/3c41da7ab84c43b69ab9162a3b40270d?KeyID=52462340&Signature=UJon0sqwfb12fh44HpCS%2F%252BK9a01Rnj2hrTZWYuzq6pNNQXNIkBIVPyNHwH6D5aBTwI2DEw16BTNOzYVHSqkVDw%253D%253D \n",
"7 https://public.docs.openprocurement.org/get/c61bdcf1d83e460d8d2e50d6d41a277a?Prefix=00fda329f3174f7aa5ccbc77c272d1de%2Fee8478c2a6074ac5bd871e15c9bd36b4&KeyID=52462340&Signature=c1UnJ1Bg%252Brplmop7%252Bm%252BBVt05i8ZAKnWjnMW%252BHXbjmEKjfUXOuCcWd4yT%252BqDAyxbs5yRtVwtMMuC%2FyOuCeU00DQ%253D%253D \n",
"8 https://public.docs.openprocurement.org/get/6feb40cebd464e4eaed8241356a0738c?Prefix=00fda329f3174f7aa5ccbc77c272d1de%2Fee8478c2a6074ac5bd871e15c9bd36b4&KeyID=52462340&Signature=U75wuGpGtDPiGdUKccREiLQpXHb9drM6z%252B0bwdWj%2Fhof9NGv1Z6Gt%2F9vRp4QMvEIICzm7j7jJKboUZP2%252BSMvCA%253D%253D \n",
"9 https://public.docs.openprocurement.org/get/b735a08dcc4f4dd38e8bc7b03655763a?Prefix=00fda329f3174f7aa5ccbc77c272d1de%2Fee8478c2a6074ac5bd871e15c9bd36b4&KeyID=52462340&Signature=k5bILLMI4nZbcQAsguMybduauyJZC%2FU%252BoTGlVi9pITKGAzmAZCKUGeAj7CiDbPLf%2FAK26WZNnKi5xjcAmBcRCg%253D%253D \n",
"10 https://public.docs.openprocurement.org/get/5273d8cfc7b24582b7c2b194ae1d3181?Prefix=010edfa685a64db49a25d5e8695446a5%2Fc0e09587efc84020abc68b521ea85048&KeyID=52462340&Signature=AwfGEl8wC0TOr2O1a%252B2jK9FfnGIU5esLQl74q3yJe4jBZy%252BbUWF%252B3Ishh9DFZyOnmweHGGXsrmZkJ7Ub%2FU8uAg%253D%253D \n",
"11 https://public.docs.openprocurement.org/get/cd58462e84d44999b0e5d8441a53f365?Prefix=01157b6f979a4cf19c3d505d378073c1%2Fefa4bbd2e7f74b238c4e89268652cb45&KeyID=52462340&Signature=2qw7VWboWK%2F8KPRpxxVrdtGUGGlex%2F38VV9L9EfTz%252Bmo0fge%2F8Ej1wd%252BuViQNMPJ54H67yFGBd77iM8iUU4qBw%253D%253D \n",
"12 https://public.docs.openprocurement.org/get/a50beb83009740ec91362a88ac8bc79f?Prefix=0120525509fb48c2b94617fe8ed08523%2F8569c29f29fc4e5e8db144009dd65ed9&KeyID=52462340&Signature=bnxP6%2F8ii2bTanJj9VZyNw9lRG%2Fy1Nmze0fOFmRqDa2sLemvq22j69NXJN6L3ggyJ6FmKM98CBZ1DdkcZAgXBg%253D%253D \n",
"13 https://public.docs.openprocurement.org/get/df96805515234b4a9afdf2f04688cb4a?Prefix=0120525509fb48c2b94617fe8ed08523%2F8569c29f29fc4e5e8db144009dd65ed9&KeyID=52462340&Signature=8ietYU3szTB1sS9a0J1GgEiCBIajt%2FxLoYaFZ0K7itwkobSMuhuBKJACFpkjG%252BVVjQf8xOL9kbAOx3Zo9CbGBQ%253D%253D \n",
"14 https://public.docs.openprocurement.org/get/7891a33b0fbb4bc5be63569bbf86ab2b?Prefix=012321e9ece44e6292981d3d9b871068%2F0ba460adcad843a9ab6c3b9b3235a48f&KeyID=52462340&Signature=2udhwN9cdfUt2zxguvDuWtzeFepHGVgreZ2PHm9jmoy%252BT7dMuobX8EzMvNMIyjD8UVdBdGK3nJVDEfHpfAbFAg%253D%253D \n",
"16 https://public.docs.openprocurement.org/get/31edc06c7c454962ae4d21feaa0165f0?Prefix=014b66f471ae4035bd3e8f1601f2b7eb%2Fe3ea747286e64d12ad3e75b62b53f526&KeyID=52462340&Signature=EWJUNY2I0S6meSCaEG85FjkVtFhgPa863hyNIliT9O3bhkYXgwpsO2ofbydn1b4X0XpZuVU%2FOWC0L7ULrGKTAA%253D%253D \n",
"17 https://public.docs.openprocurement.org/get/601f677f5e2941258ce135042074da84?Prefix=014b66f471ae4035bd3e8f1601f2b7eb%2Fe3ea747286e64d12ad3e75b62b53f526&KeyID=52462340&Signature=lev5q6wKsePsAdNkpzBYQRM9nqvuHaEvru9m3U84wm8sjLf2H5hEAuxeJXJnB3iNpiGvpOaD%2FgeTBzEjrgveBw%253D%253D \n",
"25 https://public.docs.openprocurement.org/get/7f55983a7a8f46c5a8bd3b81e896e528?KeyID=52462340&Signature=ckgEkwchvpS%252BHybZvi789Z9NJYH%2FXzg8KmuyXjjgBnuCrXTdLK%2F74%2FOaKlg%2FQdR%252B6A8%2FmhPxfYnmXalMm0tfDA%253D%253D \n",
"26 https://public.docs.openprocurement.org/get/a69ad0d5b979486cb9936b0183cf614c?KeyID=52462340&Signature=CTnbMUXMSrtyzcfce4FDII5Yc9I7PaqWmra%2FhJc9ADZJ0%2F14CzmWzu1%2FXsnJfFvsXr5rNHW%2FGAVd5SfL81O5Ag%253D%253D \n",
"27 https://public.docs.openprocurement.org/get/f69c169030b443e5ae8696a1a5ace939?KeyID=52462340&Signature=wrQSz4DBWKsm%2FJXp255JgNkgLuNu%252B5gWvSGxjMWpye5ZkFp9Za6gOPtzUtiiUmQ6BhmTsNg5kFfTMOA50Ot1Dw%253D%253D \n",
"28 https://public.docs.openprocurement.org/get/2241f4060d434a06ba4c96b2e2415e91?Prefix=01eb28d652ca42da814d3f9245b5d785%2Fcb844b359c40415e875cefe7586cb241&KeyID=52462340&Signature=2yF26KQLM3CrTibUVsEJOqa0BkW1njzVoBCfqvQJUvxKjUoM2uWlvD%252B4IbAq%2Fd%252BPhcNL6pEKIKVu%252B96qn6yeDA%253D%253D \n",
"29 https://public.docs.openprocurement.org/get/7148f6357dc045edb2d30c83614e4757?Prefix=0219f7373aa74e84946ea229d449e5fc%2F5d0d58fcbb0e4c7fb11c56f9700c4ade&KeyID=52462340&Signature=JLazNeMyspcsPMyclBblBHVTa%252B09xincIMg0ocKikPKT%252B0%252BmIwsu7n5iXaeQ%252Bus%2FEHYo2n%252Bj%252BkIJF9kkY14%2FAA%253D%253D \n",
"30 https://public.docs.openprocurement.org/get/3afd52fb3f944c7fac74f024d87f093a?Prefix=02269037bf5a46be923364313dc28106%2F50331c173e604c66818b4f013189b593&KeyID=52462340&Signature=4OKzoxWIfPv01GBaSybLpMSbtU%2FNEeobypxgxw31Eny7kjaIyvbfhK3aXmpW3QDiYYGb1Pj8Guc%252BV8hAajtpBg%253D%253D \n",
"31 https://public.docs.openprocurement.org/get/bebeeefe139d430bba317e97c9974d43?Prefix=02269037bf5a46be923364313dc28106%2F50331c173e604c66818b4f013189b593&KeyID=52462340&Signature=LJYQcNoeJpBcWaveuhs2xU4x%252BCkCKN11%2FFHtEGb9Lfw7%252BteKCgmg01Trs4luVsMF56NfT%2FczTVaIIFtOvVPbCg%253D%253D \n",
"33 https://public.docs.openprocurement.org/get/b37081845feb4c13adcf00d60362a189?KeyID=52462340&Signature=ryPufCQCTYqcn%2Fz6fue%2F5oOqQgUGR7v%252BDmVsq2dz5iE%252BSuKbXA9H2sRpz68mEdk8%2FLZyE1aSByEmSgxPwfflAw%253D%253D \n",
"34 https://public.docs.openprocurement.org/get/2f574cd87976430cbf9936aa0847a43d?KeyID=52462340&Signature=%252B7%252Bd62R1VDESBphDIieH23lCvL1dXza%252Bh1Bj1172EKsKlZNKPRD9YXWZX7YL9EWyuMfk6ohrYsBJ%2FSUSH5ccAw%253D%253D \n",
"35 https://public.docs.openprocurement.org/get/e9710c77b4fb4d199a402e5e50149434?Prefix=02844d0ae48841a49a613b0965bc08e9%2Faf88f08b3a624fd49f7501130fb24d7e&KeyID=52462340&Signature=uMfCMgIYYjKL4vVG2bePKOojQSV1vD5%2FQ2%2FdHCqBEaG%252BtOFNGFONHHJ3ksQ7If%252BxJjcjEGp%252Bd45bA5IwPnb1AQ%253D%253D \n",
"37 https://public.docs.openprocurement.org/get/940f495295ca49ad95356b6ce41cb990?KeyID=52462340&Signature=RoKgIymCuAOz%252BQEEQk9UL3f%252BBhsXSa%252B3KDbAThBTpdx6IvU1v2z7JyhAkDN%2FfjxvY%2F3vP99o8kN78A0oNqpZCg%253D%253D \n",
"38 https://public.docs.openprocurement.org/get/ead59446be6945eea61604ca96dd5e36?KeyID=52462340&Signature=VWHBmzU69LCd47eYY%2FIF9auaGx9gKEuFqdY9LXIi9kx5rCYZclB7Rjo4g41eYDEIHF1ZH3eJWH7M1RD4EG4%2FAQ%253D%253D \n",
"39 https://public.docs.openprocurement.org/get/7a72c86a8346470f90fa387b20e554ed?KeyID=52462340&Signature=FtawZJEvvNIwscWl%2F840jbE6y7Gg3NK67OteMXjqln33Wjq8XvDmrDgXVFpmmIhSlgAA3zuq0ItZ8g9YKVB%2FBA%253D%253D \n",
"... ... \n",
"4059 https://public.docs.openprocurement.org/get/7673f936212149c8bdb9c4f29dedefba?KeyID=52462340&Signature=7KjRjSLhJJZtGNOXVWbKx7RqBogpG3e6aSTjBy8Xv6nVjVXUy8zT0aG8OYZ4b5DwYO00ZiZ6s2B7d0yMGFL8Bw%253D%253D \n",
"4061 https://public.docs.openprocurement.org/get/973a690d421f4c44b8166dc940a22091?Prefix=fda5bfe34bfd49dda29d48625da3bcd2%2F641b9a363a224ec7b5e1318165301ffb&KeyID=52462340&Signature=MJG%2FY%252BRF8NbgHSMdw%252BpZkMt6rwptW7AoaqKGk74%2F1TGdOamcvTDsSv2KbmCB50DKKVNMQbilG%2FyLhs1tHIl%2FDg%253D%253D \n",
"4062 https://public.docs.openprocurement.org/get/64dfa80efc95456e84d84c25dde8ce01?KeyID=52462340&Signature=JVbuabF%252BrwBSKsKA2QVNMhK6GYeLRDBQzMx6SENYrpFyGkDPic0WgoDBi5ryhCAwEn4m5E4D%2FyubNANDQrIjCA%253D%253D \n",
"4064 https://public.docs.openprocurement.org/get/71030309ab2a4a1b831d03b6c70e4e08?Prefix=fdf6240fc77d4443b380672b0852f040%2F95925a18e3324f718627679342016ffb&KeyID=52462340&Signature=b4CH3sXZ1KYF6N5nT6Vs2B2HTGFxxB78YWtQwoO8cnKKlQnbT9x0WANVpQFeVdWXPgtEQTd%252BD%2F88CIQS7il1Bw%253D%253D \n",
"4065 https://public.docs.openprocurement.org/get/5d85d1916d98485f9ffc1af4c057233f?Prefix=fdf6240fc77d4443b380672b0852f040%2F5885b46adb05467ab5c2de8bc8af60f9&KeyID=52462340&Signature=5exaHptjd%2Fu9Y5%2FEIummQPbdTdQKl7yKn09d%252BYnBjnJvKa%252BrbdIJVXoU6E1SLp36NpuCMi%252BtNSmDfFdoC8jGAQ%253D%253D \n",
"4066 https://public.docs.openprocurement.org/get/b5fa6932fd1445b58406719cf89c673d?Prefix=fe05b1ecd3ca4c02b2ff8c6d1f73e2d3%2F9d2c8f319a244318869f14d236ed176c&KeyID=52462340&Signature=Wt9%2F8uHqKo%2FCF%2FbRHu9Su%252B%2Fn%2FcLP%2FZsnhE3Qlg9jxuXN1mmXH178tHHZuvCMu4%252BZb%252Bz1oQoCSc8Q6I7RtMusBA%253D%253D \n",
"4067 https://public.docs.openprocurement.org/get/758c87861111405bad9420eecb027cde?KeyID=52462340&Signature=jEeTLo%252BLfVBS%252BKLMS66eBs7q6YB1CSGFRTaJcPy1qS%2FWjmOTgqvslfdR3bQxjgEhM%252BxgkW31jz6L7QT4jeucBQ%253D%253D \n",
"4068 https://public.docs.openprocurement.org/get/ac7b290118d646088bfde50dcc011283?Prefix=fe1e00976b1249b29b4b83b02803a360%2Fd81fb68bddf84112b24f81d1aec5c66b&KeyID=52462340&Signature=YceScqm4vTC5tTFpKg5HIymH%252B76pFPNCgYyy3xSMjpKE9BJ7qiBzoPUJqTG05dJsEmqhe1Y%252Bo3yvbwyYR5TqAg%253D%253D \n",
"4069 https://public.docs.openprocurement.org/get/54942256ddca46fdb017683f55019afe?KeyID=52462340&Signature=kccpYY%252BwYOsVkZT9IitDTrWkVvC%2FfeOV3BDjU4%2FEjcAMW20kHJKQLY7P4LzfQIBjKBLnMZ0MQjZqM8qK8FZ6BA%253D%253D \n",
"4070 https://public.docs.openprocurement.org/get/5238b1e35e0941ccb035075a7ef786c7?KeyID=52462340&Signature=yQx374o%252BO2AYY9TqtlvvjPVFe2%2FoHhO0HXuPYG7zyc%2Fmqxr9hFGMCkR85g%2FD9Muzh2R0ZjhrLlS1kUiQIXU0Ag%253D%253D \n",
"4071 https://public.docs.openprocurement.org/get/fb226ca36ad6452d817732fe9ce985c2?KeyID=52462340&Signature=aRT3YvlrNGg6Cvfspf7Heok%2FCZYo6mMDq%252BgdYD2XB7YjRiUNdMOX2h3i6yJEqylWMYniCzeFKf98RYL4PCgkDA%253D%253D \n",
"4073 https://public.docs.openprocurement.org/get/afb2c9d7c1464cb2be67b6a870d3a347?KeyID=52462340&Signature=lXbpBBOE%2FMLwvxzP4lfvTLyyTJa1vOigYzDoCNUDnPFXFIGHOU0n7U%2FMOlA2MQFaXxAhtcEYFjUDdNCmWg19Cg%253D%253D \n",
"4074 https://public.docs.openprocurement.org/get/e1693937bc6d4dacb92e6fdbc6d95ec0?KeyID=52462340&Signature=CV8WxV4dG1L%2FoFdQrYyN%2FmCjVVvqE%2Fy5frdOVO%2FM0GqiX4k0HQu9aPEdHSN6B5KazDXZNKmtFr30QAYZIlyABw%253D%253D \n",
"4075 https://public.docs.openprocurement.org/get/319282178cae4f3ca0e6e274d4bb3b47?KeyID=52462340&Signature=w%2FZK4U2YHmXM5WtVmWrOPxbRe3fkjzpDMzYlgAlpItdU7UFORqKHFejowr8ZdI5lz%2F3STi6wRhcQ4EBE0yJqAQ%253D%253D \n",
"4076 https://public.docs.openprocurement.org/get/692cb016beb94db9b9b50cc5b62e099f?Prefix=fe7f1404e6b84cf29adff37a990cdc6f%2Fdf3cf8e65a994b3eb4cec70872da86dd&KeyID=52462340&Signature=O1jIXinXPyzOkaOcZ2BMfWzaOdbXaw0gdIfg4k%2FzIdnoJFf%2FQOk3nGDq%252Bc6siMxFYrizXfaGMZm2P60maR7sCw%253D%253D \n",
"4077 https://public.docs.openprocurement.org/get/9d89be5940ad4b3eb326c5bb46f74c5b?KeyID=52462340&Signature=FQ1u4%252BklkMK5A5Sgk51ZST8s%2FOT0WtFtkMJEa7hopyjwWH3okaQkXInG3r1It5OswB9gp%252ByA2UvDv%2Fq6vhY5Dg%253D%253D \n",
"4080 https://public.docs.openprocurement.org/get/8d8f58d273f14ea18a7738f88d1625c8?Prefix=fea114cf1c3044beada8eaf302e6e6bc%2Ffd7b49b862ef49c4b72a841d8e34e4c5&KeyID=52462340&Signature=%2Far%2Fppr2DWQoWQBy0VWr4HroxQSCNzviozF%252BaCCMjMXQRV3Pdzy9xCwOwUBdFqHC0WXhmd3ZoPnCW5rZxX6cCw%253D%253D \n",
"4081 https://public.docs.openprocurement.org/get/f40b0ef40ffd4197a07cb93e44ed2c45?Prefix=fea114cf1c3044beada8eaf302e6e6bc%2Ffd7b49b862ef49c4b72a841d8e34e4c5&KeyID=52462340&Signature=vKGHqYVal1D8UFUBKzvT5Mm84XVz%252BYiP3ncYKg3Bajycr32nbHVWF1FFNwubI68R%252BDbLQ0HxWotIySRE1yNhBQ%253D%253D \n",
"4082 https://public.docs.openprocurement.org/get/aeb6ef289ec34b459a37818cc17f27ee?KeyID=52462340&Signature=7XAX%252BbzG5WVTyet%252BTr9n13jQgRiatk1ABYRrk5JIRDr%2FKmCV4y%252B%2F2fNWwRvgHq6hiH3o3WY9UY7lRXFD0mkaAw%253D%253D \n",
"4083 https://public.docs.openprocurement.org/get/03aab68d266f498a8d73dc756290d90a?Prefix=fed7a6ff50904acea0938b855b80a523%2F4920096ed25543a59d99e26fd1778d15&KeyID=52462340&Signature=m2iDhcvmJ52Uxr9C9hZiRSRjfQ34bv8oyv4jSf5lNntqxFr5sL9k83TDfgQsWVpWymT5bsCdBSHinwhhZkXZDA%253D%253D \n",
"4084 https://public.docs.openprocurement.org/get/8c8c11282a384e04bd577186c30657cc?Prefix=fee03c7ac273407785d3b612cf75356a%2F533b075f65344474b03be219633c5306&KeyID=52462340&Signature=ofyn5NnZkcJAyGrCUK5XFNdInzgJejeyfRhM5krrlR5blRe8Hqx2rYpNcGE9wviEEUW3W4%252BJTQLFPbnVLbVFCg%253D%253D \n",
"4085 https://public.docs.openprocurement.org/get/b78c82f08e664237bb4e21a39e3d2ed1?KeyID=52462340&Signature=ihza9CZjTFr7IYgOOCXj5LLEok7KQChcXFddDamOjId5aibg%2FbYjtBw6vebtO4YGZFx9QoY%252Bi2yAWC0v2L2CBA%253D%253D \n",
"4088 https://public.docs.openprocurement.org/get/f0c58da1b6a444f1b4c940f4634213c0?KeyID=52462340&Signature=Ym7AO%252BUeDqBGTyNnj0csbJwtr257HQB%2FsyUjhmI1Nn7wuz0NwmxfZHyDsrnwe1qmJV3xwL0rJqgVO2PpnHMMBw%253D%253D \n",
"4091 https://public.docs.openprocurement.org/get/8007b38c0e8b4e1cb4f2b3698944b64e?Prefix=ff5b566206e74bafbaee2825cb1ad3fd%2F94c438620d0c48abb6d610b217d9b370&KeyID=52462340&Signature=RMTJHP4bcypbFyt3Mj%2FPONxUphyqEj1U3int7VVXeU%252B%2FGaelOnOsg4mYB4F2IDH9yP1iQwN00mxYe43lPclNBQ%253D%253D \n",
"4093 https://public.docs.openprocurement.org/get/873a0adcf6dd49c191477dceafca121a?Prefix=0053c448f0f347f4aa10b9bafa684a0e%2F0999499aa03a4e9eae34ffcd300df93b&KeyID=52462340&Signature=xdh0UiB4Gd8cO7Rm0ikDOy77K35mOJzhVcWlRCKhNzR%2FjCJzHmipjYjuOLQS%2Fpmtu1YtNsLqWohB9mVvJ%252BKLDg%253D%253D \n",
"4094 https://public.docs.openprocurement.org/get/b9a5e46eae9843e698596c84e4e9c2f8?Prefix=0053c448f0f347f4aa10b9bafa684a0e%2F0999499aa03a4e9eae34ffcd300df93b&KeyID=52462340&Signature=q8ZR2MsMnRTS3wpssdhCnYeyHT2f7euV22vRihE0juP732aNpRyrDmi6fN0uHGCYeJncIfd7fw6IugjoU%252BeECw%253D%253D \n",
"4095 https://public.docs.openprocurement.org/get/9edc72a4046e41b29478ad8569378e22?Prefix=0053c448f0f347f4aa10b9bafa684a0e%2F0999499aa03a4e9eae34ffcd300df93b&KeyID=52462340&Signature=JPbJUln%2FUyYKj%2FPcTTxbNF6lYRR%252B9zLq0JKlakU%2Fmd%2Fw%252BfSPW6lHK%2FB6bpvYqgSa%252By19SXPNqmRNLH8jjiF5Cw%253D%253D \n",
"4096 https://public.docs.openprocurement.org/get/c4a4bdd62774481c81b1b9ebe54e3fbc?Prefix=005ddbcacf7d479188afafa1e8e5491c%2F501b50e9a1e04d5bbfb566bfdb0ccf45&KeyID=52462340&Signature=UaW4E72cLmfEzNewJV0TnIc%252BcGQObH4K%252ByWIfXRHTO0ifk3YVmYIVW69GFoJlRnksN85Xlo9zA57%2F172eFpUBA%253D%253D \n",
"4097 https://public.docs.openprocurement.org/get/4ff35874115f49dba4cf0ff63ab6c086?Prefix=003e9cf28d8146d7b9a342349b4dd65e%2Fb72c3316f3bd4842842ff562b453b087&KeyID=52462340&Signature=boKa5KkcbO1bIhCaxoFtBBcwUbaxOL670GAufknwHxZcQNA%2FQeyvSVXKJMNIujvLCQxDjuWJvh6R33Y3RqYIAg%253D%253D \n",
"4098 https://public.docs.openprocurement.org/get/04e7b69181a74846a287d4368fac89de?Prefix=0066761ef7e74c50a2f32b5420f0b464%2Fa77df3618acf47719ad9834a096f93e6&KeyID=52462340&Signature=o%2FEaLZfyh7tSsUpKPzatRqJvIPHWLcl3da6iHTSqFsM7iCtI9%2FPo85NL6LByCc6DJJxKNTY6J6xWSmN6yt4gCg%253D%253D \n",
"\n",
"[2569 rows x 3 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 63
}
]
},
{
"metadata": {
"id": "_DtfPXsUwAha",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"We can use the URLs to access the documents. Using an automatic translation tool to read them, we can see that they look like tender notices.\n",
"\n",
"Let's see a sample of the documents with the `tenderNotice` type:"
]
},
{
"metadata": {
"id": "tsNiSUUmysDd",
"colab_type": "code",
"outputId": "91853a3a-6a7d-4461-e3da-284fa09bc0d0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 3009
}
},
"cell_type": "code",
"source": [
"results[results['documenttype'] == 'tenderNotice']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>documenttype</th>\n",
" <th>format</th>\n",
" <th>url</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/d124f9b248114f10818b154f8a3ccca9?Prefix=0124214d6400409abb2aa74c5feefb61%2F6a1be885223849d3b60e58863471eae6&amp;KeyID=52462340&amp;Signature=pi62%252BpURZkdaUmp2XtAWuQLWOoaC3RXyrB%2Fazpro%2FrTi8TNnsNnj0NaNe%252BOZ2G5LjVk3QbHPD1hXyqA%252BbhaCCg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/4d8c3b7b056442d796a22dafb98b09ff?Prefix=015fdd23c2c349a7bcc21c36288ed7ee%2F14f060354fc145248682097c47019e59&amp;KeyID=52462340&amp;Signature=GsujtDgUx3tx2pLf9Jfnnf65aDfbI6QiTVY0z7HIznHxxl20Fz1u%2FCZlEgrpBeaRa%2FGVpE4IyA%252Br3S2iZFmTCg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/cbcf818dd3dd4cf2b8e125418ee8e53e?Prefix=015fdd23c2c349a7bcc21c36288ed7ee%2F14f060354fc145248682097c47019e59&amp;KeyID=52462340&amp;Signature=hbdTIIeiNlDQ5k6gZSm1Z7jisB3mythKtFurGC%2F%2FstPhOivZbySjYT0dl47NDAqbzl7N2OkKaWxH8A8oeU8KBg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/6e4f7a3ed24243dba4b979861b3ba763?Prefix=01691a287a4546508819ff49e1475e5e%2F09038b2bb79a4a63b72e16ca88d2c300&amp;KeyID=52462340&amp;Signature=vlovYug0DObtDUcsK06ZRJcIXrnNHnR36zAlC5K%252BAPI7986aAqff7clIM6ipJkJvuWEpv7aU3Fz66eZ1DCRUAg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/7f6b9811ca9849eeb2adcedc8b0846ce?Prefix=0198434146934d919f13cb8aa4a595ab%2Ff8ece88e97574a70be7ec1030e16e908&amp;KeyID=52462340&amp;Signature=Wo%2FKCBMNi%2FMiavDxxtUluMVeuNX7OQIy5mYx6uMy%2FZeiHw%252BSPSAyJ2ddIjewlerZkC8r1qCx%2F785EyFa0ulsBw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/1b7403297b064083a6e30bb9ab61d4a1?Prefix=0199d9da67b34c4094918bc91a641a6c%2Fbe1a06c0a573495a804d759be4278c5c&amp;KeyID=52462340&amp;Signature=c3cv%2FSBjHdaHOP3AOHKAthqcAkamr7XVJ5jERBCbeGM26RiNkDBc%2F0w9XJfY2SGXdXFNbZc7bEXGdglMu2bmDg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/1cb83a122394458cba568000c68fe5f5?Prefix=019a57161d454170b924be5b18e64dbe%2F066a76b053d949718badee72b4c9429c&amp;KeyID=52462340&amp;Signature=T8MUjBn34fKmvfAVuYuozs7QxHZYUorezyDSiPIee8Wt1osxh93PBQXBy6tgOEjlxYbwtARcovWJJaabp0qOBQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/46d77f94b7734bf2906c9030258a04ac?Prefix=01c8370700a649628321f8be5bdc9ff7%2F878f72281e2a4dbaa222473b6197be9b&amp;KeyID=52462340&amp;Signature=TvB5BFeyyj%252BhM6Y7Q4FWtQuMpzHjVKtGUWJzOs7ZzRTOKZwxhLprCqeZeOhKRGh5plsgzf2evqbFBodfEl57Dg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/ec2e2c1eb4b84203924a2548dc7994ed?Prefix=024565070d0d405e9446bfcd7ebae870%2Fd82a3db44eb9455484b438e417310cdb&amp;KeyID=52462340&amp;Signature=doDKVff9tdz0o%2FXXCuK%252B%252ByLA9rT2YpCtaaMzADacnXGHyBPolP1AcYLnSQXQE5o3z8W7M%252BWbUTnQzknsGUrUAA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/f34a3746729a498787f7834457de018b?Prefix=0296f735e9cd40ec934e7e39cabfa75e%2F61a718efc4644129a3cf08f6ead65d81&amp;KeyID=52462340&amp;Signature=TYHV0LXMSofSjBkJL7hrWzkEi8NJp9wqWRTFkw44GcFy76mNR5iZpGrpdfktqViB3%252Bs5KqgFj0qDzZ7aaYD1Cg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/8bace1a46ce24439a26cae728b8d6099?Prefix=02f0663089a645fb8d4bf5563e6ee66e%2F078e252494754a36ac25e5c28a8efad6&amp;KeyID=52462340&amp;Signature=ipzVsbWG5dygcdW0vJ1%2FcHXUyygH%252BCssPxYUFXBUTOZ6FKOP5pSixKmS%2FF2jzzJpxxZjJlw8S8Zx2pcLFryaAQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/d1de6f454b9e47ff87ee4abaad562911?Prefix=035f630fa68d48e69489ffee9fc2bf3f%2Ffcddf68413144a17bfc0f9432da71d54&amp;KeyID=52462340&amp;Signature=LOIoleuQGJJO%2FSBoJvr%252BGswqjsIcKXxgurk6oQ2MYGC6C4mUKM5ZfOHVVy4rG8lH2qFauVUJb7YL99FsNXVtAQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/2619bccf9d88485992678424738a0e75?Prefix=0364e200ec6e4e44a58f2b16dc0d0d3a%2F636bd8c0149248ccaf69f5f5c78a80bf&amp;KeyID=52462340&amp;Signature=F7tphjq7UOnurAD8s4GjeLgoWN51Aq8qGKM4QHOz42pDZV2j0dESo6TpBNtzyRdjMgQLKH10Q3tiFLBLOkOYAw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/41bd31a6f0384784a92e514e253e86cb?Prefix=039e7c9558b845168a0fad2c2554c02a%2F478cd0b2cd994da0ab116ca1dce9c9ca&amp;KeyID=52462340&amp;Signature=sdlH5%252B8lDzRrxOEah016PoPCHOk7LBqLiTBNrhMJGQBvtsq61gpLwOHYkvqf34P%252Bih59gScrCCTUk3kY3gWkAg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/6174ced77cdd455a98a83a4de118593b?Prefix=03ada171494e4ae79cb2695b48bf92a1%2Fd231ad04d5044efcb61e8d18b38a6cda&amp;KeyID=52462340&amp;Signature=XxQn66OBxA9Ox8RyvN4dcvp8ys8FY70xePsXRW%2FAiDfbXnawkMxhr%252BxxF%252BdMJx0XhnMqRmrOYjqcGFvwyql2AQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/69748ebad95c433385d9d319a4df0f57?Prefix=03e9e82a9dd6484d8898e631838137b1%2Fcb2d0ea12375412eb79d83101770fe33&amp;KeyID=52462340&amp;Signature=fq4A7ljE%2FNNHp8pFCMNoNQq23KAszNfsV3HIAewcVXbUiGAcSYL8Ropjl%2F0JtodVoioKCohSlIGCPTj4hiShCw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/56c36dac0a8e475cbdebbf6bcb53f22b?Prefix=03e9e82a9dd6484d8898e631838137b1%2Fcb2d0ea12375412eb79d83101770fe33&amp;KeyID=52462340&amp;Signature=gamhW1EFsp3k51fPu3I63ukZPIfkfwIiqNhO9wtZbnjdg08SAeGs4%252BnU2XeUD8n1HPoBAOL0CMqOHJGpE2TEDg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/3d7c5b5a28684d69bce65b10a683ed9f?Prefix=03e9e82a9dd6484d8898e631838137b1%2Fcb2d0ea12375412eb79d83101770fe33&amp;KeyID=52462340&amp;Signature=pFC%252BGIe9os1mAprHofxE8a4j9kH8t7vonnf7T4UKAxl%252BJytPkEQYTRCYxdUdsvBVxSnSpChc47BxwOfuKydpDA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/8a703ac2f46b4c0f80e6abf33bab71ec?Prefix=0423b7e7277945739e9dd283ec3400fe%2F5a9482daaa724addba13f997d4f9f0d9&amp;KeyID=52462340&amp;Signature=p%2FMd%2Fxh%252BEUaLFfKE8P55Ue%2F6sne1tHkn2IxNe232NIh92%2FNzNF%2F%252BC4HuNxsn43i%2FKooVLRn%252BnaESK53VwggWBQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/df6833f8032d42d88152dfc8385e0c6b?Prefix=0470532ae33f419da4a90ab82f907118%2F26ed8700d76b4d0694c4f86825a7bf56&amp;KeyID=52462340&amp;Signature=1y347gPmnDuw9tycLDazWijl3UEzb61I0rVZ79TcxIsEjTIC5fvRSSlwvkvazmS24OM9gW90tB3RCYQ%252BeTLlBQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/eb91fcd3398d4527bc0ee371a146644e?Prefix=04883c30f59346db9b6a80cdeb696d37%2F2adf46e8e013479a90add78ebd97a2be&amp;KeyID=52462340&amp;Signature=kOBXd6UspTgRf9ZHobp%252B%2Fzvf348OgeOHzjs7gup9TPmApJ%2FIVpOuF2MnaHCBAirX24TxiAnm1Hfcd%2FAEQCE4Ag%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/04a936d3fa1f49c29b31331a3ae68599?Prefix=04a5cf2c85a84f01bd63c6742e1a0320%2Ff8ba460ff2e740e0a8c311d212428f9c&amp;KeyID=52462340&amp;Signature=mS3%252BMjxJhjKtzo2bEOaqEmSLyktinwsjhw2scPCBIfw5FECMw9jTt4aHatq1w%2FURfcSgl%252B8Btu11bMYEGYBfDQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/a8633f7a16884634a05853d61e03e8b6?Prefix=04c7851465b74372907c142e7e59285c%2F5fd2bfdc198a42aeb36d81596d5e016b&amp;KeyID=52462340&amp;Signature=8v%2FaHkEVsIV1D2PusFk0CPOdwcqlsaUb39RNx50UGTA7gH6XUysN6khrh%2F1Q%2Fc%252BYBgyw%2FHclUERfoGgeDaSqCw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/9c18fd999bce4643be5a56da6f0e8cba?Prefix=04d4affc77b84dbd885249a1967ab27e%2F85f6e67c755d425da40cc27e7974428e&amp;KeyID=52462340&amp;Signature=k%2FyzFOAoH1decrxHUhwwIG0WedDkhX4rWCJlIFR6yjBlopcoF2kulSuT3WFxHGXIItW965MI1kmw%2FuEIMtKADg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/2f2aa8cc690b4676b305a9ae6ca660db?Prefix=04e531a865d747338cd7f1750a7aaa88%2Ffe31b1b2b7f9477f957854828c68712c&amp;KeyID=52462340&amp;Signature=cWDO81mBSi%252BSHKmxblAKjOWOjRHRgu%2FbAV6UpL43%2F2OnguHEMqaCAT9TITgIi1l1Ia1xybacqoDsrWy6vXqkBQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/512180d166164eb38bc0f6acfc829255?Prefix=05526dd8f35b4901bd2eb50b6a372abc%2F7383b5c257a34f57bca7362a168c75e8&amp;KeyID=52462340&amp;Signature=M9lJ3yXJilYNwWwI38cuUAlVXvvolJ5snEszsKh5JXv%252BRAuFaxpqtLHuB9ILGgKq2FIbmeZtmZuqXF8rONSVBw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/2b1270ea672a4576906224dcb9ebb363?Prefix=057b3c1e71214adba088cff38f000924%2F35b122ac38354624a468c5d986bb498b&amp;KeyID=52462340&amp;Signature=2Sc9DXiHSSPrOjkOHw8b1f4s4JDMLmCKcK6z1SpzMwuFdaczhM4pFZPzi0a1kS8KpfVxbpI5Vw6oYyZHJ5G%2FCA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>89</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/fd57d0a4b0d2438e8396d00506d494b7?Prefix=05c0dab6ea094da996f9d242d38cbd20%2F7681644151c744fa84da167ad6c97507&amp;KeyID=52462340&amp;Signature=XYn8ozrcaaPf6o%2FAjWSidVq%2FFdX%252BOSsXZH0FSje2JqHlFvt2X6gYnRj9QD5iVko3NinmBJIKhJoYQjhaxWrcCw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>94</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/450bcd92c2af449f8a87970e28188dec?Prefix=05dbd5cf164b491bb5018df4a750ebf6%2F7177d28ac8b147118143edab0b9142ab&amp;KeyID=52462340&amp;Signature=ScFo%2FlbfKOS%252BrzOMV%252Bqp%2FCANbYqMtQVb3Hd1Xsox%252B4p3kSCHECbOuKWrVtYQYXqvDxL4ovywpuoLzmas503TDg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/0460ebdf07af4f8fbf3d17b09e8e69a0?Prefix=061be41837704500971785fb91cabca8%2F876122e841524c63aba4a62d79d3c55c&amp;KeyID=52462340&amp;Signature=RQ7WP9OhY7FuiuvP0NTaRXjq5zgTx6Wt6vl4MOv7Vs8I2sleqsEPEimQt8JH%252BNoWe7m%252BU4my8R1BepM3cGFxAA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3995</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/e9863be7b9074804a87562592419f212?Prefix=f8e2e5be90834742a5eb0beff5e0033c%2F8ba3f035733e488bbbd9d45598c6f06f&amp;KeyID=52462340&amp;Signature=C6fIY4pf9oskIx0X5aoSmcXu5D7XR%252BG%252BiLBDZQlA4Q%2FSea75ToVK6lcF7CrnrkfOVO79%2FAkNllotyCMNzlBZAQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4000</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/e3d72f5e39e94d33ab5f2a5cc01d59b5?Prefix=f9b4725be444412893dfeef7c1a2e3a0%2F1de0a668bcd9402ab72205f213424662&amp;KeyID=52462340&amp;Signature=%252BeqPtnZO19sRL%2F1YsC6FrTzCToA%2FCNAW69EJJo8fl6xeCcqaZJm9FpBI3MzXF9zc4lUBaEUKbWNeW%252BTIp1AiDw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4009</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/117591e5852b41beb7e3aa56f69c24ce?Prefix=fa2d57fe34c342a78c0ace8bf28a11eb%2F42ec0096edad46f5bb5af083a9ba737b&amp;KeyID=52462340&amp;Signature=2uNnU4ACI3N4%252BNvtbaOUkeasRsZ2v7WyVzMzEJt74l81uWxkAIdXdyp%2FkCnArHWNNEQxytICNExXe%252B9%252BYM4FDQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4010</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/d07e6b6bf2b148cf8dfaabb844a165af?Prefix=fa38adc78b284e3e8f1272dd47aa6b52%2Fa74b3dd994984e09a0ebf8f944982f89&amp;KeyID=52462340&amp;Signature=FkEhAwDqFI18ssOhqkiHGMsbiIz8KEFNY26Ql1iEOInaqpkkq3MUKQnFjFSzCuXrxrF7%2FwzlDVA5bwPxWN7uDg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4012</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/046eaff6ffa549be8a08247e9bea2268?Prefix=fa6a1f4228474042b739e282d0e1b660%2F51116b0ced5b4c49ad260f441025152b&amp;KeyID=52462340&amp;Signature=Pfo%2F6l6VNAEw3YfqsTXFRMskAzunHQ4dHoaAkZAPXhkBWfMmSVroZHcm22JgOG0Uyqg3zvLKyP9poBeB%2F5LxAQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4016</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/74c0f32ce5be437dab98da7539a96069?Prefix=fa84a1bbc21744cc9d72a8fa48e11593%2Fcff87a3aeb1f49a7b9695d96c8c38a5f&amp;KeyID=52462340&amp;Signature=hYaLDJ%252BERJhWi2ORv1JxiyBBmlYpZWmDOsKXUHz0U8oJ%252BzQ2atVFx6r8kIZyWSUkaCTYOEDnk6yc90j0%2FE75DA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4018</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/911841c9d2fc44049553ccfc2c4f045c?Prefix=faac8eca016747418d2160350335e6ee%2F852e5625dd2b41239276ecc976f85b5a&amp;KeyID=52462340&amp;Signature=VX97RTNvl7tlogG%252BVodDdGvofCIba9hi8T9n8YSq%2FaRL0xGQz0MJNjml7zO%252B701AUwUnuaUpE7%2FSWRiEJCATCQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4019</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/219900ffcf844615adb88b357c0493c4?Prefix=facb3d153ec74b379507d2d7e016621b%2F2d6478d5b22d494590fb9a67428a1554&amp;KeyID=52462340&amp;Signature=kDYNuQhT2OTOmA%2FfEcskgadsqHZzjIYwrv5KgjYsluzzzgS56qEfYpqLW8XGxQ0dEWZPqesv5QM591aOIqhzAA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4021</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/d26776a7aa41490cae10c54ceb3a6211?Prefix=fae4fb0e897f475d88cf1a0c49b1b256%2Fae047bb9fcc84740af39cdc2c445b36e&amp;KeyID=52462340&amp;Signature=Wtlhu7A7rpdyWHtfIPBOc0TMKThHluUYFRtD1MDTwi9B2pAIVnRqw29yLjKVzftbinXL%2FLMnB5MzNd2U%252BFAOCg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4022</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/640c743436654dee9e06dfb404b8a322?Prefix=faf23e272adf4ad3a9c2cbf27fd3436d%2Faf4d6c9ba78e424fa0a35d0591757e9b&amp;KeyID=52462340&amp;Signature=PanbWuquVPR26HaBbHbwMKhhouefFRIvjDRSuBMdBoyArGv5tiZrb2vOJw4K%252BkQhYP2FdlwiL3jerJuoI2m9BA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4023</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/6a2c3c21c42c481b8c22ba5a2804c451?Prefix=fb270d567ab54e84af37c6a9a8117e89%2Fdb4b94615b6e49a6960a6fae785cac32&amp;KeyID=52462340&amp;Signature=cfr2irwiSiMdXIEGjfeR8YKWMz%252BFSdBbTwZCCUjrNyzhoAB9JKkADU5LLCg7yllMhnVd9%252BC6Zp8hqaN8t4ZxDg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4024</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/98a60bb8e5d141e284873fd4e7dc27c7?Prefix=fb27131703d8413ab9ffeb1585b80dd0%2F2243c80d732746f488462022ba1dbe19&amp;KeyID=52462340&amp;Signature=j8kZe9LxmUptrml3utf3SbzntmhAW3kKM5C%252BwjvSMgB%2F9bWgectL5nhNFwCieV%2F7Ojp%2Fr4xbx5wfm9qj4Ux3AQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4026</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/5732656e8b1246449f64c201cc72e7b0?Prefix=fb3ed253ecd14f72837d7d57045fd68f%2F802ac316671b477896f047be2cd02217&amp;KeyID=52462340&amp;Signature=iBA8WdUnaFcIaLEcAlcjLA%252BGHDS%252B9J6s%2Fhh%2Ft5kBE%252B9tgdfmc%252BsmNXPQEwTDE133Vyomuqq5xU76HlEDsO%252BmDw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4027</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/a65f8df14ca44e85be1f02b96d105673?Prefix=fb5c4f3028004f1799aac8078e2d8afe%2F35afb3f9157b4b72b7ade890a923980a&amp;KeyID=52462340&amp;Signature=RLODZnKXDmEpKfBkzK2pv23w5%2F1pzGScG82UrVaOIMv2adlO2g74Mz0X%2F06kG9aiS0cgSbwh%2Ff7CtAyRklY1AA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4028</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/b6e6cfb9de374e908fef57ba63cce744?Prefix=fb5c964b2dc943e9a20d65e822390bce%2F5b8baf9ad49e436f886299075affff93&amp;KeyID=52462340&amp;Signature=%2FfIhrQGQquqxiuCWvdzawHGd0Yxx8v7PAfQLu4987xk%252BDXnB%252BjZG%252Bnj5OB%252B1KKXEFRyWDhQyXknw%2Fvwtg13JBw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4044</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/fca8d48e6038420d8e8d86a08700a982?Prefix=fcabb4bc8d874628ba2fa010975c6ce0%2F078ba1dd78234616bea66f1c8527638a&amp;KeyID=52462340&amp;Signature=WIRWzY3OL01gO%252BG8iUINkRqw%2FjVjFLpwAEP6TmGQ1PHmAg%2Fp%252BcpqqkvyiivkTplmEu8BrRn1wGfs72yuWmhBCg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4050</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/8b193a65ae4b450f9a37fc0adaa8484d?Prefix=fcf2d54f7088466aa589ed18c75ca038%2F097251b048b74ababf5a49adf50579f3&amp;KeyID=52462340&amp;Signature=daGIlSip2sleYk1nAFRyaBZOMx8KPxeFI91iHc9a5DsbZjC13AldMNAaNeZwvOrYsiSj%2Fx7vNq4sKRl4InSEBg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4054</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/3023dbdfdd0143fdbf13083de56824d1?Prefix=fd2e110dda4c46aa8f5c30c469c9d3e7%2Ff2112c94dcde457abf1eda599355258f&amp;KeyID=52462340&amp;Signature=FDpuKVHnbiug4swYBuNCDY0yVh9zOC%2FKS%2FROytjoIWcoK6imlbEiUQdZqP14X3tGl5Eld2A2oaAtipQnwr9TBA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4056</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/6e57e143651444d8973af2f7b7d0f34b?Prefix=fd40070c7b9747ca8764274445e44d11%2F09daee594e574ba58dcfae844213b3e8&amp;KeyID=52462340&amp;Signature=XXpUgGUCOmWR764XXPIsgAvFpwOdQVAKtWZZhvvrYhzngwiu7mTcIl8OROdjgnT6LiqwWgWd2OutPb0K9DgGDg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4058</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/6d6e8d2276a1496b95a4b6b12721e2e3?Prefix=fd523607b58541f78e02584bdf3a28b1%2F9bc8f97aa4764682b772fd2b5b64786f&amp;KeyID=52462340&amp;Signature=ovD6LNSG2oydoIcbqzafkDmg%252Bo6J68dzCDvUc%252B5%252BxNWhf4hTffdbu6VvwIQYBw%2FBbP%252BcVui%252BLwTQr9o1IFotDQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4060</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/3b72b97ff3da44719dd9a9c7466177e1?Prefix=fd891694009a4706a13dea4067f07f75%2F12feff06b76e447a928b5a1eddb65e1d&amp;KeyID=52462340&amp;Signature=RirSceGNLCuU1Rj6dfDAKg7kW%2FaD02GlVy649G8w1QUAuDPx9sXIhug7zKaiIFrAdP4F4ZO6E2PDlpZTKKPhBg%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4063</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/a5188c01d5f34d3c89e3977520f82fa1?Prefix=fdb3aa96b5f744dbb0dfa36cb83d05a7%2F7268fb12a7764c6781e493e1d4908231&amp;KeyID=52462340&amp;Signature=Y8gPgIx94zAR78vs4shisfgnYBHwWS3JYRwIuK1MaK4Ab3X3u4fLTIGwkUsodeLWoX7kzH4Jz56hTIx7jv0FBQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4072</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/1ebba4457e1643a0acfef0cbdce7d5e1?Prefix=fe44affa494d4f27b49cd56f6dda33ab%2F7b8cd382ed77427884c904bac2ab8993&amp;KeyID=52462340&amp;Signature=dBW0ZOx7cYQ37VvTQlo8kSlPt1d%252BCpkeZ%2FNkmfWZ%2FrfUCcyvuM3MOFNW8j3zSTJosQE30nW5rHHOWwqRZBbSCA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4078</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/188d0fea48a643cebfdb8fef79cc540f?Prefix=fe8b33ef1805433581cc260d320cae21%2F0da1dac74b144ea29dfe04ede4dade88&amp;KeyID=52462340&amp;Signature=j3NcW8rUKr7USHAsBeeElFUK4O0nod%252B%2F%252BfidUu3aAm33y%2F7zmyAeJ8859oeJIuxbOUP5GjyUYoHtQ8l70ADpCw%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4079</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/a6d6d28d480f4b6c8402ac405d08f09a?Prefix=fe9f3599b85445adb89c5e64ec894785%2F7e28987101e34bdea669dbc8daa84464&amp;KeyID=52462340&amp;Signature=IkZHpdQUdVE0b1F44St3%252B1G5IiNNii9oSTsck6Xp%252BZDpy%252BQCecJUPdEQqO68hEFhuieU5tUWSB%252BIz70mBBhMDA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4086</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/a9c7ecc01ebd4164aa0b94e872e47387?Prefix=ff17da1507d645b0a2954d146248bc39%2F5d6b3fbcce0e465a9403e79e6b588aff&amp;KeyID=52462340&amp;Signature=kMNQaZ%2F9%252Bmqzsiq08zfmd3MSrohiu0fHtHRTdJyBFr5Yce6%252B58QbQ%2FEPiqsOi%2FZDF8ikCDyTd6Fl9LxU5hXyCA%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4087</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/c481c329c9c04d9a970d3793037318d3?Prefix=ff2b608938874699b83663f7ec215ecb%2Ff49886372f874b6a9117443685094868&amp;KeyID=52462340&amp;Signature=o0W%2FGP%252BDGK4wy2%252B5DVMLrBT6SrBT9Ws2XF98nV7BGY0iRSmckwxMO51eflbwPy4tn8AxCNNbLLMECEkg%252Bwm2Ag%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4089</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/f249d216627e423fb4640033470050a5?Prefix=ff530b09431e40f1b51399d8396378ba%2F711c93962c884351a81e4793bc1146b2&amp;KeyID=52462340&amp;Signature=ue4P2VAsWmjSlCGE%252B%2F79bjPz70nKqAwLs00rKZUeGLqgeRI%2F3Tw7Fuejnxh4b%252B1OZa9AMmfkLQYlX1r48C5iCQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4090</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/4b5be3f3d7814eb1b69c8194bf031c65?Prefix=ff58522f9c3349389d7549b99dc08c6b%2Fcc753c3cde8141ad90489f0fd8e07d18&amp;KeyID=52462340&amp;Signature=TEU2JMRgXliocAix2YHHTOOpAI8PFxAYHJgfd48Ng6i6vlvCnNdEh3ZV6EbikA0WfqjCf%2FyRI9R7EhW4aW1WAQ%253D%253D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4092</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>https://public.docs.openprocurement.org/get/b128bed26db74a97b0eb94a36f6d3e79?Prefix=ff7e59e52ef64f5799c1ad2ca71aa1cc%2F8e67444ff5cd4f66a3a81fbfe9a968d7&amp;KeyID=52462340&amp;Signature=0eofesAX9rQWjJLgQ8tQ4aRMKWRdkUPyPWKvhTKkqXL8zeeSuFfIF%252B2km7hKszfgmSECs0ZBgeyMEfW8GXmbAw%253D%253D</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1530 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" documenttype format \\\n",
"15 tenderNotice text/plain \n",
"18 tenderNotice text/plain \n",
"19 tenderNotice text/plain \n",
"20 tenderNotice text/plain \n",
"21 tenderNotice text/plain \n",
"22 tenderNotice text/plain \n",
"23 tenderNotice text/plain \n",
"24 tenderNotice text/plain \n",
"32 tenderNotice text/plain \n",
"36 tenderNotice text/plain \n",
"43 tenderNotice text/plain \n",
"49 tenderNotice text/plain \n",
"50 tenderNotice text/plain \n",
"51 tenderNotice text/plain \n",
"52 tenderNotice text/plain \n",
"56 tenderNotice text/plain \n",
"57 tenderNotice text/plain \n",
"58 tenderNotice text/plain \n",
"62 tenderNotice text/plain \n",
"66 tenderNotice text/plain \n",
"69 tenderNotice text/plain \n",
"70 tenderNotice text/plain \n",
"72 tenderNotice text/plain \n",
"74 tenderNotice text/plain \n",
"75 tenderNotice text/plain \n",
"80 tenderNotice text/plain \n",
"86 tenderNotice text/plain \n",
"89 tenderNotice text/plain \n",
"94 tenderNotice text/plain \n",
"95 tenderNotice text/plain \n",
"... ... ... \n",
"3995 tenderNotice text/plain \n",
"4000 tenderNotice text/plain \n",
"4009 tenderNotice text/plain \n",
"4010 tenderNotice text/plain \n",
"4012 tenderNotice text/plain \n",
"4016 tenderNotice text/plain \n",
"4018 tenderNotice text/plain \n",
"4019 tenderNotice text/plain \n",
"4021 tenderNotice text/plain \n",
"4022 tenderNotice text/plain \n",
"4023 tenderNotice text/plain \n",
"4024 tenderNotice text/plain \n",
"4026 tenderNotice text/plain \n",
"4027 tenderNotice text/plain \n",
"4028 tenderNotice text/plain \n",
"4044 tenderNotice text/plain \n",
"4050 tenderNotice text/plain \n",
"4054 tenderNotice text/plain \n",
"4056 tenderNotice text/plain \n",
"4058 tenderNotice text/plain \n",
"4060 tenderNotice text/plain \n",
"4063 tenderNotice text/plain \n",
"4072 tenderNotice text/plain \n",
"4078 tenderNotice text/plain \n",
"4079 tenderNotice text/plain \n",
"4086 tenderNotice text/plain \n",
"4087 tenderNotice text/plain \n",
"4089 tenderNotice text/plain \n",
"4090 tenderNotice text/plain \n",
"4092 tenderNotice text/plain \n",
"\n",
" url \n",
"15 https://public.docs.openprocurement.org/get/d124f9b248114f10818b154f8a3ccca9?Prefix=0124214d6400409abb2aa74c5feefb61%2F6a1be885223849d3b60e58863471eae6&KeyID=52462340&Signature=pi62%252BpURZkdaUmp2XtAWuQLWOoaC3RXyrB%2Fazpro%2FrTi8TNnsNnj0NaNe%252BOZ2G5LjVk3QbHPD1hXyqA%252BbhaCCg%253D%253D \n",
"18 https://public.docs.openprocurement.org/get/4d8c3b7b056442d796a22dafb98b09ff?Prefix=015fdd23c2c349a7bcc21c36288ed7ee%2F14f060354fc145248682097c47019e59&KeyID=52462340&Signature=GsujtDgUx3tx2pLf9Jfnnf65aDfbI6QiTVY0z7HIznHxxl20Fz1u%2FCZlEgrpBeaRa%2FGVpE4IyA%252Br3S2iZFmTCg%253D%253D \n",
"19 https://public.docs.openprocurement.org/get/cbcf818dd3dd4cf2b8e125418ee8e53e?Prefix=015fdd23c2c349a7bcc21c36288ed7ee%2F14f060354fc145248682097c47019e59&KeyID=52462340&Signature=hbdTIIeiNlDQ5k6gZSm1Z7jisB3mythKtFurGC%2F%2FstPhOivZbySjYT0dl47NDAqbzl7N2OkKaWxH8A8oeU8KBg%253D%253D \n",
"20 https://public.docs.openprocurement.org/get/6e4f7a3ed24243dba4b979861b3ba763?Prefix=01691a287a4546508819ff49e1475e5e%2F09038b2bb79a4a63b72e16ca88d2c300&KeyID=52462340&Signature=vlovYug0DObtDUcsK06ZRJcIXrnNHnR36zAlC5K%252BAPI7986aAqff7clIM6ipJkJvuWEpv7aU3Fz66eZ1DCRUAg%253D%253D \n",
"21 https://public.docs.openprocurement.org/get/7f6b9811ca9849eeb2adcedc8b0846ce?Prefix=0198434146934d919f13cb8aa4a595ab%2Ff8ece88e97574a70be7ec1030e16e908&KeyID=52462340&Signature=Wo%2FKCBMNi%2FMiavDxxtUluMVeuNX7OQIy5mYx6uMy%2FZeiHw%252BSPSAyJ2ddIjewlerZkC8r1qCx%2F785EyFa0ulsBw%253D%253D \n",
"22 https://public.docs.openprocurement.org/get/1b7403297b064083a6e30bb9ab61d4a1?Prefix=0199d9da67b34c4094918bc91a641a6c%2Fbe1a06c0a573495a804d759be4278c5c&KeyID=52462340&Signature=c3cv%2FSBjHdaHOP3AOHKAthqcAkamr7XVJ5jERBCbeGM26RiNkDBc%2F0w9XJfY2SGXdXFNbZc7bEXGdglMu2bmDg%253D%253D \n",
"23 https://public.docs.openprocurement.org/get/1cb83a122394458cba568000c68fe5f5?Prefix=019a57161d454170b924be5b18e64dbe%2F066a76b053d949718badee72b4c9429c&KeyID=52462340&Signature=T8MUjBn34fKmvfAVuYuozs7QxHZYUorezyDSiPIee8Wt1osxh93PBQXBy6tgOEjlxYbwtARcovWJJaabp0qOBQ%253D%253D \n",
"24 https://public.docs.openprocurement.org/get/46d77f94b7734bf2906c9030258a04ac?Prefix=01c8370700a649628321f8be5bdc9ff7%2F878f72281e2a4dbaa222473b6197be9b&KeyID=52462340&Signature=TvB5BFeyyj%252BhM6Y7Q4FWtQuMpzHjVKtGUWJzOs7ZzRTOKZwxhLprCqeZeOhKRGh5plsgzf2evqbFBodfEl57Dg%253D%253D \n",
"32 https://public.docs.openprocurement.org/get/ec2e2c1eb4b84203924a2548dc7994ed?Prefix=024565070d0d405e9446bfcd7ebae870%2Fd82a3db44eb9455484b438e417310cdb&KeyID=52462340&Signature=doDKVff9tdz0o%2FXXCuK%252B%252ByLA9rT2YpCtaaMzADacnXGHyBPolP1AcYLnSQXQE5o3z8W7M%252BWbUTnQzknsGUrUAA%253D%253D \n",
"36 https://public.docs.openprocurement.org/get/f34a3746729a498787f7834457de018b?Prefix=0296f735e9cd40ec934e7e39cabfa75e%2F61a718efc4644129a3cf08f6ead65d81&KeyID=52462340&Signature=TYHV0LXMSofSjBkJL7hrWzkEi8NJp9wqWRTFkw44GcFy76mNR5iZpGrpdfktqViB3%252Bs5KqgFj0qDzZ7aaYD1Cg%253D%253D \n",
"43 https://public.docs.openprocurement.org/get/8bace1a46ce24439a26cae728b8d6099?Prefix=02f0663089a645fb8d4bf5563e6ee66e%2F078e252494754a36ac25e5c28a8efad6&KeyID=52462340&Signature=ipzVsbWG5dygcdW0vJ1%2FcHXUyygH%252BCssPxYUFXBUTOZ6FKOP5pSixKmS%2FF2jzzJpxxZjJlw8S8Zx2pcLFryaAQ%253D%253D \n",
"49 https://public.docs.openprocurement.org/get/d1de6f454b9e47ff87ee4abaad562911?Prefix=035f630fa68d48e69489ffee9fc2bf3f%2Ffcddf68413144a17bfc0f9432da71d54&KeyID=52462340&Signature=LOIoleuQGJJO%2FSBoJvr%252BGswqjsIcKXxgurk6oQ2MYGC6C4mUKM5ZfOHVVy4rG8lH2qFauVUJb7YL99FsNXVtAQ%253D%253D \n",
"50 https://public.docs.openprocurement.org/get/2619bccf9d88485992678424738a0e75?Prefix=0364e200ec6e4e44a58f2b16dc0d0d3a%2F636bd8c0149248ccaf69f5f5c78a80bf&KeyID=52462340&Signature=F7tphjq7UOnurAD8s4GjeLgoWN51Aq8qGKM4QHOz42pDZV2j0dESo6TpBNtzyRdjMgQLKH10Q3tiFLBLOkOYAw%253D%253D \n",
"51 https://public.docs.openprocurement.org/get/41bd31a6f0384784a92e514e253e86cb?Prefix=039e7c9558b845168a0fad2c2554c02a%2F478cd0b2cd994da0ab116ca1dce9c9ca&KeyID=52462340&Signature=sdlH5%252B8lDzRrxOEah016PoPCHOk7LBqLiTBNrhMJGQBvtsq61gpLwOHYkvqf34P%252Bih59gScrCCTUk3kY3gWkAg%253D%253D \n",
"52 https://public.docs.openprocurement.org/get/6174ced77cdd455a98a83a4de118593b?Prefix=03ada171494e4ae79cb2695b48bf92a1%2Fd231ad04d5044efcb61e8d18b38a6cda&KeyID=52462340&Signature=XxQn66OBxA9Ox8RyvN4dcvp8ys8FY70xePsXRW%2FAiDfbXnawkMxhr%252BxxF%252BdMJx0XhnMqRmrOYjqcGFvwyql2AQ%253D%253D \n",
"56 https://public.docs.openprocurement.org/get/69748ebad95c433385d9d319a4df0f57?Prefix=03e9e82a9dd6484d8898e631838137b1%2Fcb2d0ea12375412eb79d83101770fe33&KeyID=52462340&Signature=fq4A7ljE%2FNNHp8pFCMNoNQq23KAszNfsV3HIAewcVXbUiGAcSYL8Ropjl%2F0JtodVoioKCohSlIGCPTj4hiShCw%253D%253D \n",
"57 https://public.docs.openprocurement.org/get/56c36dac0a8e475cbdebbf6bcb53f22b?Prefix=03e9e82a9dd6484d8898e631838137b1%2Fcb2d0ea12375412eb79d83101770fe33&KeyID=52462340&Signature=gamhW1EFsp3k51fPu3I63ukZPIfkfwIiqNhO9wtZbnjdg08SAeGs4%252BnU2XeUD8n1HPoBAOL0CMqOHJGpE2TEDg%253D%253D \n",
"58 https://public.docs.openprocurement.org/get/3d7c5b5a28684d69bce65b10a683ed9f?Prefix=03e9e82a9dd6484d8898e631838137b1%2Fcb2d0ea12375412eb79d83101770fe33&KeyID=52462340&Signature=pFC%252BGIe9os1mAprHofxE8a4j9kH8t7vonnf7T4UKAxl%252BJytPkEQYTRCYxdUdsvBVxSnSpChc47BxwOfuKydpDA%253D%253D \n",
"62 https://public.docs.openprocurement.org/get/8a703ac2f46b4c0f80e6abf33bab71ec?Prefix=0423b7e7277945739e9dd283ec3400fe%2F5a9482daaa724addba13f997d4f9f0d9&KeyID=52462340&Signature=p%2FMd%2Fxh%252BEUaLFfKE8P55Ue%2F6sne1tHkn2IxNe232NIh92%2FNzNF%2F%252BC4HuNxsn43i%2FKooVLRn%252BnaESK53VwggWBQ%253D%253D \n",
"66 https://public.docs.openprocurement.org/get/df6833f8032d42d88152dfc8385e0c6b?Prefix=0470532ae33f419da4a90ab82f907118%2F26ed8700d76b4d0694c4f86825a7bf56&KeyID=52462340&Signature=1y347gPmnDuw9tycLDazWijl3UEzb61I0rVZ79TcxIsEjTIC5fvRSSlwvkvazmS24OM9gW90tB3RCYQ%252BeTLlBQ%253D%253D \n",
"69 https://public.docs.openprocurement.org/get/eb91fcd3398d4527bc0ee371a146644e?Prefix=04883c30f59346db9b6a80cdeb696d37%2F2adf46e8e013479a90add78ebd97a2be&KeyID=52462340&Signature=kOBXd6UspTgRf9ZHobp%252B%2Fzvf348OgeOHzjs7gup9TPmApJ%2FIVpOuF2MnaHCBAirX24TxiAnm1Hfcd%2FAEQCE4Ag%253D%253D \n",
"70 https://public.docs.openprocurement.org/get/04a936d3fa1f49c29b31331a3ae68599?Prefix=04a5cf2c85a84f01bd63c6742e1a0320%2Ff8ba460ff2e740e0a8c311d212428f9c&KeyID=52462340&Signature=mS3%252BMjxJhjKtzo2bEOaqEmSLyktinwsjhw2scPCBIfw5FECMw9jTt4aHatq1w%2FURfcSgl%252B8Btu11bMYEGYBfDQ%253D%253D \n",
"72 https://public.docs.openprocurement.org/get/a8633f7a16884634a05853d61e03e8b6?Prefix=04c7851465b74372907c142e7e59285c%2F5fd2bfdc198a42aeb36d81596d5e016b&KeyID=52462340&Signature=8v%2FaHkEVsIV1D2PusFk0CPOdwcqlsaUb39RNx50UGTA7gH6XUysN6khrh%2F1Q%2Fc%252BYBgyw%2FHclUERfoGgeDaSqCw%253D%253D \n",
"74 https://public.docs.openprocurement.org/get/9c18fd999bce4643be5a56da6f0e8cba?Prefix=04d4affc77b84dbd885249a1967ab27e%2F85f6e67c755d425da40cc27e7974428e&KeyID=52462340&Signature=k%2FyzFOAoH1decrxHUhwwIG0WedDkhX4rWCJlIFR6yjBlopcoF2kulSuT3WFxHGXIItW965MI1kmw%2FuEIMtKADg%253D%253D \n",
"75 https://public.docs.openprocurement.org/get/2f2aa8cc690b4676b305a9ae6ca660db?Prefix=04e531a865d747338cd7f1750a7aaa88%2Ffe31b1b2b7f9477f957854828c68712c&KeyID=52462340&Signature=cWDO81mBSi%252BSHKmxblAKjOWOjRHRgu%2FbAV6UpL43%2F2OnguHEMqaCAT9TITgIi1l1Ia1xybacqoDsrWy6vXqkBQ%253D%253D \n",
"80 https://public.docs.openprocurement.org/get/512180d166164eb38bc0f6acfc829255?Prefix=05526dd8f35b4901bd2eb50b6a372abc%2F7383b5c257a34f57bca7362a168c75e8&KeyID=52462340&Signature=M9lJ3yXJilYNwWwI38cuUAlVXvvolJ5snEszsKh5JXv%252BRAuFaxpqtLHuB9ILGgKq2FIbmeZtmZuqXF8rONSVBw%253D%253D \n",
"86 https://public.docs.openprocurement.org/get/2b1270ea672a4576906224dcb9ebb363?Prefix=057b3c1e71214adba088cff38f000924%2F35b122ac38354624a468c5d986bb498b&KeyID=52462340&Signature=2Sc9DXiHSSPrOjkOHw8b1f4s4JDMLmCKcK6z1SpzMwuFdaczhM4pFZPzi0a1kS8KpfVxbpI5Vw6oYyZHJ5G%2FCA%253D%253D \n",
"89 https://public.docs.openprocurement.org/get/fd57d0a4b0d2438e8396d00506d494b7?Prefix=05c0dab6ea094da996f9d242d38cbd20%2F7681644151c744fa84da167ad6c97507&KeyID=52462340&Signature=XYn8ozrcaaPf6o%2FAjWSidVq%2FFdX%252BOSsXZH0FSje2JqHlFvt2X6gYnRj9QD5iVko3NinmBJIKhJoYQjhaxWrcCw%253D%253D \n",
"94 https://public.docs.openprocurement.org/get/450bcd92c2af449f8a87970e28188dec?Prefix=05dbd5cf164b491bb5018df4a750ebf6%2F7177d28ac8b147118143edab0b9142ab&KeyID=52462340&Signature=ScFo%2FlbfKOS%252BrzOMV%252Bqp%2FCANbYqMtQVb3Hd1Xsox%252B4p3kSCHECbOuKWrVtYQYXqvDxL4ovywpuoLzmas503TDg%253D%253D \n",
"95 https://public.docs.openprocurement.org/get/0460ebdf07af4f8fbf3d17b09e8e69a0?Prefix=061be41837704500971785fb91cabca8%2F876122e841524c63aba4a62d79d3c55c&KeyID=52462340&Signature=RQ7WP9OhY7FuiuvP0NTaRXjq5zgTx6Wt6vl4MOv7Vs8I2sleqsEPEimQt8JH%252BNoWe7m%252BU4my8R1BepM3cGFxAA%253D%253D \n",
"... ... \n",
"3995 https://public.docs.openprocurement.org/get/e9863be7b9074804a87562592419f212?Prefix=f8e2e5be90834742a5eb0beff5e0033c%2F8ba3f035733e488bbbd9d45598c6f06f&KeyID=52462340&Signature=C6fIY4pf9oskIx0X5aoSmcXu5D7XR%252BG%252BiLBDZQlA4Q%2FSea75ToVK6lcF7CrnrkfOVO79%2FAkNllotyCMNzlBZAQ%253D%253D \n",
"4000 https://public.docs.openprocurement.org/get/e3d72f5e39e94d33ab5f2a5cc01d59b5?Prefix=f9b4725be444412893dfeef7c1a2e3a0%2F1de0a668bcd9402ab72205f213424662&KeyID=52462340&Signature=%252BeqPtnZO19sRL%2F1YsC6FrTzCToA%2FCNAW69EJJo8fl6xeCcqaZJm9FpBI3MzXF9zc4lUBaEUKbWNeW%252BTIp1AiDw%253D%253D \n",
"4009 https://public.docs.openprocurement.org/get/117591e5852b41beb7e3aa56f69c24ce?Prefix=fa2d57fe34c342a78c0ace8bf28a11eb%2F42ec0096edad46f5bb5af083a9ba737b&KeyID=52462340&Signature=2uNnU4ACI3N4%252BNvtbaOUkeasRsZ2v7WyVzMzEJt74l81uWxkAIdXdyp%2FkCnArHWNNEQxytICNExXe%252B9%252BYM4FDQ%253D%253D \n",
"4010 https://public.docs.openprocurement.org/get/d07e6b6bf2b148cf8dfaabb844a165af?Prefix=fa38adc78b284e3e8f1272dd47aa6b52%2Fa74b3dd994984e09a0ebf8f944982f89&KeyID=52462340&Signature=FkEhAwDqFI18ssOhqkiHGMsbiIz8KEFNY26Ql1iEOInaqpkkq3MUKQnFjFSzCuXrxrF7%2FwzlDVA5bwPxWN7uDg%253D%253D \n",
"4012 https://public.docs.openprocurement.org/get/046eaff6ffa549be8a08247e9bea2268?Prefix=fa6a1f4228474042b739e282d0e1b660%2F51116b0ced5b4c49ad260f441025152b&KeyID=52462340&Signature=Pfo%2F6l6VNAEw3YfqsTXFRMskAzunHQ4dHoaAkZAPXhkBWfMmSVroZHcm22JgOG0Uyqg3zvLKyP9poBeB%2F5LxAQ%253D%253D \n",
"4016 https://public.docs.openprocurement.org/get/74c0f32ce5be437dab98da7539a96069?Prefix=fa84a1bbc21744cc9d72a8fa48e11593%2Fcff87a3aeb1f49a7b9695d96c8c38a5f&KeyID=52462340&Signature=hYaLDJ%252BERJhWi2ORv1JxiyBBmlYpZWmDOsKXUHz0U8oJ%252BzQ2atVFx6r8kIZyWSUkaCTYOEDnk6yc90j0%2FE75DA%253D%253D \n",
"4018 https://public.docs.openprocurement.org/get/911841c9d2fc44049553ccfc2c4f045c?Prefix=faac8eca016747418d2160350335e6ee%2F852e5625dd2b41239276ecc976f85b5a&KeyID=52462340&Signature=VX97RTNvl7tlogG%252BVodDdGvofCIba9hi8T9n8YSq%2FaRL0xGQz0MJNjml7zO%252B701AUwUnuaUpE7%2FSWRiEJCATCQ%253D%253D \n",
"4019 https://public.docs.openprocurement.org/get/219900ffcf844615adb88b357c0493c4?Prefix=facb3d153ec74b379507d2d7e016621b%2F2d6478d5b22d494590fb9a67428a1554&KeyID=52462340&Signature=kDYNuQhT2OTOmA%2FfEcskgadsqHZzjIYwrv5KgjYsluzzzgS56qEfYpqLW8XGxQ0dEWZPqesv5QM591aOIqhzAA%253D%253D \n",
"4021 https://public.docs.openprocurement.org/get/d26776a7aa41490cae10c54ceb3a6211?Prefix=fae4fb0e897f475d88cf1a0c49b1b256%2Fae047bb9fcc84740af39cdc2c445b36e&KeyID=52462340&Signature=Wtlhu7A7rpdyWHtfIPBOc0TMKThHluUYFRtD1MDTwi9B2pAIVnRqw29yLjKVzftbinXL%2FLMnB5MzNd2U%252BFAOCg%253D%253D \n",
"4022 https://public.docs.openprocurement.org/get/640c743436654dee9e06dfb404b8a322?Prefix=faf23e272adf4ad3a9c2cbf27fd3436d%2Faf4d6c9ba78e424fa0a35d0591757e9b&KeyID=52462340&Signature=PanbWuquVPR26HaBbHbwMKhhouefFRIvjDRSuBMdBoyArGv5tiZrb2vOJw4K%252BkQhYP2FdlwiL3jerJuoI2m9BA%253D%253D \n",
"4023 https://public.docs.openprocurement.org/get/6a2c3c21c42c481b8c22ba5a2804c451?Prefix=fb270d567ab54e84af37c6a9a8117e89%2Fdb4b94615b6e49a6960a6fae785cac32&KeyID=52462340&Signature=cfr2irwiSiMdXIEGjfeR8YKWMz%252BFSdBbTwZCCUjrNyzhoAB9JKkADU5LLCg7yllMhnVd9%252BC6Zp8hqaN8t4ZxDg%253D%253D \n",
"4024 https://public.docs.openprocurement.org/get/98a60bb8e5d141e284873fd4e7dc27c7?Prefix=fb27131703d8413ab9ffeb1585b80dd0%2F2243c80d732746f488462022ba1dbe19&KeyID=52462340&Signature=j8kZe9LxmUptrml3utf3SbzntmhAW3kKM5C%252BwjvSMgB%2F9bWgectL5nhNFwCieV%2F7Ojp%2Fr4xbx5wfm9qj4Ux3AQ%253D%253D \n",
"4026 https://public.docs.openprocurement.org/get/5732656e8b1246449f64c201cc72e7b0?Prefix=fb3ed253ecd14f72837d7d57045fd68f%2F802ac316671b477896f047be2cd02217&KeyID=52462340&Signature=iBA8WdUnaFcIaLEcAlcjLA%252BGHDS%252B9J6s%2Fhh%2Ft5kBE%252B9tgdfmc%252BsmNXPQEwTDE133Vyomuqq5xU76HlEDsO%252BmDw%253D%253D \n",
"4027 https://public.docs.openprocurement.org/get/a65f8df14ca44e85be1f02b96d105673?Prefix=fb5c4f3028004f1799aac8078e2d8afe%2F35afb3f9157b4b72b7ade890a923980a&KeyID=52462340&Signature=RLODZnKXDmEpKfBkzK2pv23w5%2F1pzGScG82UrVaOIMv2adlO2g74Mz0X%2F06kG9aiS0cgSbwh%2Ff7CtAyRklY1AA%253D%253D \n",
"4028 https://public.docs.openprocurement.org/get/b6e6cfb9de374e908fef57ba63cce744?Prefix=fb5c964b2dc943e9a20d65e822390bce%2F5b8baf9ad49e436f886299075affff93&KeyID=52462340&Signature=%2FfIhrQGQquqxiuCWvdzawHGd0Yxx8v7PAfQLu4987xk%252BDXnB%252BjZG%252Bnj5OB%252B1KKXEFRyWDhQyXknw%2Fvwtg13JBw%253D%253D \n",
"4044 https://public.docs.openprocurement.org/get/fca8d48e6038420d8e8d86a08700a982?Prefix=fcabb4bc8d874628ba2fa010975c6ce0%2F078ba1dd78234616bea66f1c8527638a&KeyID=52462340&Signature=WIRWzY3OL01gO%252BG8iUINkRqw%2FjVjFLpwAEP6TmGQ1PHmAg%2Fp%252BcpqqkvyiivkTplmEu8BrRn1wGfs72yuWmhBCg%253D%253D \n",
"4050 https://public.docs.openprocurement.org/get/8b193a65ae4b450f9a37fc0adaa8484d?Prefix=fcf2d54f7088466aa589ed18c75ca038%2F097251b048b74ababf5a49adf50579f3&KeyID=52462340&Signature=daGIlSip2sleYk1nAFRyaBZOMx8KPxeFI91iHc9a5DsbZjC13AldMNAaNeZwvOrYsiSj%2Fx7vNq4sKRl4InSEBg%253D%253D \n",
"4054 https://public.docs.openprocurement.org/get/3023dbdfdd0143fdbf13083de56824d1?Prefix=fd2e110dda4c46aa8f5c30c469c9d3e7%2Ff2112c94dcde457abf1eda599355258f&KeyID=52462340&Signature=FDpuKVHnbiug4swYBuNCDY0yVh9zOC%2FKS%2FROytjoIWcoK6imlbEiUQdZqP14X3tGl5Eld2A2oaAtipQnwr9TBA%253D%253D \n",
"4056 https://public.docs.openprocurement.org/get/6e57e143651444d8973af2f7b7d0f34b?Prefix=fd40070c7b9747ca8764274445e44d11%2F09daee594e574ba58dcfae844213b3e8&KeyID=52462340&Signature=XXpUgGUCOmWR764XXPIsgAvFpwOdQVAKtWZZhvvrYhzngwiu7mTcIl8OROdjgnT6LiqwWgWd2OutPb0K9DgGDg%253D%253D \n",
"4058 https://public.docs.openprocurement.org/get/6d6e8d2276a1496b95a4b6b12721e2e3?Prefix=fd523607b58541f78e02584bdf3a28b1%2F9bc8f97aa4764682b772fd2b5b64786f&KeyID=52462340&Signature=ovD6LNSG2oydoIcbqzafkDmg%252Bo6J68dzCDvUc%252B5%252BxNWhf4hTffdbu6VvwIQYBw%2FBbP%252BcVui%252BLwTQr9o1IFotDQ%253D%253D \n",
"4060 https://public.docs.openprocurement.org/get/3b72b97ff3da44719dd9a9c7466177e1?Prefix=fd891694009a4706a13dea4067f07f75%2F12feff06b76e447a928b5a1eddb65e1d&KeyID=52462340&Signature=RirSceGNLCuU1Rj6dfDAKg7kW%2FaD02GlVy649G8w1QUAuDPx9sXIhug7zKaiIFrAdP4F4ZO6E2PDlpZTKKPhBg%253D%253D \n",
"4063 https://public.docs.openprocurement.org/get/a5188c01d5f34d3c89e3977520f82fa1?Prefix=fdb3aa96b5f744dbb0dfa36cb83d05a7%2F7268fb12a7764c6781e493e1d4908231&KeyID=52462340&Signature=Y8gPgIx94zAR78vs4shisfgnYBHwWS3JYRwIuK1MaK4Ab3X3u4fLTIGwkUsodeLWoX7kzH4Jz56hTIx7jv0FBQ%253D%253D \n",
"4072 https://public.docs.openprocurement.org/get/1ebba4457e1643a0acfef0cbdce7d5e1?Prefix=fe44affa494d4f27b49cd56f6dda33ab%2F7b8cd382ed77427884c904bac2ab8993&KeyID=52462340&Signature=dBW0ZOx7cYQ37VvTQlo8kSlPt1d%252BCpkeZ%2FNkmfWZ%2FrfUCcyvuM3MOFNW8j3zSTJosQE30nW5rHHOWwqRZBbSCA%253D%253D \n",
"4078 https://public.docs.openprocurement.org/get/188d0fea48a643cebfdb8fef79cc540f?Prefix=fe8b33ef1805433581cc260d320cae21%2F0da1dac74b144ea29dfe04ede4dade88&KeyID=52462340&Signature=j3NcW8rUKr7USHAsBeeElFUK4O0nod%252B%2F%252BfidUu3aAm33y%2F7zmyAeJ8859oeJIuxbOUP5GjyUYoHtQ8l70ADpCw%253D%253D \n",
"4079 https://public.docs.openprocurement.org/get/a6d6d28d480f4b6c8402ac405d08f09a?Prefix=fe9f3599b85445adb89c5e64ec894785%2F7e28987101e34bdea669dbc8daa84464&KeyID=52462340&Signature=IkZHpdQUdVE0b1F44St3%252B1G5IiNNii9oSTsck6Xp%252BZDpy%252BQCecJUPdEQqO68hEFhuieU5tUWSB%252BIz70mBBhMDA%253D%253D \n",
"4086 https://public.docs.openprocurement.org/get/a9c7ecc01ebd4164aa0b94e872e47387?Prefix=ff17da1507d645b0a2954d146248bc39%2F5d6b3fbcce0e465a9403e79e6b588aff&KeyID=52462340&Signature=kMNQaZ%2F9%252Bmqzsiq08zfmd3MSrohiu0fHtHRTdJyBFr5Yce6%252B58QbQ%2FEPiqsOi%2FZDF8ikCDyTd6Fl9LxU5hXyCA%253D%253D \n",
"4087 https://public.docs.openprocurement.org/get/c481c329c9c04d9a970d3793037318d3?Prefix=ff2b608938874699b83663f7ec215ecb%2Ff49886372f874b6a9117443685094868&KeyID=52462340&Signature=o0W%2FGP%252BDGK4wy2%252B5DVMLrBT6SrBT9Ws2XF98nV7BGY0iRSmckwxMO51eflbwPy4tn8AxCNNbLLMECEkg%252Bwm2Ag%253D%253D \n",
"4089 https://public.docs.openprocurement.org/get/f249d216627e423fb4640033470050a5?Prefix=ff530b09431e40f1b51399d8396378ba%2F711c93962c884351a81e4793bc1146b2&KeyID=52462340&Signature=ue4P2VAsWmjSlCGE%252B%2F79bjPz70nKqAwLs00rKZUeGLqgeRI%2F3Tw7Fuejnxh4b%252B1OZa9AMmfkLQYlX1r48C5iCQ%253D%253D \n",
"4090 https://public.docs.openprocurement.org/get/4b5be3f3d7814eb1b69c8194bf031c65?Prefix=ff58522f9c3349389d7549b99dc08c6b%2Fcc753c3cde8141ad90489f0fd8e07d18&KeyID=52462340&Signature=TEU2JMRgXliocAix2YHHTOOpAI8PFxAYHJgfd48Ng6i6vlvCnNdEh3ZV6EbikA0WfqjCf%2FyRI9R7EhW4aW1WAQ%253D%253D \n",
"4092 https://public.docs.openprocurement.org/get/b128bed26db74a97b0eb94a36f6d3e79?Prefix=ff7e59e52ef64f5799c1ad2ca71aa1cc%2F8e67444ff5cd4f66a3a81fbfe9a968d7&KeyID=52462340&Signature=0eofesAX9rQWjJLgQ8tQ4aRMKWRdkUPyPWKvhTKkqXL8zeeSuFfIF%252B2km7hKszfgmSECs0ZBgeyMEfW8GXmbAw%253D%253D \n",
"\n",
"[1530 rows x 3 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 64
}
]
},
{
"metadata": {
"id": "7pD0OTjTz1sb",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"For many documents, the format is set as `text/plain` but after manual inspection, we can find that most of them are in fact .doc, .xls, and other binary files (for some, you will need to add the extension after downloading the file, .doc files are the most frequent ones).\n",
"\n",
"To end the section, let's verify the data formats stated for both types of documents."
]
},
{
"metadata": {
"id": "59-E2HwTiPqg",
"colab_type": "code",
"outputId": "e86868b9-01cb-4748-eab4-a89d93adf9ea",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 545
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" documents ->> 'documentType' AS documentType,\n",
" documents ->> 'format' AS format,\n",
" COUNT(DISTINCT data ->> 'ocid') AS processCount\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'tender' -> 'documents') AS documents\n",
" WHERE\n",
" data -> 'tag' ? 'tender' AND documents ->> 'documentType' IN ('tenderNotice', 'notice')\n",
" AND\n",
" data -> 'tender' ->> 'procurementMethod' IN ('open', 'selective')\n",
" GROUP BY\n",
" documents ->> 'documentType',\n",
" documents ->> 'format'\n",
" \n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>documenttype</th>\n",
" <th>format</th>\n",
" <th>processcount</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>notice</td>\n",
" <td>application/msword</td>\n",
" <td>811</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>notice</td>\n",
" <td>application/ms-word</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>notice</td>\n",
" <td>application/octet-stream</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>notice</td>\n",
" <td>application/pdf</td>\n",
" <td>766</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>notice</td>\n",
" <td>application/pkcs7-signature</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>notice</td>\n",
" <td>application/rtf</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.ms-excel</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.ms-word</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.oasis.opendocument.text</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>notice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>563</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>notice</td>\n",
" <td>application/zip</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>notice</td>\n",
" <td>image/jpeg</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>tenderNotice</td>\n",
" <td>application/msword</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>tenderNotice</td>\n",
" <td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>tenderNotice</td>\n",
" <td>text/plain</td>\n",
" <td>1336</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" documenttype \\\n",
"0 notice \n",
"1 notice \n",
"2 notice \n",
"3 notice \n",
"4 notice \n",
"5 notice \n",
"6 notice \n",
"7 notice \n",
"8 notice \n",
"9 notice \n",
"10 notice \n",
"11 notice \n",
"12 notice \n",
"13 tenderNotice \n",
"14 tenderNotice \n",
"15 tenderNotice \n",
"\n",
" format \\\n",
"0 application/msword \n",
"1 application/ms-word \n",
"2 application/octet-stream \n",
"3 application/pdf \n",
"4 application/pkcs7-signature \n",
"5 application/rtf \n",
"6 application/vnd.ms-excel \n",
"7 application/vnd.ms-word \n",
"8 application/vnd.oasis.opendocument.text \n",
"9 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet \n",
"10 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"11 application/zip \n",
"12 image/jpeg \n",
"13 application/msword \n",
"14 application/vnd.openxmlformats-officedocument.wordprocessingml.document \n",
"15 text/plain \n",
"\n",
" processcount \n",
"0 811 \n",
"1 1 \n",
"2 3 \n",
"3 766 \n",
"4 1 \n",
"5 4 \n",
"6 5 \n",
"7 2 \n",
"8 13 \n",
"9 3 \n",
"10 563 \n",
"11 1 \n",
"12 6 \n",
"13 3 \n",
"14 1 \n",
"15 1336 "
]
},
"metadata": {
"tags": []
},
"execution_count": 67
}
]
},
{
"metadata": {
"id": "PXOebYvz4iMG",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Note that almost all of the documents with `tenderNotice` type are marked as plain text. Most of the documents with `notice` type are either .doc or PDF, which seems to be right after the manual check."
]
},
{
"metadata": {
"id": "47ZO-CGPJa1V",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"## 3. MAPS Indicators"
]
},
{
"metadata": {
"id": "LekLlmKtzosY",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Now that we stated a few features of our dataset, we can go ahead and calculate the quantitative indicators."
]
},
{
"metadata": {
"id": "QMDgeke2Jgga",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### 3.1. Key Procurement Information published along the procurement cycle (in % of total number of contracts)\n"
]
},
{
"metadata": {
"id": "Wtc3_DFasPrP",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"#### 3.1.1. Invitation to bid (in % of total number of contracts)"
]
},
{
"metadata": {
"id": "kyC95fRQ63UH",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"We look at sub-indicator 7(a)(c) to understand what this indicator means in the OCDS context ([MAPS specification](http://www.mapsinitiative.org/methodology/MAPS-methodology-for-assessing-procurement-systems.pdf), page 41, emphasis added):\n",
"\n",
">*The information system provides for the publication of: *\n",
"\n",
">* *procurement plans*\n",
">* *information related to specific procurements, at a minimum, **advertisements or notices of procurement opportunities,** procurement method, contract awards and contract implementation, including amendments, payments and appeals decisions*\n",
">* *linkages to rules and regulations and other information relevant for promoting competition and transparency.*\n",
"\n",
"The non-bolded items all correspond to other indicators, so the bold items must correspond to this indicator. Thus, \"invitation to bid\", in the context of OCDS, means the publication of tender notices.\n",
"\n",
"In section 2.6 we have explored the document types used for tenders and we found that there are a few issues with the document section. If we assume that there are not tender notices missing or unlabeled as such, we could calculate the indicator as follows:"
]
},
{
"metadata": {
"id": "oCD0j-xA57iy",
"colab_type": "code",
"outputId": "3b84211b-e0ea-4c36-f7cd-6b7ac2a85cb1",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 111
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" data -> 'tender' ->> 'procurementMethod' AS ProcurementMethod,\n",
" COUNT(distinct data ->> 'ocid') AS NumberOfTenders\n",
" FROM\n",
" releases\n",
" CROSS JOIN jsonb_array_elements(data -> 'tender' -> 'documents') AS documents\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" AND\n",
" documents ->> 'documentType' IN ('tenderNotice', 'notice')\n",
" GROUP BY\n",
" data -> 'tender' ->> 'procurementMethod'\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>procurementmethod</th>\n",
" <th>numberoftenders</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>limited</td>\n",
" <td>3997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>open</td>\n",
" <td>2375</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" procurementmethod numberoftenders\n",
"0 limited 3997 \n",
"1 open 2375 "
]
},
"metadata": {
"tags": []
},
"execution_count": 68
}
]
},
{
"metadata": {
"id": "bRj8xatg8IH3",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Then the result would be 2,375/1,520,507 = 0.15% of contracts. It seems abnormal that such a small percentage of public procuremente would be announced.\n",
"\n",
"There are additional facts that we should consider. Ukraine uses a e-procurement system which can be explored online at [https://prozorro.gov.ua/en](https://prozorro.gov.ua/en). By exploring the site (and with the help of an automatic translator), we can see that there is detailed information about open tenders, but it is difficult to find the same tender information for other procurement processes that have gone past the tender phase.\n",
"\n",
"It seems like tender notices are published online, but not included as documents in the publisher's OCDS data. This makes more sense, hence we will assume that all open tenders in the data are (or were) announced in their online platform, which is what our indicator is meant to measure.\n",
"\n",
"Let's see how many procurement processes exists, by procurement method:"
]
},
{
"metadata": {
"id": "K8jyApL1sU3u",
"colab_type": "code",
"outputId": "abab04ea-6df0-42f3-ec4d-3baf2a4d8d4d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 142
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" data -> 'tender' ->> 'procurementMethod' as ProcurementMethod,\n",
" count(distinct data ->> 'ocid') as NumberOfTenders\n",
" FROM\n",
" releases\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" GROUP BY\n",
" data -> 'tender' ->> 'procurementMethod'\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>procurementmethod</th>\n",
" <th>numberoftenders</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>limited</td>\n",
" <td>984698</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>open</td>\n",
" <td>535791</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>selective</td>\n",
" <td>18</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" procurementmethod numberoftenders\n",
"0 limited 984698 \n",
"1 open 535791 \n",
"2 selective 18 "
]
},
"metadata": {
"tags": []
},
"execution_count": 69
}
]
},
{
"metadata": {
"id": "MeHLd7l4sWDJ",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Usually, the `selective` tenders also include some kind of notification or invitation to the suppliers that qualify for the tender, so we will include these in our calculations as well.\n",
"\n",
"The result of the indicator would be (535,791 + 18)/1,520,507 = **35.2%** of contracts with invitations to bid."
]
},
{
"metadata": {
"id": "ZXUzPU4Hsis2",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"#### 3.1.2. Contract awards (purpose, supplier, value, variations/amendments)"
]
},
{
"metadata": {
"id": "DzLDDvB569N6",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Lets see which OCDS fields we can use to calculate each piece of information required for this indicator:\n",
"\n",
"* *Purpose*: arguably, MAPS uses the term *purpose* to refer to *what* is being purchased. In OCDS this information is contained in the `tender/items` section.\n",
"* *Supplier*: included in the `suppliers` field, should be at least one for each `award`.\n",
"* *Value*: `value` should be present for each `awards` item. We know from previous sections that this is true for almost all releases.\n",
"* *Variations/Amendments*: these may be indicated by using update tags like `awardUpdate` or even `awardCancellation`, but we already know that these tags are not used. Another way is using the `awards/amendments` field, which we can check.\n",
"\n",
"So, from the list, we can check the existance of items, suppliers and variations/amendments information."
]
},
{
"metadata": {
"id": "xvKiHZHdhGtX",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Let's start with the items information. Is there any missing or empty list of items?"
]
},
{
"metadata": {
"id": "O7sCtn3-hrO2",
"colab_type": "code",
"outputId": "28b5a4cb-c3ce-461c-98f5-3ed2e25fb5a3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 49
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" data ->> 'ocid' AS ocid\n",
" FROM\n",
" releases\n",
" WHERE\n",
" data ? 'award'\n",
" AND\n",
" (data -> 'tender' -> 'items' IS NULL OR jsonb_array_length(data -> 'tender' -> 'items') = 0)\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ocid</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [ocid]\n",
"Index: []"
]
},
"metadata": {
"tags": []
},
"execution_count": 70
}
]
},
{
"metadata": {
"id": "WmnNEp4DlUXN",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Good! Seems like all procurement processes have a non-empty list of items."
]
},
{
"metadata": {
"id": "xL3Mr9CQpz2y",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Let's continue with suppliers: do any contract awards have an invalid or empty supplier list?"
]
},
{
"metadata": {
"id": "m_Zq-mpxm9A_",
"colab_type": "code",
"outputId": "01416727-d21b-4096-9ff6-6e29d72b19c8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 49
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" data ->> 'ocid' AS ocid\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'awards') AS awards\n",
" WHERE\n",
" data -> 'tag' ? 'award'\n",
" AND\n",
" (awards -> 'suppliers' IS NULL OR jsonb_array_length(awards -> 'suppliers') = 0)\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ocid</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [ocid]\n",
"Index: []"
]
},
"metadata": {
"tags": []
},
"execution_count": 71
}
]
},
{
"metadata": {
"id": "DF1gD1cPr31E",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Great! 100% of contract awards include supplier information.\n",
"\n",
"Now, let's move to the amendment information. Here, we will look for the use of the `awards/amendments` section:"
]
},
{
"metadata": {
"id": "XP1sV0IEFTik",
"colab_type": "code",
"outputId": "f9795aa1-8e4b-496b-ef63-88e762f4c20f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" COUNT(*) AS numberOfAmendedAwards\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'awards') AS awards\n",
" WHERE\n",
" data -> 'tag' ? 'award'\n",
" AND\n",
" (\n",
" awards -> 'amendment' IS NOT NULL\n",
" OR\n",
" (awards-> 'amendments' IS NOT NULL AND jsonb_array_length(awards -> 'amendments') > 0)\n",
" )\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>numberofamendedawards</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" numberofamendedawards\n",
"0 0 "
]
},
"metadata": {
"tags": []
},
"execution_count": 72
}
]
},
{
"metadata": {
"id": "uA5vTiPuXiun",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Apparently, Ukraine does not publish amendment information."
]
},
{
"metadata": {
"id": "KNRmQ7HyLInQ",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"#### 3.1.3. Details related to contract implementation (milestones, completion and payment)\n",
"\n"
]
},
{
"metadata": {
"id": "8hflO2Zw7ApB",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"As before, let's separate the details of this indicator to check which OCDS fields we can use:\n",
"\n",
"* *Milestones*: present in the `contracts/implementation/milestones` field.\n",
"* *Completion*: completion of a contract cannot be assessed using OCDS in its current version.\n",
"* *Payment*: present in the `contracts/implementation/transactions` field.\n",
"\n",
"Let's start with the milestones. The following query counts the number of contracts with `milestones` data."
]
},
{
"metadata": {
"id": "_oJV72VglyUj",
"colab_type": "code",
"outputId": "9aee30cd-9441-42bd-9876-a8e4b052dbaa",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" COUNT(*) AS numberOfContracts\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'contracts') AS contracts\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" AND\n",
" contracts -> 'implementation' -> 'milestones' IS NOT NULL\n",
" AND\n",
" jsonb_array_length(contracts -> 'implementations' -> 'milestones') > 0\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>numberofcontracts</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" numberofcontracts\n",
"0 0 "
]
},
"metadata": {
"tags": []
},
"execution_count": 73
}
]
},
{
"metadata": {
"id": "Q_II9fS0bYPv",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"No milestones information is published.\n",
"\n",
"Now, let's see the payments by looking for the `transactions` field:"
]
},
{
"metadata": {
"id": "vtSZRJqJbj53",
"colab_type": "code",
"outputId": "f1f01cdc-2c5e-490b-d6d2-772fecc1d5ec",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" COUNT(*) AS numberOfContracts\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'contracts') AS contracts\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" AND\n",
" contracts -> 'implementation' -> 'transactions' IS NOT NULL\n",
" AND\n",
" jsonb_array_length(contracts -> 'implementations' -> 'transactions') > 0\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>numberofcontracts</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" numberofcontracts\n",
"0 0 "
]
},
"metadata": {
"tags": []
},
"execution_count": 74
}
]
},
{
"metadata": {
"id": "YBrPFFv6cHZd",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"No payments information either. We can conclude that Ukraine does not publish any contract implementation information."
]
},
{
"metadata": {
"id": "YaYwnTGRkynx",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### 3.2. Annual Procurement Statistics"
]
},
{
"metadata": {
"id": "7FA-fj1G7E_b",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"The indicator *Annual procurement statistics* measures if these are published each year: information that can not measure with OCDS. But a complete dataset in OCDS format can still be useful for a publisher that wants to meet this indicator; therefore, in this section we show how to calculate a few annual statistics with OCDS data.\n",
"\n",
"MAPS does not specify what information should be included in annual statistics, but we can go for a few basic ones. Sadly there is data missing, like procurement categories and buyers, that would be interesting to show.\n",
"\n",
"We use the year chosen before (2017) to calculate the following:"
]
},
{
"metadata": {
"id": "6rCQQQzpyZmJ",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"##### How many tenders were conducted?"
]
},
{
"metadata": {
"id": "yJQ2tAwAk3gN",
"colab_type": "code",
"outputId": "7b77caf7-819e-48fb-9ff4-aabf944ebc1f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" COUNT(DISTINCT data ->> 'ocid') AS numberoftenders\n",
" FROM\n",
" releases\n",
" WHERE\n",
" EXTRACT(year FROM CAST(data ->> 'date' AS TIMESTAMP)) = 2017\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>numberoftenders</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1035582</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" numberoftenders\n",
"0 1035582 "
]
},
"metadata": {
"tags": []
},
"execution_count": 9
}
]
},
{
"metadata": {
"id": "sHtIiQrHoTKB",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"##### How many contracts were awarded?"
]
},
{
"metadata": {
"id": "-4pobrRUoVyz",
"colab_type": "code",
"outputId": "78b106ce-3288-483c-8bc5-c1f51fd1cc59",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" COUNT(data ->> 'ocid') AS numberofawards\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'awards') AS awards\n",
" WHERE\n",
" data -> 'tag' ? 'award'\n",
" AND\n",
" EXTRACT(year FROM CAST(data ->> 'date' AS TIMESTAMP)) = 2017\n",
" AND\n",
" awards ->> 'status' <> 'unsuccessful'\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>numberofawards</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>947331</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" numberofawards\n",
"0 947331 "
]
},
"metadata": {
"tags": []
},
"execution_count": 85
}
]
},
{
"metadata": {
"id": "ZkXshCiApsPy",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"##### How many contracts were signed?"
]
},
{
"metadata": {
"id": "UMEhjZJZpvu0",
"colab_type": "code",
"outputId": "7e2b1089-9748-4c15-a8d9-bebbe8072008",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" COUNT(data ->> 'ocid') AS numberofcontracts\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'contracts') AS contracts\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" AND\n",
" EXTRACT(year FROM CAST(data ->> 'date' AS TIMESTAMP)) = 2017\n",
" AND\n",
" contracts ->> 'status' <> 'cancelled'\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>numberofcontracts</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>905329</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" numberofcontracts\n",
"0 905329 "
]
},
"metadata": {
"tags": []
},
"execution_count": 86
}
]
},
{
"metadata": {
"id": "GMUJtkcyp1NF",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"##### Top 10 Suppliers in 2017"
]
},
{
"metadata": {
"id": "Z9bL7iOknNNq",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Although we can't know for sure how many suppliers are duplicated, we include the following to demonstrate how suppliers information can be used. \n",
"\n",
"Let's calculate how much each supplier earned in Ukrainian Hryvnia and pick the top 10:"
]
},
{
"metadata": {
"id": "V_YwRpUUp5Zd",
"colab_type": "code",
"outputId": "06352bcb-3c3d-4ddd-d445-a3d1fff7854a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 359
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" , \n",
" currencies AS (\n",
" SELECT\n",
" *\n",
" FROM (VALUES\n",
" ('UAH', 1),\n",
" ('USD', 27),\n",
" ('EUR', 31),\n",
" ('GBP', 35),\n",
" ('RUB', 0.42))\n",
" AS t(currency,value)\n",
" )\n",
" \n",
" \n",
" SELECT\n",
" suppliers ->> 'name' AS Name,\n",
" SUM((contracts -> 'value' ->> 'amount')::NUMERIC * currencies.value) AS totalContractValue\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'contracts') AS contracts\n",
" JOIN\n",
" jsonb_array_elements(data -> 'awards') AS awards\n",
" ON\n",
" contracts -> 'awardID' = awards -> 'id'\n",
" CROSS JOIN\n",
" jsonb_array_elements(awards -> 'suppliers') AS suppliers\n",
" JOIN \n",
" currencies\n",
" ON\n",
" currencies.currency = contracts -> 'value' ->> 'currency'\n",
" WHERE\n",
" contracts -> 'value' ->> 'amount' IS NOT NULL\n",
" AND\n",
" EXTRACT(year FROM CAST(data ->> 'date' AS timestamp)) = 2017\n",
" AND\n",
" data -> 'tag' ? 'contract'\n",
" AND\n",
" contracts ->> 'status' <> 'cancelled'\n",
" GROUP BY\n",
" suppliers ->> 'name'\n",
" ORDER BY\n",
" SUM((contracts -> 'value' ->> 'amount')::NUMERIC * currencies.value) DESC\n",
" LIMIT\n",
" 10\n",
" \n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" <th>totalcontractvalue</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Фізична особа підприємець Іваницька Вероніка Володимирівна</td>\n",
" <td>380347301539.23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>ПАТ \"Національна акціонерна компанія \"Нафтогаз України\"</td>\n",
" <td>20335404572.85</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>ПУБЛІЧНЕ АКЦІОНЕРНЕ ТОВАРИСТВО «НАЦІОНАЛЬНА АКЦІОНЕРНА КОМПАНІЯ «НАФТОГАЗ УКРАЇНИ»</td>\n",
" <td>16339482432.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>ТОВ \"Автомагістраль-Південь\"</td>\n",
" <td>11251055365.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>ТОВ \"ІНТЕРПАЙП УКРАЇНА\"</td>\n",
" <td>4522977530.86</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ \"ОНУР КОНСТРУКЦІОН ІНТЕРНЕШНЛ\"</td>\n",
" <td>4482181837.06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>ТОВ ПБС</td>\n",
" <td>3838304922.11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ \"РОСТДОРСТРОЙ\"</td>\n",
" <td>3367127121.87</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Дочірнє підприємство «Львівський облавтодор» Відкритого акціонерного товариства \"Державна акціонерна компанія \"Автомобільні дороги України\"</td>\n",
" <td>3154103457.76</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>ТОВ \"ГАЗТРЕЙД\"</td>\n",
" <td>3063759466.52</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" name \\\n",
"0 Фізична особа підприємець Іваницька Вероніка Володимирівна \n",
"1 ПАТ \"Національна акціонерна компанія \"Нафтогаз України\" \n",
"2 ПУБЛІЧНЕ АКЦІОНЕРНЕ ТОВАРИСТВО «НАЦІОНАЛЬНА АКЦІОНЕРНА КОМПАНІЯ «НАФТОГАЗ УКРАЇНИ» \n",
"3 ТОВ \"Автомагістраль-Південь\" \n",
"4 ТОВ \"ІНТЕРПАЙП УКРАЇНА\" \n",
"5 ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ \"ОНУР КОНСТРУКЦІОН ІНТЕРНЕШНЛ\" \n",
"6 ТОВ ПБС \n",
"7 ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ \"РОСТДОРСТРОЙ\" \n",
"8 Дочірнє підприємство «Львівський облавтодор» Відкритого акціонерного товариства \"Державна акціонерна компанія \"Автомобільні дороги України\" \n",
"9 ТОВ \"ГАЗТРЕЙД\" \n",
"\n",
" totalcontractvalue \n",
"0 380347301539.23 \n",
"1 20335404572.85 \n",
"2 16339482432.0 \n",
"3 11251055365.7 \n",
"4 4522977530.86 \n",
"5 4482181837.06 \n",
"6 3838304922.11 \n",
"7 3367127121.87 \n",
"8 3154103457.76 \n",
"9 3063759466.52 "
]
},
"metadata": {
"tags": []
},
"execution_count": 77
}
]
},
{
"metadata": {
"id": "blI06C2EpE0C",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Here we used the currency exchange rates picked in section 2.5, to have all the results in Ukrainian Hryvnia."
]
},
{
"metadata": {
"id": "JnpiS-uNg_o0",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### 3.3. Uptake of e-Procurement"
]
},
{
"metadata": {
"id": "EH60T4T1hf1N",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"#### 3.3.1. Number of e-Procurement procedures in % of total number of procedures"
]
},
{
"metadata": {
"id": "q78qlmnsfOgP",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Here, we will use the field `tender/submissionMethod` to distinguish e-procurement procedures from the ones that use other methods."
]
},
{
"metadata": {
"id": "HhvebZQRUArl",
"colab_type": "code",
"outputId": "d818cb2b-fc70-4582-e16d-d7fc88388b20",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 111
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" data -> 'tender' ->> 'submissionMethod' AS submissionMethod,\n",
" count(distinct data ->> 'ocid') AS numberOfProcedures\n",
" FROM\n",
" releases\n",
" GROUP BY\n",
" data -> 'tender' ->> 'submissionMethod'\n",
" \n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>submissionmethod</th>\n",
" <th>numberofprocedures</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>[\"electronicAuction\"]</td>\n",
" <td>829907</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>None</td>\n",
" <td>1025581</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" submissionmethod numberofprocedures\n",
"0 [\"electronicAuction\"] 829907 \n",
"1 None 1025581 "
]
},
"metadata": {
"tags": []
},
"execution_count": 14
}
]
},
{
"metadata": {
"id": "q5LoVHH-t9LV",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"For some reason, the submission method is not specified in more than half of the procurement procedures. Maybe the publisher started to use the `submissionMethod` field after a certain date, or there is a default submission method not included in the data. Given Ukraine's current procurement system, it is possible that all submissions in this dataset to be electronic, and so the result would be trivial.\n",
"\n",
"For demonstration purposes, let's assume the `None` values refer to an unknown submission method. Therefore, the result would be 829,907/1,855,488 = **44.7%**."
]
},
{
"metadata": {
"id": "IR6oBerLiK7-",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"#### 3.3.2. Value of e-Procurement procedures in % of total value of procedures"
]
},
{
"metadata": {
"id": "7HfJgz-0Eo2t",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"We can expand the previous query to add value information. Since the final value of a procurement procedure is defined in the contract signing, we will use the procedures that reached the contract stage only, and the values contained in the field `contracts/value`."
]
},
{
"metadata": {
"id": "5iBa3edWRF9m",
"colab_type": "code",
"outputId": "512f3b0c-d400-478a-e34a-fff86c0322bd",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 111
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" , \n",
" currencies AS (\n",
" SELECT\n",
" *\n",
" FROM (VALUES\n",
" ('UAH', 1),\n",
" ('USD', 27),\n",
" ('EUR', 31),\n",
" ('GBP', 35),\n",
" ('RUB', 0.42))\n",
" AS t(currency,value)\n",
" )\n",
" \n",
" SELECT\n",
" data -> 'tender' ->> 'submissionMethod' AS submissionMethod,\n",
" COUNT(DISTINCT data ->> 'ocid') AS numOfProcedures,\n",
" SUM((contracts -> 'value' ->> 'amount')::decimal * currencies.value) AS totalValue\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'contracts') AS contracts\n",
" INNER JOIN currencies \n",
" ON currencies.currency = contracts -> 'value' ->> 'currency'\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" AND\n",
" contracts ->> 'status' <> 'cancelled'\n",
" GROUP BY\n",
" data -> 'tender' ->> 'submissionMethod'\n",
" \n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>submissionmethod</th>\n",
" <th>numofprocedures</th>\n",
" <th>totalvalue</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>[\"electronicAuction\"]</td>\n",
" <td>484656</td>\n",
" <td>482013125126.5842061725495</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>None</td>\n",
" <td>984229</td>\n",
" <td>1051884456501.0970</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" submissionmethod numofprocedures totalvalue\n",
"0 [\"electronicAuction\"] 484656 482013125126.5842061725495\n",
"1 None 984229 1051884456501.0970 "
]
},
"metadata": {
"tags": []
},
"execution_count": 87
}
]
},
{
"metadata": {
"id": "xIqsKeCCT3qP",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Let's put these results in a nicer table to find the answer:\n",
"\n",
"| Submission Method | Value | % |\n",
"|--|--|--|\n",
"| None | 1,051,884,456,501 | 69 |\n",
"| Electronic Auction | 482,013,125,127 | 31 |\n",
"| **Total** | **1,533,897,581,628** | **100** |\n",
"\n",
"\n",
"Only the **31%** of the procurement value seem to correspond to e-procurement procedures."
]
},
{
"metadata": {
"id": "7yTfcWQphmgy",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### 3.4. Total Number of Contracts"
]
},
{
"metadata": {
"id": "5gQfTpfLp9ba",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"We can get this information by counting the contracts contained in the `contracts` array. "
]
},
{
"metadata": {
"id": "aUOxGPq_1NIz",
"colab_type": "code",
"outputId": "a0928fe4-ac8f-414b-ffbd-5d425722c0dd",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" COUNT(*)\n",
" FROM\n",
" releases\n",
" CROSS JOIN \n",
" jsonb_array_elements(data -> 'contracts') as contracts\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" AND\n",
" contracts ->> 'status' <> 'cancelled'\n",
" \n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>count</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1567032</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count\n",
"0 1567032"
]
},
"metadata": {
"tags": []
},
"execution_count": 10
}
]
},
{
"metadata": {
"id": "UqePMv-BvxHS",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"We have 1,567,032 contracts for the total publishing period."
]
},
{
"metadata": {
"id": "qfLIIBGwiRj8",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### 3.5.Total Value of Contracts"
]
},
{
"metadata": {
"id": "wXMtI5Z28cuC",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"We can take the total value of procedures in section 3.3.2 to know the answer: \t**1,533,897,581,628\tUAH**."
]
},
{
"metadata": {
"id": "Lkov9MHEiVWq",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### 3.6.Public procurement as a share of government expenditure and as share of GDP"
]
},
{
"metadata": {
"id": "DQnVW5hUPuLU",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"We will calculate this indicator by using contracts signed in 2017 data only to be able to compare values."
]
},
{
"metadata": {
"id": "YMx8EfGpP5Nd",
"colab_type": "code",
"outputId": "c6bbdddc-efea-4cd6-deb9-3bda234b4522",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" , \n",
" currencies AS (\n",
" SELECT\n",
" *\n",
" FROM (VALUES\n",
" ('UAH', 1),\n",
" ('USD', 27),\n",
" ('EUR', 31),\n",
" ('GBP', 35),\n",
" ('RUB', 0.42))\n",
" AS t(currency,value)\n",
" )\n",
" \n",
" SELECT\n",
" SUM((contracts -> 'value' ->> 'amount')::decimal * currencies.value) AS total\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'contracts') AS contracts\n",
" JOIN\n",
" currencies\n",
" ON\n",
" contracts -> 'value' ->> 'currency' = currencies.currency\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" AND\n",
" contracts ->> 'status' <> 'cancelled'\n",
" AND\n",
" contracts ->> 'dateSigned' BETWEEN '2017-01-01' AND '2018-01-01'\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>total</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>840079878460.070399926491</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total\n",
"0 840079878460.070399926491"
]
},
"metadata": {
"tags": []
},
"execution_count": 11
}
]
},
{
"metadata": {
"id": "XXEKrMTYwzK7",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"We have 840,079,878,460 UAH as the total expenses on public procurement for 2017. According to [this source](http://cost.ua/en/budget/), the total expenditure for 2017 was 1.215 billions UAH. The proportion would be:\n",
"\n",
"840,079,878,460/1,215,000,000,000=**~69%**.\n",
"\n",
"Ukraine's GDP in 2017, according to [this source](https://index.minfin.com.ua/economy/gdp/), is 2,982,920 millions UAH, so the share of GDP would be:\n",
"\n",
"840,079,878,460/2,982,920,000,000=·**~28%**."
]
},
{
"metadata": {
"id": "rEJibw6Yig4W",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### 3.7. Total value of contracts awarded through competitive methods in the most recent fiscal year"
]
},
{
"metadata": {
"id": "NUHyqJRTab-h",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"According to OCDS definitions, the procurement types `open` and `selective` are the competitive ones. Let's calculate contract values by procurement method, for the contracts that were awarded in 2017:"
]
},
{
"metadata": {
"id": "dFxnKEuxQmCr",
"colab_type": "code",
"outputId": "aecd36ee-1550-4bf6-f811-1206f85f4f8c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 142
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" , \n",
" currencies AS (\n",
" SELECT\n",
" *\n",
" FROM (VALUES\n",
" ('UAH', 1),\n",
" ('USD', 27),\n",
" ('EUR', 31),\n",
" ('GBP', 35),\n",
" ('RUB', 0.42))\n",
" AS t(currency,value)\n",
" )\n",
" \n",
" SELECT\n",
" data -> 'tender' ->> 'procurementMethod' AS procurementMethod,\n",
" sum((contracts -> 'value' ->> 'amount')::decimal * currencies.value) AS total\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'awards') AS awards\n",
" JOIN\n",
" jsonb_array_elements(data -> 'contracts') AS contracts\n",
" ON\n",
" contracts ->> 'awardID' = awards ->> 'id'\n",
" JOIN\n",
" currencies\n",
" ON\n",
" contracts -> 'value' ->> 'currency' = currencies.currency\n",
" WHERE\n",
" data -> 'tag' ? 'award'\n",
" AND\n",
" awards ->> 'date' BETWEEN '2017-01-01' AND '2018-01-01'\n",
" AND\n",
" contracts ->> 'status' <> 'cancelled'\n",
" GROUP BY\n",
" data -> 'tender' ->> 'procurementMethod'\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"results = getResults(cur)\n",
"\n",
"results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>procurementmethod</th>\n",
" <th>total</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>limited</td>\n",
" <td>551822218894.5890</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>open</td>\n",
" <td>310561650024.887999926501</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>selective</td>\n",
" <td>1356286199.67</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" procurementmethod total\n",
"0 limited 551822218894.5890 \n",
"1 open 310561650024.887999926501\n",
"2 selective 1356286199.67 "
]
},
"metadata": {
"tags": []
},
"execution_count": 12
}
]
},
{
"metadata": {
"id": "QvQy7GffciLh",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"According to the results, the total value of contracts is 310,561,650,024 + 1,356,286,199 = **311,917,936,223 UAH**."
]
},
{
"metadata": {
"id": "azwVrLoOinH5",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### 3.8. Share of contracts with complete and accurate records and databases (in %)"
]
},
{
"metadata": {
"id": "2apz59tyV0Zb",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"For obvious reasons we cannot verify the accuracy of the data, but we can check if important information is being omitted. We look if the following information is present for all contracts:\n",
"\n",
"* Contract dates (signing, beggining, end)\n",
"* Contract value\n",
"* Items\n",
"* Awarded suppliers\n",
"\n",
"The awarded suppliers were already verified in the indicator 3.1.2 and we know that there is a small amount of missing contract values from section 2.4.\n",
"\n",
"Let's calculate the remaining information, starting with contract dates:"
]
},
{
"metadata": {
"id": "0QrFQ1zURMPr",
"colab_type": "code",
"outputId": "e592e11d-5d17-4ded-8964-f24ff837f5dc",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1969
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" data ->> 'ocid' AS ocid,\n",
" contracts ->> 'id' AS contractId,\n",
" data ->> 'dateSigned' AS dateSigned,\n",
" data -> 'period' AS period\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'contracts') AS contracts\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" AND\n",
" (\n",
" contracts -> 'dateSigned' IS NULL\n",
" OR\n",
" contracts ->> 'dateSigned' = ''\n",
" OR\n",
" contracts -> 'period' IS NULL\n",
" OR\n",
" contracts -> 'period' ->> 'startDate' IS NULL\n",
" OR\n",
" contracts -> 'period' ->> 'endDate' IS NULL\n",
" OR\n",
" contracts -> 'period' ->> 'startDate' = ''\n",
" OR\n",
" contracts -> 'period' ->> 'endDate' = ''\n",
" )\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"dates_results = getResults(cur)\n",
"\n",
"dates_results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ocid</th>\n",
" <th>contractid</th>\n",
" <th>datesigned</th>\n",
" <th>period</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>ocds-be6bcu-UA-2018-03-02-001373-c</td>\n",
" <td>d46585b3f2c042a1be8c2b8232ac0ca0</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>ocds-be6bcu-UA-2016-09-29-001588-b</td>\n",
" <td>14890d3cd8824b3391ae6eff42f100b5</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>ocds-be6bcu-UA-2016-10-21-000780-c</td>\n",
" <td>f68faac0a2a1477999bd598c8b719bc5</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>ocds-be6bcu-UA-2016-11-03-000865-c</td>\n",
" <td>9353881ee8364dc4a06f84473f5f37ba</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>ocds-be6bcu-UA-2017-03-20-001146-b</td>\n",
" <td>065c2fa6aca54898bb596d1e5249ce3b</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>ocds-be6bcu-UA-2017-11-13-000388-b</td>\n",
" <td>ac9bd36db0f44f8388a4a800e3e0e7be</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>ocds-be6bcu-UA-2017-11-29-003825-c</td>\n",
" <td>e6a4f0f67e8a4037906ca7c7bf530b25</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>ocds-be6bcu-UA-2016-12-07-001433-b</td>\n",
" <td>4ff66d17e9694203b8c3efee2e35bf0c</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>ocds-be6bcu-UA-2016-05-24-000390-a</td>\n",
" <td>f953c7b649d746edb9e65552a06241db</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>ocds-be6bcu-UA-2017-08-17-000958-c</td>\n",
" <td>a3f0be55820246e3bf6722a71b1574f0</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>ocds-be6bcu-UA-2016-02-11-000025-c</td>\n",
" <td>7019b90e9e7b4fd3bf9a2852b0a67e3c</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>ocds-be6bcu-UA-2016-12-30-000611-c</td>\n",
" <td>b2e83d397efa40059641bda4c75fd5a0</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>ocds-be6bcu-UA-2016-11-29-000518-c</td>\n",
" <td>eae22094e25a4d999df9b376db09f53b</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>ocds-be6bcu-UA-2017-04-21-000445-c</td>\n",
" <td>fd1e9fba9823406a8f5ac2d5d8166342</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>ocds-be6bcu-UA-2015-12-16-000037-a</td>\n",
" <td>cd758d0c56b743bd90bca090d5adce30</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>ocds-be6bcu-UA-2016-10-12-001164-b</td>\n",
" <td>70b55c100b9d4f698d2e682fb27d49fa</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>ocds-be6bcu-UA-2016-05-24-000104-c</td>\n",
" <td>da72ccebd09f4d4aae30c21fafcbddc0</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>ocds-be6bcu-UA-2018-03-27-000718-b</td>\n",
" <td>60dca034d1e744b9a991a3694b47e332</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>ocds-be6bcu-UA-2015-12-11-000019</td>\n",
" <td>dd778a5892864aafaded1328014093ce</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>ocds-be6bcu-UA-2018-04-04-000512-a</td>\n",
" <td>9afa930b88974e338dbfc5e456572ef4</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>ocds-be6bcu-UA-2018-03-16-000537-b</td>\n",
" <td>2d64de0a6d114c29869c9e4c6b3be09c</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>ocds-be6bcu-UA-2017-02-14-002080-c</td>\n",
" <td>a44e41917a0842d087758971197d40f1</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>ocds-be6bcu-UA-2015-05-28-000030</td>\n",
" <td>2e0fdd5ea3fd45e4b43461d08180e54a</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>ocds-be6bcu-UA-2016-09-05-000054-c</td>\n",
" <td>9b02f8adabcf4ebea3a5de967018407a</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>ocds-be6bcu-UA-2016-05-24-000278-a</td>\n",
" <td>b24dbb2842784529a4bd01c35bdb0d00</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>ocds-be6bcu-UA-2017-07-12-000114-a</td>\n",
" <td>00f408f0de6144ad8b0828bb5a86e849</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>ocds-be6bcu-UA-2016-11-28-000936-a</td>\n",
" <td>6701aadc990d4a5ab6519a82a2957b74</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>ocds-be6bcu-UA-2016-12-20-002359-b</td>\n",
" <td>5f8c610c58dd4b4fbc8118395bdaa83f</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>ocds-be6bcu-UA-2015-06-17-000020</td>\n",
" <td>85ae93f77c8a4fb5815a21abaeceb093</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>ocds-be6bcu-UA-2016-02-12-000224-b</td>\n",
" <td>779e0fd34ade4f7b928c742f76294898</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239767</th>\n",
" <td>ocds-be6bcu-UA-2018-03-30-000655-b</td>\n",
" <td>c84a86cbf5984363af5e945570935cb9</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239768</th>\n",
" <td>ocds-be6bcu-UA-2018-01-17-001347-c</td>\n",
" <td>cff3731f1c494f0d8a70fbcbd34796a0</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239769</th>\n",
" <td>ocds-be6bcu-UA-2016-11-09-000931-b</td>\n",
" <td>7aebcfc24df74d9496b0d5e4787d98df</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239770</th>\n",
" <td>ocds-be6bcu-UA-2016-11-08-000346-a</td>\n",
" <td>b0beea7c1ff543b19064f5eaac446bb1</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239771</th>\n",
" <td>ocds-be6bcu-UA-2017-04-28-001467-b</td>\n",
" <td>5ce1ad9a65bd464c9b3b85ff59670bf9</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239772</th>\n",
" <td>ocds-be6bcu-UA-2017-10-27-000807-c</td>\n",
" <td>3f7f151bb6384de68d300d145e820682</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239773</th>\n",
" <td>ocds-be6bcu-UA-2017-10-27-000807-c</td>\n",
" <td>d0e6360b34304fef8023dc724bd84835</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239774</th>\n",
" <td>ocds-be6bcu-UA-2018-02-02-000258-a</td>\n",
" <td>3f5af00c2dfd4b989e946c1cfaadbf1b</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239775</th>\n",
" <td>ocds-be6bcu-UA-2018-01-17-002287-c</td>\n",
" <td>ebb2ae2d714f4a7cb4e2762a283a9951</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239776</th>\n",
" <td>ocds-be6bcu-UA-2017-05-13-000288-a</td>\n",
" <td>c968f18aec274067811a4d2669bda25e</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239777</th>\n",
" <td>ocds-be6bcu-UA-2017-01-24-000870-c</td>\n",
" <td>c0fe59873d2a4cca948690be70b1bd14</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239778</th>\n",
" <td>ocds-be6bcu-UA-2016-03-09-000131-b</td>\n",
" <td>08cec5c2d73f42ae93becacc38c66d5a</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239779</th>\n",
" <td>ocds-be6bcu-UA-2017-04-07-001065-b</td>\n",
" <td>6910f0a9131d40438cae6d2a07d61262</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239780</th>\n",
" <td>ocds-be6bcu-UA-2017-03-13-001003-b</td>\n",
" <td>fe32cdc747da4e04ac3def6a80c58e92</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239781</th>\n",
" <td>ocds-be6bcu-UA-2017-03-13-001003-b</td>\n",
" <td>a4fb7014a84a40758263e0ad9d3423d3</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239782</th>\n",
" <td>ocds-be6bcu-UA-2017-10-03-003060-b</td>\n",
" <td>3c704bdfdd28480fb4e911421286a617</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239783</th>\n",
" <td>ocds-be6bcu-UA-2017-08-18-000042-b</td>\n",
" <td>e6afc81646a9450db9907bbeb8aba128</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239784</th>\n",
" <td>ocds-be6bcu-UA-2017-05-24-000503-c</td>\n",
" <td>3f6a58eb251b455d898fc03bedc6d051</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239785</th>\n",
" <td>ocds-be6bcu-UA-2017-07-28-000129-c</td>\n",
" <td>fd307b9472864c038d547e25b27b775f</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239786</th>\n",
" <td>ocds-be6bcu-UA-2015-11-03-000066</td>\n",
" <td>c7b450d7319e420f93e2bb45f4598a15</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239787</th>\n",
" <td>ocds-be6bcu-UA-2017-06-07-001399-b</td>\n",
" <td>2911eb15d4994293b8cef86fc1355d4c</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239788</th>\n",
" <td>ocds-be6bcu-UA-2016-11-18-001238-c</td>\n",
" <td>5fbb43c722f449a8b05d93b03053ac9b</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239789</th>\n",
" <td>ocds-be6bcu-UA-2018-02-08-002704-a</td>\n",
" <td>ec6aaaf670fe41e7a341f980e4ba8619</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239790</th>\n",
" <td>ocds-be6bcu-UA-2017-12-13-000046-a</td>\n",
" <td>c30689b9e7e448bb80750757c78368b5</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239791</th>\n",
" <td>ocds-be6bcu-UA-2018-01-30-002530-c</td>\n",
" <td>38c72d1525454b069c5b2223a4972607</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239792</th>\n",
" <td>ocds-be6bcu-UA-2018-04-06-000524-c</td>\n",
" <td>4c79d6cb7247448bbc41ab3e197450d9</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239793</th>\n",
" <td>ocds-be6bcu-UA-2016-08-03-000236-c</td>\n",
" <td>3205b8a64b37488089f733ae92be7a96</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239794</th>\n",
" <td>ocds-be6bcu-UA-2016-11-08-000787-a</td>\n",
" <td>d53142379efe4928a7de0f20ee221954</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239795</th>\n",
" <td>ocds-be6bcu-UA-2017-09-04-000969-b</td>\n",
" <td>720d405bf51f44c2827120ca1a9eea4a</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239796</th>\n",
" <td>ocds-be6bcu-UA-2017-07-03-002097-b</td>\n",
" <td>133336c2c2124bd5ab846a86db3665f5</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>239797 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" ocid contractid \\\n",
"0 ocds-be6bcu-UA-2018-03-02-001373-c d46585b3f2c042a1be8c2b8232ac0ca0 \n",
"1 ocds-be6bcu-UA-2016-09-29-001588-b 14890d3cd8824b3391ae6eff42f100b5 \n",
"2 ocds-be6bcu-UA-2016-10-21-000780-c f68faac0a2a1477999bd598c8b719bc5 \n",
"3 ocds-be6bcu-UA-2016-11-03-000865-c 9353881ee8364dc4a06f84473f5f37ba \n",
"4 ocds-be6bcu-UA-2017-03-20-001146-b 065c2fa6aca54898bb596d1e5249ce3b \n",
"5 ocds-be6bcu-UA-2017-11-13-000388-b ac9bd36db0f44f8388a4a800e3e0e7be \n",
"6 ocds-be6bcu-UA-2017-11-29-003825-c e6a4f0f67e8a4037906ca7c7bf530b25 \n",
"7 ocds-be6bcu-UA-2016-12-07-001433-b 4ff66d17e9694203b8c3efee2e35bf0c \n",
"8 ocds-be6bcu-UA-2016-05-24-000390-a f953c7b649d746edb9e65552a06241db \n",
"9 ocds-be6bcu-UA-2017-08-17-000958-c a3f0be55820246e3bf6722a71b1574f0 \n",
"10 ocds-be6bcu-UA-2016-02-11-000025-c 7019b90e9e7b4fd3bf9a2852b0a67e3c \n",
"11 ocds-be6bcu-UA-2016-12-30-000611-c b2e83d397efa40059641bda4c75fd5a0 \n",
"12 ocds-be6bcu-UA-2016-11-29-000518-c eae22094e25a4d999df9b376db09f53b \n",
"13 ocds-be6bcu-UA-2017-04-21-000445-c fd1e9fba9823406a8f5ac2d5d8166342 \n",
"14 ocds-be6bcu-UA-2015-12-16-000037-a cd758d0c56b743bd90bca090d5adce30 \n",
"15 ocds-be6bcu-UA-2016-10-12-001164-b 70b55c100b9d4f698d2e682fb27d49fa \n",
"16 ocds-be6bcu-UA-2016-05-24-000104-c da72ccebd09f4d4aae30c21fafcbddc0 \n",
"17 ocds-be6bcu-UA-2018-03-27-000718-b 60dca034d1e744b9a991a3694b47e332 \n",
"18 ocds-be6bcu-UA-2015-12-11-000019 dd778a5892864aafaded1328014093ce \n",
"19 ocds-be6bcu-UA-2018-04-04-000512-a 9afa930b88974e338dbfc5e456572ef4 \n",
"20 ocds-be6bcu-UA-2018-03-16-000537-b 2d64de0a6d114c29869c9e4c6b3be09c \n",
"21 ocds-be6bcu-UA-2017-02-14-002080-c a44e41917a0842d087758971197d40f1 \n",
"22 ocds-be6bcu-UA-2015-05-28-000030 2e0fdd5ea3fd45e4b43461d08180e54a \n",
"23 ocds-be6bcu-UA-2016-09-05-000054-c 9b02f8adabcf4ebea3a5de967018407a \n",
"24 ocds-be6bcu-UA-2016-05-24-000278-a b24dbb2842784529a4bd01c35bdb0d00 \n",
"25 ocds-be6bcu-UA-2017-07-12-000114-a 00f408f0de6144ad8b0828bb5a86e849 \n",
"26 ocds-be6bcu-UA-2016-11-28-000936-a 6701aadc990d4a5ab6519a82a2957b74 \n",
"27 ocds-be6bcu-UA-2016-12-20-002359-b 5f8c610c58dd4b4fbc8118395bdaa83f \n",
"28 ocds-be6bcu-UA-2015-06-17-000020 85ae93f77c8a4fb5815a21abaeceb093 \n",
"29 ocds-be6bcu-UA-2016-02-12-000224-b 779e0fd34ade4f7b928c742f76294898 \n",
"... ... ... \n",
"239767 ocds-be6bcu-UA-2018-03-30-000655-b c84a86cbf5984363af5e945570935cb9 \n",
"239768 ocds-be6bcu-UA-2018-01-17-001347-c cff3731f1c494f0d8a70fbcbd34796a0 \n",
"239769 ocds-be6bcu-UA-2016-11-09-000931-b 7aebcfc24df74d9496b0d5e4787d98df \n",
"239770 ocds-be6bcu-UA-2016-11-08-000346-a b0beea7c1ff543b19064f5eaac446bb1 \n",
"239771 ocds-be6bcu-UA-2017-04-28-001467-b 5ce1ad9a65bd464c9b3b85ff59670bf9 \n",
"239772 ocds-be6bcu-UA-2017-10-27-000807-c 3f7f151bb6384de68d300d145e820682 \n",
"239773 ocds-be6bcu-UA-2017-10-27-000807-c d0e6360b34304fef8023dc724bd84835 \n",
"239774 ocds-be6bcu-UA-2018-02-02-000258-a 3f5af00c2dfd4b989e946c1cfaadbf1b \n",
"239775 ocds-be6bcu-UA-2018-01-17-002287-c ebb2ae2d714f4a7cb4e2762a283a9951 \n",
"239776 ocds-be6bcu-UA-2017-05-13-000288-a c968f18aec274067811a4d2669bda25e \n",
"239777 ocds-be6bcu-UA-2017-01-24-000870-c c0fe59873d2a4cca948690be70b1bd14 \n",
"239778 ocds-be6bcu-UA-2016-03-09-000131-b 08cec5c2d73f42ae93becacc38c66d5a \n",
"239779 ocds-be6bcu-UA-2017-04-07-001065-b 6910f0a9131d40438cae6d2a07d61262 \n",
"239780 ocds-be6bcu-UA-2017-03-13-001003-b fe32cdc747da4e04ac3def6a80c58e92 \n",
"239781 ocds-be6bcu-UA-2017-03-13-001003-b a4fb7014a84a40758263e0ad9d3423d3 \n",
"239782 ocds-be6bcu-UA-2017-10-03-003060-b 3c704bdfdd28480fb4e911421286a617 \n",
"239783 ocds-be6bcu-UA-2017-08-18-000042-b e6afc81646a9450db9907bbeb8aba128 \n",
"239784 ocds-be6bcu-UA-2017-05-24-000503-c 3f6a58eb251b455d898fc03bedc6d051 \n",
"239785 ocds-be6bcu-UA-2017-07-28-000129-c fd307b9472864c038d547e25b27b775f \n",
"239786 ocds-be6bcu-UA-2015-11-03-000066 c7b450d7319e420f93e2bb45f4598a15 \n",
"239787 ocds-be6bcu-UA-2017-06-07-001399-b 2911eb15d4994293b8cef86fc1355d4c \n",
"239788 ocds-be6bcu-UA-2016-11-18-001238-c 5fbb43c722f449a8b05d93b03053ac9b \n",
"239789 ocds-be6bcu-UA-2018-02-08-002704-a ec6aaaf670fe41e7a341f980e4ba8619 \n",
"239790 ocds-be6bcu-UA-2017-12-13-000046-a c30689b9e7e448bb80750757c78368b5 \n",
"239791 ocds-be6bcu-UA-2018-01-30-002530-c 38c72d1525454b069c5b2223a4972607 \n",
"239792 ocds-be6bcu-UA-2018-04-06-000524-c 4c79d6cb7247448bbc41ab3e197450d9 \n",
"239793 ocds-be6bcu-UA-2016-08-03-000236-c 3205b8a64b37488089f733ae92be7a96 \n",
"239794 ocds-be6bcu-UA-2016-11-08-000787-a d53142379efe4928a7de0f20ee221954 \n",
"239795 ocds-be6bcu-UA-2017-09-04-000969-b 720d405bf51f44c2827120ca1a9eea4a \n",
"239796 ocds-be6bcu-UA-2017-07-03-002097-b 133336c2c2124bd5ab846a86db3665f5 \n",
"\n",
" datesigned period \n",
"0 None None \n",
"1 None None \n",
"2 None None \n",
"3 None None \n",
"4 None None \n",
"5 None None \n",
"6 None None \n",
"7 None None \n",
"8 None None \n",
"9 None None \n",
"10 None None \n",
"11 None None \n",
"12 None None \n",
"13 None None \n",
"14 None None \n",
"15 None None \n",
"16 None None \n",
"17 None None \n",
"18 None None \n",
"19 None None \n",
"20 None None \n",
"21 None None \n",
"22 None None \n",
"23 None None \n",
"24 None None \n",
"25 None None \n",
"26 None None \n",
"27 None None \n",
"28 None None \n",
"29 None None \n",
"... ... ... \n",
"239767 None None \n",
"239768 None None \n",
"239769 None None \n",
"239770 None None \n",
"239771 None None \n",
"239772 None None \n",
"239773 None None \n",
"239774 None None \n",
"239775 None None \n",
"239776 None None \n",
"239777 None None \n",
"239778 None None \n",
"239779 None None \n",
"239780 None None \n",
"239781 None None \n",
"239782 None None \n",
"239783 None None \n",
"239784 None None \n",
"239785 None None \n",
"239786 None None \n",
"239787 None None \n",
"239788 None None \n",
"239789 None None \n",
"239790 None None \n",
"239791 None None \n",
"239792 None None \n",
"239793 None None \n",
"239794 None None \n",
"239795 None None \n",
"239796 None None \n",
"\n",
"[239797 rows x 4 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 19
}
]
},
{
"metadata": {
"id": "TTLyjULcadg1",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"In total, 239,797 out of 1,608,301 contracts are incomplete because they do not provide date information (~15%).\n",
"\n",
"We already know that there are contracts with missing values, but let's run the query again to have the `ocid`s of the releases involved:"
]
},
{
"metadata": {
"id": "wcyfItMcda_U",
"colab_type": "code",
"outputId": "c189da2a-3f4f-49e8-b47a-2cb76a9b14f5",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1969
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT\n",
" data ->> 'ocid' AS ocid,\n",
" contracts ->> 'id' AS contractId,\n",
" contracts -> 'value' AS value\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'contracts') AS contracts\n",
" WHERE\n",
" data -> 'tag' ? 'contract'\n",
" AND\n",
" (\n",
" contracts -> 'value' IS NULL\n",
" OR\n",
" contracts -> 'value' ->> 'currency' IS NULL\n",
" OR\n",
" contracts -> 'value' ->> 'amount' IS NULL\n",
" OR\n",
" contracts -> 'value' ->> 'currency' = ''\n",
" OR\n",
" contracts -> 'value' ->> 'amount' = ''\n",
" OR\n",
" (contracts -> 'value' ->> 'amount')::decimal = 0.0\n",
" )\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"values_results = getResults(cur)\n",
"\n",
"values_results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ocid</th>\n",
" <th>contractid</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>ocds-be6bcu-UA-2016-03-04-000193-c</td>\n",
" <td>5dcdf25ef2a243978c57548d1e1b182f</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>ocds-be6bcu-UA-2016-03-15-000313-c</td>\n",
" <td>49eca20ea9cb4a4c93ad337021ca0b70</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>ocds-be6bcu-UA-2015-05-28-000030</td>\n",
" <td>2e0fdd5ea3fd45e4b43461d08180e54a</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>ocds-be6bcu-UA-2015-06-17-000020</td>\n",
" <td>85ae93f77c8a4fb5815a21abaeceb093</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>ocds-be6bcu-UA-2016-02-12-000224-b</td>\n",
" <td>779e0fd34ade4f7b928c742f76294898</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>ocds-be6bcu-UA-2016-02-16-000148-c</td>\n",
" <td>f13e7e2323bd4d199d440d7d45c0d9dc</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>ocds-be6bcu-UA-2016-02-10-000068-b</td>\n",
" <td>dfbfc3c7239d477a94556f5b00ffcb00</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>ocds-be6bcu-UA-2016-03-17-000160-c</td>\n",
" <td>7201057ea716447f96e8b545423ffd05</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>ocds-be6bcu-UA-2015-10-23-000095</td>\n",
" <td>f2c1399434754b3cb3e72071b9a1c280</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>ocds-be6bcu-UA-2015-11-30-000166-b</td>\n",
" <td>a9c6cb4082494a448278dcea2bab73a1</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>ocds-be6bcu-UA-2015-10-08-000116</td>\n",
" <td>fcb58fc73b284bb4b6714016fa01619f</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>ocds-be6bcu-UA-2016-02-24-000110-b</td>\n",
" <td>43e73c2628e54afba38dafb901a43b78</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>ocds-be6bcu-UA-2016-03-17-000091-b</td>\n",
" <td>0725627fba4c41d5a7b5803518ed84de</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>ocds-be6bcu-UA-2015-11-27-000038-b</td>\n",
" <td>5ea0d183319a4f1e9ce9e7ff2954baf3</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>ocds-be6bcu-UA-2015-08-05-000085</td>\n",
" <td>248fe37a00d34a379280dc69aa687941</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>ocds-be6bcu-UA-2015-11-19-000071-b</td>\n",
" <td>de8aa55c4bc949eb8b1ec907386a1727</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>ocds-be6bcu-UA-2016-03-03-000150-c</td>\n",
" <td>38c44f2cc2c942f6bfaf2d99ac5a7689</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>ocds-be6bcu-UA-2015-09-01-000062</td>\n",
" <td>684344ca45524878828e2a48771d6aee</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>ocds-be6bcu-UA-2016-01-20-000187-a</td>\n",
" <td>6eaa5ffa761a4461b9960aabaed43d3d</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>ocds-be6bcu-UA-2016-03-16-000182-c</td>\n",
" <td>dfe00c606eb147159c18e046aba14792</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>ocds-be6bcu-UA-2015-08-04-000072</td>\n",
" <td>3797e46893d44aafa6484b3f8f5b9980</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>ocds-be6bcu-UA-2015-06-03-000033</td>\n",
" <td>ef238fa2436349378d040fd7117c5b95</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>ocds-be6bcu-UA-2016-02-22-000035-b</td>\n",
" <td>8cc6cbf5c32940079f5ed9606d077a89</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>ocds-be6bcu-UA-2015-11-26-000122-a</td>\n",
" <td>87a0734c4ade469fa1a85e039acf20b9</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>ocds-be6bcu-UA-2016-03-09-000277-c</td>\n",
" <td>4881e9fbd1cd41efa3866f510634fbe7</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>ocds-be6bcu-UA-2016-03-16-000289-c</td>\n",
" <td>1b51359206f14881805c24db33d680d3</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>ocds-be6bcu-UA-2015-12-04-000061-b</td>\n",
" <td>a99d017972b84378865bb96015873620</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>ocds-be6bcu-UA-2016-03-03-000166-a</td>\n",
" <td>7215f6b34e9d40eb959ff16639a9afd4</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>ocds-be6bcu-UA-2016-03-16-000150-b</td>\n",
" <td>d00e65f2bf6f4df1b681d292e1a13cc4</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>ocds-be6bcu-UA-2015-12-03-000119</td>\n",
" <td>73ec44d19bc9425bb5c6f40391487648</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43145</th>\n",
" <td>ocds-be6bcu-UA-2015-12-13-000005-a</td>\n",
" <td>d325c422ff1e4e4d8f16774f5fadf7e1</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43146</th>\n",
" <td>ocds-be6bcu-UA-2016-03-10-000302-b</td>\n",
" <td>1fb3206dedb14df1ae39008051ed7916</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43147</th>\n",
" <td>ocds-be6bcu-UA-2016-02-17-000081-c</td>\n",
" <td>faa8fa3c4de14c8ca3fe9d867a372f89</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43148</th>\n",
" <td>ocds-be6bcu-UA-2015-11-17-000026-b</td>\n",
" <td>24c8cfa60f5d418a92638849999ea92e</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43149</th>\n",
" <td>ocds-be6bcu-UA-2016-01-19-000091-a</td>\n",
" <td>c44c52063ce0411f8621863f0c9febca</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43150</th>\n",
" <td>ocds-be6bcu-UA-2015-11-27-000118-b</td>\n",
" <td>cb27d163be3b44a0bc2ba9994b839967</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43151</th>\n",
" <td>ocds-be6bcu-UA-2016-01-26-000009-b</td>\n",
" <td>ada20bc4b989412f82ebdbcb6c6a684c</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43152</th>\n",
" <td>ocds-be6bcu-UA-2016-01-26-000009-b</td>\n",
" <td>5d555d43791f4dc293eafce9e339106a</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43153</th>\n",
" <td>ocds-be6bcu-UA-2016-02-23-000272-b</td>\n",
" <td>4983cd92867c4f479812ccb881309ff8</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43154</th>\n",
" <td>ocds-be6bcu-UA-2015-11-13-000096-b</td>\n",
" <td>9125db17d7e747358023c38379a4f8c8</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43155</th>\n",
" <td>ocds-be6bcu-UA-2016-03-21-000391-c</td>\n",
" <td>aba06e8de6b64526b8cf14f0539136eb</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43156</th>\n",
" <td>ocds-be6bcu-UA-2016-03-09-000131-b</td>\n",
" <td>08cec5c2d73f42ae93becacc38c66d5a</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43157</th>\n",
" <td>ocds-be6bcu-UA-2016-02-26-000255-b</td>\n",
" <td>0abaa760cec643a88a72fffd9d3768df</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43158</th>\n",
" <td>ocds-be6bcu-UA-2015-11-11-000120-b</td>\n",
" <td>b58b6d0eae0f4aebb0b19be2533b48ae</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43159</th>\n",
" <td>ocds-be6bcu-UA-2016-02-11-000025-c</td>\n",
" <td>7019b90e9e7b4fd3bf9a2852b0a67e3c</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43160</th>\n",
" <td>ocds-be6bcu-UA-2015-12-16-000037-a</td>\n",
" <td>cd758d0c56b743bd90bca090d5adce30</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43161</th>\n",
" <td>ocds-be6bcu-UA-2015-04-16-000019</td>\n",
" <td>33db80362aa04b65bd173a1f26b36557</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43162</th>\n",
" <td>ocds-be6bcu-UA-2015-11-26-000057-a</td>\n",
" <td>e6bb572822b3410fad93e9441746500c</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43163</th>\n",
" <td>ocds-be6bcu-UA-2015-12-03-000031</td>\n",
" <td>ba5138e0f0cf4e1fa7bc86f405a89d4d</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43164</th>\n",
" <td>ocds-be6bcu-UA-2015-11-24-000078-a</td>\n",
" <td>664c5e5176184234882d28398de70465</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43165</th>\n",
" <td>ocds-be6bcu-UA-2016-02-09-000130-a</td>\n",
" <td>8ef44c2bfee149a3bb2f0f037b7a43d4</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43166</th>\n",
" <td>ocds-be6bcu-UA-2016-03-15-000241-c</td>\n",
" <td>1b4a9969f6ca4e7ab942b0be061748b9</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43167</th>\n",
" <td>ocds-be6bcu-UA-2016-02-08-000175-a</td>\n",
" <td>c80ffce118cd41cb85110a72226ed736</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43168</th>\n",
" <td>ocds-be6bcu-UA-2015-10-08-000226</td>\n",
" <td>110ac23f5b4d4a15ae7fc1c201eb8db0</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43169</th>\n",
" <td>ocds-be6bcu-UA-2015-11-30-000052-a</td>\n",
" <td>8df8fdfe1acd4d819ef88cdef9690bd3</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43170</th>\n",
" <td>ocds-be6bcu-UA-2015-12-15-000030-b</td>\n",
" <td>e8814f10266d45228edbdacc961900c4</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43171</th>\n",
" <td>ocds-be6bcu-UA-2015-09-10-000157</td>\n",
" <td>ade8591b44a040bebd8bbd12bb0b96c0</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43172</th>\n",
" <td>ocds-be6bcu-UA-2016-01-21-000042-b</td>\n",
" <td>862401f897044b75a0cb034621891c5d</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43173</th>\n",
" <td>ocds-be6bcu-UA-2016-02-09-000071-a</td>\n",
" <td>5a5d27c286904e228bd396e9c3e31a17</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43174</th>\n",
" <td>ocds-be6bcu-UA-2015-11-12-000150</td>\n",
" <td>1ac8c648538d4930918b0b0a1e884ef2</td>\n",
" <td>None</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>43175 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" ocid contractid \\\n",
"0 ocds-be6bcu-UA-2016-03-04-000193-c 5dcdf25ef2a243978c57548d1e1b182f \n",
"1 ocds-be6bcu-UA-2016-03-15-000313-c 49eca20ea9cb4a4c93ad337021ca0b70 \n",
"2 ocds-be6bcu-UA-2015-05-28-000030 2e0fdd5ea3fd45e4b43461d08180e54a \n",
"3 ocds-be6bcu-UA-2015-06-17-000020 85ae93f77c8a4fb5815a21abaeceb093 \n",
"4 ocds-be6bcu-UA-2016-02-12-000224-b 779e0fd34ade4f7b928c742f76294898 \n",
"5 ocds-be6bcu-UA-2016-02-16-000148-c f13e7e2323bd4d199d440d7d45c0d9dc \n",
"6 ocds-be6bcu-UA-2016-02-10-000068-b dfbfc3c7239d477a94556f5b00ffcb00 \n",
"7 ocds-be6bcu-UA-2016-03-17-000160-c 7201057ea716447f96e8b545423ffd05 \n",
"8 ocds-be6bcu-UA-2015-10-23-000095 f2c1399434754b3cb3e72071b9a1c280 \n",
"9 ocds-be6bcu-UA-2015-11-30-000166-b a9c6cb4082494a448278dcea2bab73a1 \n",
"10 ocds-be6bcu-UA-2015-10-08-000116 fcb58fc73b284bb4b6714016fa01619f \n",
"11 ocds-be6bcu-UA-2016-02-24-000110-b 43e73c2628e54afba38dafb901a43b78 \n",
"12 ocds-be6bcu-UA-2016-03-17-000091-b 0725627fba4c41d5a7b5803518ed84de \n",
"13 ocds-be6bcu-UA-2015-11-27-000038-b 5ea0d183319a4f1e9ce9e7ff2954baf3 \n",
"14 ocds-be6bcu-UA-2015-08-05-000085 248fe37a00d34a379280dc69aa687941 \n",
"15 ocds-be6bcu-UA-2015-11-19-000071-b de8aa55c4bc949eb8b1ec907386a1727 \n",
"16 ocds-be6bcu-UA-2016-03-03-000150-c 38c44f2cc2c942f6bfaf2d99ac5a7689 \n",
"17 ocds-be6bcu-UA-2015-09-01-000062 684344ca45524878828e2a48771d6aee \n",
"18 ocds-be6bcu-UA-2016-01-20-000187-a 6eaa5ffa761a4461b9960aabaed43d3d \n",
"19 ocds-be6bcu-UA-2016-03-16-000182-c dfe00c606eb147159c18e046aba14792 \n",
"20 ocds-be6bcu-UA-2015-08-04-000072 3797e46893d44aafa6484b3f8f5b9980 \n",
"21 ocds-be6bcu-UA-2015-06-03-000033 ef238fa2436349378d040fd7117c5b95 \n",
"22 ocds-be6bcu-UA-2016-02-22-000035-b 8cc6cbf5c32940079f5ed9606d077a89 \n",
"23 ocds-be6bcu-UA-2015-11-26-000122-a 87a0734c4ade469fa1a85e039acf20b9 \n",
"24 ocds-be6bcu-UA-2016-03-09-000277-c 4881e9fbd1cd41efa3866f510634fbe7 \n",
"25 ocds-be6bcu-UA-2016-03-16-000289-c 1b51359206f14881805c24db33d680d3 \n",
"26 ocds-be6bcu-UA-2015-12-04-000061-b a99d017972b84378865bb96015873620 \n",
"27 ocds-be6bcu-UA-2016-03-03-000166-a 7215f6b34e9d40eb959ff16639a9afd4 \n",
"28 ocds-be6bcu-UA-2016-03-16-000150-b d00e65f2bf6f4df1b681d292e1a13cc4 \n",
"29 ocds-be6bcu-UA-2015-12-03-000119 73ec44d19bc9425bb5c6f40391487648 \n",
"... ... ... \n",
"43145 ocds-be6bcu-UA-2015-12-13-000005-a d325c422ff1e4e4d8f16774f5fadf7e1 \n",
"43146 ocds-be6bcu-UA-2016-03-10-000302-b 1fb3206dedb14df1ae39008051ed7916 \n",
"43147 ocds-be6bcu-UA-2016-02-17-000081-c faa8fa3c4de14c8ca3fe9d867a372f89 \n",
"43148 ocds-be6bcu-UA-2015-11-17-000026-b 24c8cfa60f5d418a92638849999ea92e \n",
"43149 ocds-be6bcu-UA-2016-01-19-000091-a c44c52063ce0411f8621863f0c9febca \n",
"43150 ocds-be6bcu-UA-2015-11-27-000118-b cb27d163be3b44a0bc2ba9994b839967 \n",
"43151 ocds-be6bcu-UA-2016-01-26-000009-b ada20bc4b989412f82ebdbcb6c6a684c \n",
"43152 ocds-be6bcu-UA-2016-01-26-000009-b 5d555d43791f4dc293eafce9e339106a \n",
"43153 ocds-be6bcu-UA-2016-02-23-000272-b 4983cd92867c4f479812ccb881309ff8 \n",
"43154 ocds-be6bcu-UA-2015-11-13-000096-b 9125db17d7e747358023c38379a4f8c8 \n",
"43155 ocds-be6bcu-UA-2016-03-21-000391-c aba06e8de6b64526b8cf14f0539136eb \n",
"43156 ocds-be6bcu-UA-2016-03-09-000131-b 08cec5c2d73f42ae93becacc38c66d5a \n",
"43157 ocds-be6bcu-UA-2016-02-26-000255-b 0abaa760cec643a88a72fffd9d3768df \n",
"43158 ocds-be6bcu-UA-2015-11-11-000120-b b58b6d0eae0f4aebb0b19be2533b48ae \n",
"43159 ocds-be6bcu-UA-2016-02-11-000025-c 7019b90e9e7b4fd3bf9a2852b0a67e3c \n",
"43160 ocds-be6bcu-UA-2015-12-16-000037-a cd758d0c56b743bd90bca090d5adce30 \n",
"43161 ocds-be6bcu-UA-2015-04-16-000019 33db80362aa04b65bd173a1f26b36557 \n",
"43162 ocds-be6bcu-UA-2015-11-26-000057-a e6bb572822b3410fad93e9441746500c \n",
"43163 ocds-be6bcu-UA-2015-12-03-000031 ba5138e0f0cf4e1fa7bc86f405a89d4d \n",
"43164 ocds-be6bcu-UA-2015-11-24-000078-a 664c5e5176184234882d28398de70465 \n",
"43165 ocds-be6bcu-UA-2016-02-09-000130-a 8ef44c2bfee149a3bb2f0f037b7a43d4 \n",
"43166 ocds-be6bcu-UA-2016-03-15-000241-c 1b4a9969f6ca4e7ab942b0be061748b9 \n",
"43167 ocds-be6bcu-UA-2016-02-08-000175-a c80ffce118cd41cb85110a72226ed736 \n",
"43168 ocds-be6bcu-UA-2015-10-08-000226 110ac23f5b4d4a15ae7fc1c201eb8db0 \n",
"43169 ocds-be6bcu-UA-2015-11-30-000052-a 8df8fdfe1acd4d819ef88cdef9690bd3 \n",
"43170 ocds-be6bcu-UA-2015-12-15-000030-b e8814f10266d45228edbdacc961900c4 \n",
"43171 ocds-be6bcu-UA-2015-09-10-000157 ade8591b44a040bebd8bbd12bb0b96c0 \n",
"43172 ocds-be6bcu-UA-2016-01-21-000042-b 862401f897044b75a0cb034621891c5d \n",
"43173 ocds-be6bcu-UA-2016-02-09-000071-a 5a5d27c286904e228bd396e9c3e31a17 \n",
"43174 ocds-be6bcu-UA-2015-11-12-000150 1ac8c648538d4930918b0b0a1e884ef2 \n",
"\n",
" value \n",
"0 None \n",
"1 None \n",
"2 None \n",
"3 None \n",
"4 None \n",
"5 None \n",
"6 None \n",
"7 None \n",
"8 None \n",
"9 None \n",
"10 None \n",
"11 None \n",
"12 None \n",
"13 None \n",
"14 None \n",
"15 None \n",
"16 None \n",
"17 None \n",
"18 None \n",
"19 None \n",
"20 None \n",
"21 None \n",
"22 None \n",
"23 None \n",
"24 None \n",
"25 None \n",
"26 None \n",
"27 None \n",
"28 None \n",
"29 None \n",
"... ... \n",
"43145 None \n",
"43146 None \n",
"43147 None \n",
"43148 None \n",
"43149 None \n",
"43150 None \n",
"43151 None \n",
"43152 None \n",
"43153 None \n",
"43154 None \n",
"43155 None \n",
"43156 None \n",
"43157 None \n",
"43158 None \n",
"43159 None \n",
"43160 None \n",
"43161 None \n",
"43162 None \n",
"43163 None \n",
"43164 None \n",
"43165 None \n",
"43166 None \n",
"43167 None \n",
"43168 None \n",
"43169 None \n",
"43170 None \n",
"43171 None \n",
"43172 None \n",
"43173 None \n",
"43174 None \n",
"\n",
"[43175 rows x 3 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 16
}
]
},
{
"metadata": {
"id": "j2QVSTHRKe3z",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"43,175 contracts out of 1,608,301 (**~2.7%**) have missing value information.\n",
"\n",
"Last, let's check the items of the contract. OCDS states that item information should be included in the `awards` section and they should not be repeated in the `contracts` section unless there are modifications, so we will look for items into the `awards` section."
]
},
{
"metadata": {
"id": "1PKGmMDRMaTA",
"colab_type": "code",
"outputId": "6e4f2465-1a5c-4bdc-dcf0-85e71d2a329b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1969
}
},
"cell_type": "code",
"source": [
"querystring = base_querystring + \"\"\"\n",
" \n",
" SELECT DISTINCT\n",
" data ->> 'ocid' AS ocid,\n",
" contracts ->> 'id' AS contractId\n",
" FROM\n",
" releases\n",
" CROSS JOIN\n",
" jsonb_array_elements(data -> 'awards') AS awards\n",
" JOIN\n",
" jsonb_array_elements(data -> 'contracts') AS contracts\n",
" ON\n",
" contracts ->> 'awardID' = awards ->> 'id'\n",
" WHERE\n",
" data -> 'tag' ? 'award'\n",
" AND\n",
" (\n",
" awards -> 'items' IS NULL\n",
" OR\n",
" jsonb_array_length(awards -> 'items') < 1\n",
" )\n",
"\"\"\"\n",
"\n",
"cur.execute(\"\"\"rollback\"\"\")\n",
"\n",
"cur.execute(querystring)\n",
"\n",
"items_results = getResults(cur)\n",
"\n",
"items_results"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ocid</th>\n",
" <th>contractid</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>ocds-be6bcu-UA-2017-01-20-001809-b</td>\n",
" <td>b385f86fd83e45839137e4fbed186085</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>ocds-be6bcu-UA-2017-04-13-001852-b</td>\n",
" <td>e2799a42c19a46b883de4ded34b1cee7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>ocds-be6bcu-UA-2017-03-21-001196-b</td>\n",
" <td>4c6a25b6ac1d468ea22a4b8829437368</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>ocds-be6bcu-UA-2017-02-02-000673-a</td>\n",
" <td>301052e9340148b3b96ba7b70e8e3f42</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>ocds-be6bcu-UA-2016-12-15-000296-b</td>\n",
" <td>943c63f0885e4277ac33d1591c6e6fec</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>ocds-be6bcu-UA-2017-04-18-000688-b</td>\n",
" <td>269eb19c9b5b4391a5aecff6194edaf3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>ocds-be6bcu-UA-2017-03-14-000287-a</td>\n",
" <td>a10011e0549e4f2c8ffb54ba71211d83</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>ocds-be6bcu-UA-2016-11-09-000589-b</td>\n",
" <td>d7b004e837ee402fb0295f1ef799b5be</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>ocds-be6bcu-UA-2017-03-24-001804-b</td>\n",
" <td>157c54036b9e47779411ff52d5b8518d</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>ocds-be6bcu-UA-2016-12-26-000983-c</td>\n",
" <td>a76dda47f48f436f9f9d3cb3ade5d95c</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>ocds-be6bcu-UA-2016-08-15-000245-c</td>\n",
" <td>ddff0aa426654e35a806ed48079e5292</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>ocds-be6bcu-UA-2017-02-02-000673-a</td>\n",
" <td>99e7e843c550477db2ae601875e4984d</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>ocds-be6bcu-UA-2017-02-10-002290-c</td>\n",
" <td>ce8a0ac4f3d54ca19e88bad386dc8615</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>ocds-be6bcu-UA-2017-03-03-000198-c</td>\n",
" <td>eeb674fa8b9e4df794c56b5a4c143cf8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>ocds-be6bcu-UA-2017-02-28-000035-a</td>\n",
" <td>97737d3278f84f5190a306fbcaa7933c</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>ocds-be6bcu-UA-2017-03-14-000287-a</td>\n",
" <td>9a2a165a0530497ba3792441d733e1fc</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>ocds-be6bcu-UA-2017-01-30-000876-b</td>\n",
" <td>5c6bd86bf57e4e7fa328785b7696d7f2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>ocds-be6bcu-UA-2017-02-13-000318-c</td>\n",
" <td>0cf6fca2a84f4e5f934c35d37261b739</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>ocds-be6bcu-UA-2017-02-15-002439-c</td>\n",
" <td>4e553edf776c459fad145e0841360050</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>ocds-be6bcu-UA-2017-01-18-000552-a</td>\n",
" <td>dec2528e94e04f57b70c2f8648f69147</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>ocds-be6bcu-UA-2017-02-08-000307-c</td>\n",
" <td>95337c827e9b40389eba916bbbcc300a</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>ocds-be6bcu-UA-2017-04-03-000470-b</td>\n",
" <td>84f856ec4ba4464585939620c8ac0063</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>ocds-be6bcu-UA-2017-01-18-000552-a</td>\n",
" <td>6b80734e7a6a496d8f708b95cb6ac45a</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>ocds-be6bcu-UA-2017-03-03-000198-c</td>\n",
" <td>2e03efe758ba4ae08f2d02c0279b8fe3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>ocds-be6bcu-UA-2016-12-28-000704-c</td>\n",
" <td>4619bbf60cb24e189b6c784ad8d7d6ab</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>ocds-be6bcu-UA-2017-02-02-000673-a</td>\n",
" <td>e79db7cf2b9b4708982adcb91fd6c932</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>ocds-be6bcu-UA-2017-02-24-000870-a</td>\n",
" <td>db319800f3d14966a14534f786c98f1c</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>ocds-be6bcu-UA-2017-01-22-000053-b</td>\n",
" <td>3d598f427c1c4ba69ce055904370b251</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>ocds-be6bcu-UA-2017-01-04-000038-c</td>\n",
" <td>3127f07b2490487a942a52f3ea4580c2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>ocds-be6bcu-UA-2017-01-18-000552-a</td>\n",
" <td>59a14c33ae4743f29fa3e7f1d083fd7d</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>ocds-be6bcu-UA-2017-01-31-002788-b</td>\n",
" <td>ef2983ad5e594f618adfb4cee71ee560</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>ocds-be6bcu-UA-2017-03-14-000287-a</td>\n",
" <td>4461a9e920a84d44a603a2c493c8ea55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>ocds-be6bcu-UA-2017-04-10-000104-b</td>\n",
" <td>e8ed5c6c7b5940d2a63e801aad9c9780</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>ocds-be6bcu-UA-2017-03-14-000287-a</td>\n",
" <td>bbd0224a901c456ebcf91b56c92cc364</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>ocds-be6bcu-UA-2017-02-13-000318-c</td>\n",
" <td>49af32b19d9c429cb22f16ccf174fe0c</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>ocds-be6bcu-UA-2017-02-07-001040-c</td>\n",
" <td>0c7bc66525164b1e823c49567e2f57d0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>ocds-be6bcu-UA-2017-02-01-001739-b</td>\n",
" <td>93ae64dd997947fda776127622fb2415</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>ocds-be6bcu-UA-2017-03-29-002018-b</td>\n",
" <td>5389a2bbb2d04d488c4a0b59fc2991b3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>ocds-be6bcu-UA-2017-01-05-000374-c</td>\n",
" <td>80a6a21fa6a44dbb9229ae2f2b4f63bf</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>ocds-be6bcu-UA-2017-04-03-000431-b</td>\n",
" <td>353ef5a1aeb34a7297a16a84c8e1a5fc</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>ocds-be6bcu-UA-2016-12-28-000704-c</td>\n",
" <td>b55736b9b9f94c3ba90f3311717723a0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>65</th>\n",
" <td>ocds-be6bcu-UA-2017-01-26-000640-b</td>\n",
" <td>2c39d93f574f4c658b6efaa1ebe72ad3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>ocds-be6bcu-UA-2017-01-20-000827-a</td>\n",
" <td>cb786731e31a4f51910c58a42891d253</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>ocds-be6bcu-UA-2016-12-26-000983-c</td>\n",
" <td>d99319497b394e27be846a593a7b1358</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>ocds-be6bcu-UA-2017-02-05-000020-b</td>\n",
" <td>c61eb2581aac45ebba8cf3740159adfe</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>ocds-be6bcu-UA-2017-03-22-000444-b</td>\n",
" <td>7868a3e8148548ab828b533e061b8057</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>ocds-be6bcu-UA-2017-03-14-000287-a</td>\n",
" <td>d1608c948b2b43be8c9147ffc6b0b42e</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>ocds-be6bcu-UA-2017-02-16-001897-c</td>\n",
" <td>a60b2286a2b34272827d837af60d64f5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>ocds-be6bcu-UA-2017-08-30-000763-b</td>\n",
" <td>2c4c2f8740c04048a9c4ee56dbba7eb7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>ocds-be6bcu-UA-2017-01-18-000552-a</td>\n",
" <td>c55b6bfc04bc418cbd9f6d815d44dd3d</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>ocds-be6bcu-UA-2017-01-18-000552-a</td>\n",
" <td>88acd872596444218a0a1ac6b917f7aa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>ocds-be6bcu-UA-2017-02-14-001654-c</td>\n",
" <td>c691236fb4284db58c193f40805f9fb5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>ocds-be6bcu-UA-2016-12-15-000296-b</td>\n",
" <td>7fa505cadec64f0990d79bd008443837</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>ocds-be6bcu-UA-2017-02-24-000703-c</td>\n",
" <td>0f5b7c60c8d04fc09a823b01a7445654</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>ocds-be6bcu-UA-2017-01-18-000552-a</td>\n",
" <td>0fc7ff2bb63c4d1ba5bafbf162694405</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>ocds-be6bcu-UA-2016-12-26-000983-c</td>\n",
" <td>956f93a5302341de9661661521df3e6c</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>ocds-be6bcu-UA-2017-01-18-000552-a</td>\n",
" <td>0a622dd385694c6da386e2716000c676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>ocds-be6bcu-UA-2016-11-29-001211-c</td>\n",
" <td>dd54fa1b2d144114aa76225af810386a</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>ocds-be6bcu-UA-2017-03-14-000287-a</td>\n",
" <td>c8d29d9afa0f438f96acbbef5248b370</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>ocds-be6bcu-UA-2016-07-20-000434-a</td>\n",
" <td>681b6a79d5a04d4b844adf2c83340532</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>84 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" ocid contractid\n",
"0 ocds-be6bcu-UA-2017-01-20-001809-b b385f86fd83e45839137e4fbed186085\n",
"1 ocds-be6bcu-UA-2017-04-13-001852-b e2799a42c19a46b883de4ded34b1cee7\n",
"2 ocds-be6bcu-UA-2017-03-21-001196-b 4c6a25b6ac1d468ea22a4b8829437368\n",
"3 ocds-be6bcu-UA-2017-02-02-000673-a 301052e9340148b3b96ba7b70e8e3f42\n",
"4 ocds-be6bcu-UA-2016-12-15-000296-b 943c63f0885e4277ac33d1591c6e6fec\n",
"5 ocds-be6bcu-UA-2017-04-18-000688-b 269eb19c9b5b4391a5aecff6194edaf3\n",
"6 ocds-be6bcu-UA-2017-03-14-000287-a a10011e0549e4f2c8ffb54ba71211d83\n",
"7 ocds-be6bcu-UA-2016-11-09-000589-b d7b004e837ee402fb0295f1ef799b5be\n",
"8 ocds-be6bcu-UA-2017-03-24-001804-b 157c54036b9e47779411ff52d5b8518d\n",
"9 ocds-be6bcu-UA-2016-12-26-000983-c a76dda47f48f436f9f9d3cb3ade5d95c\n",
"10 ocds-be6bcu-UA-2016-08-15-000245-c ddff0aa426654e35a806ed48079e5292\n",
"11 ocds-be6bcu-UA-2017-02-02-000673-a 99e7e843c550477db2ae601875e4984d\n",
"12 ocds-be6bcu-UA-2017-02-10-002290-c ce8a0ac4f3d54ca19e88bad386dc8615\n",
"13 ocds-be6bcu-UA-2017-03-03-000198-c eeb674fa8b9e4df794c56b5a4c143cf8\n",
"14 ocds-be6bcu-UA-2017-02-28-000035-a 97737d3278f84f5190a306fbcaa7933c\n",
"15 ocds-be6bcu-UA-2017-03-14-000287-a 9a2a165a0530497ba3792441d733e1fc\n",
"16 ocds-be6bcu-UA-2017-01-30-000876-b 5c6bd86bf57e4e7fa328785b7696d7f2\n",
"17 ocds-be6bcu-UA-2017-02-13-000318-c 0cf6fca2a84f4e5f934c35d37261b739\n",
"18 ocds-be6bcu-UA-2017-02-15-002439-c 4e553edf776c459fad145e0841360050\n",
"19 ocds-be6bcu-UA-2017-01-18-000552-a dec2528e94e04f57b70c2f8648f69147\n",
"20 ocds-be6bcu-UA-2017-02-08-000307-c 95337c827e9b40389eba916bbbcc300a\n",
"21 ocds-be6bcu-UA-2017-04-03-000470-b 84f856ec4ba4464585939620c8ac0063\n",
"22 ocds-be6bcu-UA-2017-01-18-000552-a 6b80734e7a6a496d8f708b95cb6ac45a\n",
"23 ocds-be6bcu-UA-2017-03-03-000198-c 2e03efe758ba4ae08f2d02c0279b8fe3\n",
"24 ocds-be6bcu-UA-2016-12-28-000704-c 4619bbf60cb24e189b6c784ad8d7d6ab\n",
"25 ocds-be6bcu-UA-2017-02-02-000673-a e79db7cf2b9b4708982adcb91fd6c932\n",
"26 ocds-be6bcu-UA-2017-02-24-000870-a db319800f3d14966a14534f786c98f1c\n",
"27 ocds-be6bcu-UA-2017-01-22-000053-b 3d598f427c1c4ba69ce055904370b251\n",
"28 ocds-be6bcu-UA-2017-01-04-000038-c 3127f07b2490487a942a52f3ea4580c2\n",
"29 ocds-be6bcu-UA-2017-01-18-000552-a 59a14c33ae4743f29fa3e7f1d083fd7d\n",
".. ... ...\n",
"54 ocds-be6bcu-UA-2017-01-31-002788-b ef2983ad5e594f618adfb4cee71ee560\n",
"55 ocds-be6bcu-UA-2017-03-14-000287-a 4461a9e920a84d44a603a2c493c8ea55\n",
"56 ocds-be6bcu-UA-2017-04-10-000104-b e8ed5c6c7b5940d2a63e801aad9c9780\n",
"57 ocds-be6bcu-UA-2017-03-14-000287-a bbd0224a901c456ebcf91b56c92cc364\n",
"58 ocds-be6bcu-UA-2017-02-13-000318-c 49af32b19d9c429cb22f16ccf174fe0c\n",
"59 ocds-be6bcu-UA-2017-02-07-001040-c 0c7bc66525164b1e823c49567e2f57d0\n",
"60 ocds-be6bcu-UA-2017-02-01-001739-b 93ae64dd997947fda776127622fb2415\n",
"61 ocds-be6bcu-UA-2017-03-29-002018-b 5389a2bbb2d04d488c4a0b59fc2991b3\n",
"62 ocds-be6bcu-UA-2017-01-05-000374-c 80a6a21fa6a44dbb9229ae2f2b4f63bf\n",
"63 ocds-be6bcu-UA-2017-04-03-000431-b 353ef5a1aeb34a7297a16a84c8e1a5fc\n",
"64 ocds-be6bcu-UA-2016-12-28-000704-c b55736b9b9f94c3ba90f3311717723a0\n",
"65 ocds-be6bcu-UA-2017-01-26-000640-b 2c39d93f574f4c658b6efaa1ebe72ad3\n",
"66 ocds-be6bcu-UA-2017-01-20-000827-a cb786731e31a4f51910c58a42891d253\n",
"67 ocds-be6bcu-UA-2016-12-26-000983-c d99319497b394e27be846a593a7b1358\n",
"68 ocds-be6bcu-UA-2017-02-05-000020-b c61eb2581aac45ebba8cf3740159adfe\n",
"69 ocds-be6bcu-UA-2017-03-22-000444-b 7868a3e8148548ab828b533e061b8057\n",
"70 ocds-be6bcu-UA-2017-03-14-000287-a d1608c948b2b43be8c9147ffc6b0b42e\n",
"71 ocds-be6bcu-UA-2017-02-16-001897-c a60b2286a2b34272827d837af60d64f5\n",
"72 ocds-be6bcu-UA-2017-08-30-000763-b 2c4c2f8740c04048a9c4ee56dbba7eb7\n",
"73 ocds-be6bcu-UA-2017-01-18-000552-a c55b6bfc04bc418cbd9f6d815d44dd3d\n",
"74 ocds-be6bcu-UA-2017-01-18-000552-a 88acd872596444218a0a1ac6b917f7aa\n",
"75 ocds-be6bcu-UA-2017-02-14-001654-c c691236fb4284db58c193f40805f9fb5\n",
"76 ocds-be6bcu-UA-2016-12-15-000296-b 7fa505cadec64f0990d79bd008443837\n",
"77 ocds-be6bcu-UA-2017-02-24-000703-c 0f5b7c60c8d04fc09a823b01a7445654\n",
"78 ocds-be6bcu-UA-2017-01-18-000552-a 0fc7ff2bb63c4d1ba5bafbf162694405\n",
"79 ocds-be6bcu-UA-2016-12-26-000983-c 956f93a5302341de9661661521df3e6c\n",
"80 ocds-be6bcu-UA-2017-01-18-000552-a 0a622dd385694c6da386e2716000c676\n",
"81 ocds-be6bcu-UA-2016-11-29-001211-c dd54fa1b2d144114aa76225af810386a\n",
"82 ocds-be6bcu-UA-2017-03-14-000287-a c8d29d9afa0f438f96acbbef5248b370\n",
"83 ocds-be6bcu-UA-2016-07-20-000434-a 681b6a79d5a04d4b844adf2c83340532\n",
"\n",
"[84 rows x 2 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 13
}
]
},
{
"metadata": {
"id": "aLJzzaZwNnZ9",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"As the case of award values, there are missing items for some awards, but the number is very low.\n",
"\n",
"To have a final share of the contracts with missing information, we will use Pandas methods over the variables in which we have being saving our data results from this section. Each of the variables include the `ocid`s and `id`s of the contracts with missing data, so to have a final count we only have to merge the rows and count the distinct values:"
]
},
{
"metadata": {
"id": "xs_J8lI1k8BX",
"colab_type": "code",
"outputId": "74f42512-dfbe-4f1b-9958-fc279f4fb74b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
}
},
"cell_type": "code",
"source": [
"len(pd.concat([dates_results[['ocid','contractid']], values_results[['ocid','contractid']], items_results]).drop_duplicates())"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"243410"
]
},
"metadata": {
"tags": []
},
"execution_count": 20
}
]
},
{
"metadata": {
"id": "iVBhK7vNn1bt",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"We have 243,410 contracts out of 1,608,301 (**~15%**) that have missing information."
]
},
{
"metadata": {
"id": "wfHzD-l-MRig",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"## Summary"
]
},
{
"metadata": {
"id": "ZS034e2WrVwK",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"The table below contains the calculated results for all the MAPS quantitative indicators.\n",
"\n",
"| # | Item | Result |\n",
"| -- | -- | --|\n",
"| 1 | Key Procurement Information published along the procurement cycle (in % of total number of contracts) | - |\n",
"| 1.1 | Invitation to bid (in % of total number of contracts) | 35.2%. |\n",
"| 1.2 |Contract awards: | - |\n",
"| | Purpose | 100% |\n",
"| | Supplier | 100% | \n",
"| | Value | ~100% | \n",
"| | Variations/amendments | 0% |\n",
"| 1.3 | Details related to contract implementation | - | \n",
"| | Milestones | 0% |\n",
"| | Completion | 0% | \n",
"| | Payment | 0% |\n",
"| 2 | Annual procurement statistics | See section 3.2 |\n",
"| 3 | Uptake of e-Procurement | - |\n",
"| 3.1 |Number of e-Procurement procedures in % of total number of procedures | 44.7% |\n",
"| 3.2 | Value of e-Procurement procedures in % of total value of procedures | 31% |\n",
"| 4 | Total Number of Contracts | 1,567,032 |\n",
"| 5 |Total Value of Contracts | 1,533,897,581,628 UAH. |\n",
"| 6 | Public procurement: | - | \n",
"| | As a share of government expenditure | 69% | \n",
"| | As share of GDP | 28% |\n",
"| 7 |Total value of contracts awarded through competitive methods in the most recent fiscal year | 311,917,936,223 UAH |\n",
"| 8 | Share of contracts with complete ~~and accurate~~ records and databases (in %) | ~85%|\n",
"\n",
"As we have seen in here, MAPS quantitative indicators can be calculated by using OCDS data. But there are some things open to interpretation, like the value of procurement procedures: we used contracting values, but tendering and award values might be used as well if we want to include as many procurement procedures as possible. \n",
"\n",
"Having knowledge of how OCDS fields are filled is a good an advantage. In the case of indicator 1.1, we saw that procurement system's knowledge may be decisive to use the correct fields for calculations.\n",
"\n",
"Completeness of the OCDS fields is important as well. Here we missed the opportunity to calculate parts of indicators because there is no contract implementation information available.\n",
"\n",
"As an ending note, we can point that the queries made here were simpler than they should be because of the updating of releases as explained in section 2.2. In the case of having proper releases, a good option would be to calculate the final state of each procurement process and save it in an additional table."
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment