TED (Tenders Electronic Daily) ist die Online -Version des "Ergänzung zum offiziellen Journal" der EU, der sich der europäischen öffentlichen Beschaffung widmet.
TED bietet freien Zugang zu Bekanntmachungen für öffentliche Beschaffungen von Vertragsbehörden in der Europäischen Union und im Europäischen Wirtschaftsbereich (auch wenn sie in einem anderen Land Dienstleistungen anbieten).
Die TED -Website bietet derzeit Bulk -Downloads von XML -Paketen aus dem Jahr 1993, die auf der FTP ftp://ted.europa.eu/ zugänglich sind mit generischen Anmeldeinformationen (Gast/Gast).
Dieses Repo enthält Scrips zum Extrahieren und Analyse von TED -Vertragsverzeichnisbenachrichtigungen , dh den Ergebnissen des Beschaffungsverfahrens. Die Skripte wurden vollständig getestet, um alle Vertragspreis -Mitteilungen für 2014, 2015 und 2016 zu extrahieren. Dokumente werden als Python -Wörterbücher extrahiert, die in einer MongoDB -Datenbank für das einfache Abrufen gespeichert oder weiter normalisiert werden können, um in CSVs konvertiert zu werden.
Das Bild unten zeigt ein Beispiel für das Dokument, wie auf der TED -Website gezeigt.

Ein Beispiel für extrahierte Daten (aus demselben Dokument oben):
{
'DOC_ID': '466898-2016',
'CODED_DATA': {
'NOTICE_DATA': {
'IA_URL_GENERAL': 'www.ekz.ch',
'ISO_COUNTRY': 'CH',
'NO_DOC_OJS': '2016/S 253-466898',
'ORIGINAL_CPV': ['79970000'],
'REF_NOTICE': ['2016/S 172-310484']
},
'CODIF_DATA': {
'AA_AUTHORITY_TYPE': '4',
'AC_AWARD_CRIT': 'Z',
'DS_DATE_DISPATCH': '20161230',
'MA_MAIN_ACTIVITIES': ['Z'],
'NC_CONTRACT_NATURE': '4',
'PR_PROC': '2',
'RP_REGULATION': '7',
'TD_DOCUMENT_TYPE': '7',
'TY_TYPE_BID': '9'
}
},
'CONTRACT': {
'OTH_NOT': 'NO',
'CONTRACTING_AUTHORITY': 'Elektrizitätswerke des Kantons Zürich',
'CONTRACT_OBJECT': {
'CONCLUSION_FRAMEWORK_AGREEMENT': 'NO',
'CONTRACTS_DPS': 'NO',
'CONTRACT_COVERED_GPA': 'YES',
'CPV_MAIN': '79970000'
}
},
'AWARDS_OF_CONTRACT': [
{
'CONTRACTOR': {
'ADDRESS': 'Mühlebachstraße 52',
'COUNTRY': 'CH',
'OFFICIALNAME': 'Linkgroup AG',
'POSTAL_CODE': '8008',
'TOWN': 'Zürich'
},
'CONTRACT_VALUE': {
'COST': {
'CURRENCY': 'CHF',
'VALUE': 700000.0
}
}
}
]
}
Felder und Beschreibung der extrahierten Daten
| Feld | Datentyp | Beschreibung |
|---|---|---|
| Doc_id | Saite | Eindeutige Dokumentnummer in Ted. |
Der Abschnitt coded_data ist in 2 Datengruppen geteilt.
| Feld | Datentyp | Beschreibung |
|---|---|---|
| NO_DOC_OJS | Saite | Mitteilungsnummer in Ted |
| Original_nuts | Liste (Zeichenfolge) | Region Code (en) des Platzes oder Lieferortes. Ein 2-5-stelliger Code der Nomenklatur von Territorialeinheiten für Statistiken . Suchwerte für die ersten beiden Ziffern: iso_country.csv |
| Original_cpv | Liste (Zeichenfolge) | Produkt oder Service 8 -Ziffern -Code (n) des gemeinsamen Beschaffungsvokabulars . Suchwerte für die ersten beiden Ziffern: cpv.csv |
| Iso_country | Saite | 2-Charakter-ISO-Code des Landes, in dem sich die Vertragsbehörde befindet. Suchwerte: iso_country.csv |
| Ia_url_general | Saite | Haupt -Internetadresse (URL) der Vertragskörperschaft |
| Ref_Notice | Liste (Zeichenfolge) | Referenzbekanntmachungsnummer in TED. Verweisen Sie auf eine frühere Veröffentlichung (Vorinformationen, Corrigendum, ...) |
| Values_list | Gesamtwert | Geschätzter Gesamtwert (en) oder Gesamtschlendwert der Beschaffung |
Values_list kann aus den folgenden Feldern bestehen:
| Feld | Datentyp | Beschreibung |
|---|---|---|
| Global_value | Wert | Der Gesamtwert des Angebots. Sollte der Summe in Contracts_Value -Liste entsprechen |
| Contracts_Value | Liste (Wert) | Einzelpreiswert. Dies geschieht, wenn der Vertrag aus mehreren Teilen oder Lose besteht. |
Jeder Wert kann einzelner oder Bereichswert sein und den Mehrwertsteuerprozentsatz haben
| Feld | Datentyp | Beschreibung |
|---|---|---|
| WÄHRUNG | Saite | Wertwährung |
| WERT | Schweben | Wert |
| VAT_PRCT | Int | Mehrwertsteueranteil |
| Feld | Datentyp | Beschreibung |
|---|---|---|
| WÄHRUNG | Saite | Wertwährung |
| LOW_VALUE | Schweben | Niedrigerer Wert des Bereichs |
| High_Value | Schweben | Höherer Wert des Bereichs |
| VAT_PRCT | Int | Mehrwertsteueranteil |
| Feld | Datentyp | Beschreibung |
|---|---|---|
| Ds_date_dispatch | Saite | Datum der Versand der Mitteilung. Format: yjyymmdd |
| Td_document_type | Saite | Art des Dokuments. Suchwerte: td_document_type.csv |
| Aa_authority_type | Saite | Art der Vergabebehörde. Suchwerte: aa_authority_type.csv |
| Nc_contract_nature | Saite | Art des Vertrags. Suchwerte: nc_contract_nature.csv |
| PR_PROC | Saite | Art des Verfahrens. Suchwerte: pr_proc.csv |
| RP_regulation | Saite | Die Regulierung, die für das Verfahren gilt. Suchwerte: rp_regulation.csv |
| Ty_type_bid | Saite | Art des Gebots. Suchwerte: ty_type_bid.csv |
| AC_AWARD_CRIT | Saite | Art der Vergabe von Kriterien. Suchwerte: ac_award_crit.csv |
| Ma_main_aktivitäten | Liste (Zeichenfolge) | Hauptaktivität der Vertragskörper. Suchwerte: ma_main_Activities.csv |
Der Vertragsabschnitt enthält die Mitteilung selbst im XML -Format. In der ursprünglichen XML -Datei kann dieser Abschnitt in verschiedenen Übersetzungen verfügbar sein, bis zu 24, wenn sie vollständig übersetzt sind. Wenn verfügbar, wird die englische Übersetzung des Vertrags bevorzugt. Ansonsten werden Französisch und Deutsch zu zweiter und dritter Wahl. Wenn eine dieser Übersetzungen nicht vorhanden ist, wird die erste verfügbare verfügbare ausgewählt.
| Feld | Datentyp | Beschreibung |
|---|---|---|
| OTH_NOT | Saite | Geben Sie an, ob die Mitteilung einer Standardstruktur (dann OTH_NOT = NO ) oder Struktur geöffnet ist, damit die Veröffentlichung einer anderen Mitteilung, die kein Standardformular befolgt, auch nicht strukturiert ist (dann OTH_NOT = JA ). Nur wenn OTH_NOT = NO , werden die Felder Contracting_authority, Contract_Object und Awards_of_contract extrahiert |
| Feld | Datentyp | Beschreibung |
|---|---|---|
| Contracting_authority | Saite | Name der Vertragsbehörde |
Objekt des Vertrags.
| Feld | Datentyp | Beschreibung |
|---|---|---|
| Nüsse | Liste (Zeichenfolge) | Region Code (en) des Platzes oder Lieferortes. Ein 2-5-stelliger Code der Nomenklatur von Territorialeinheiten für Statistiken . Suchwerte für die ersten beiden Ziffern: iso_country.csv |
| Nuts_extra | Saite | Zusätzliche extrahierte Kommentare zum Leistungsort oder zur Lieferung |
| CPV_MAIN | Saite | Hauptprodukt oder Service 8 -Ziffern Code des gemeinsamen Beschaffungsvokabulars . Suchwerte für die ersten beiden Ziffern: cpv.csv |
| Contract_covered_gpa | Saite | Ja oder Nein, wenn Vertrag von GPA (staatliche Beschaffungsvereinbarung) abgedeckt ist |
| Fazit_Framework_agreement | Saite | Ja oder Nein , wenn Vertrag Teil einer Rahmenvereinbarung ist |
| Contracts_dps | Saite | Ja oder Nein , wenn Vertrag einem dynamischen Einkaufssystem unterliegt |
| Contract_Value | Vertragswert | Gesamtwert. Sollte der Summe der Vertragswerte des einzelnen Auftragnehmers entsprechen. Siehe Abschnitt Awards_of_contract |
Jeder Vertragswert kann aus den folgenden Feldern bestehen:
| Feld | Datentyp | Beschreibung |
|---|---|---|
| KOSTEN | Wert | Die tatsächlichen Kosten |
| SCHÄTZEN | Wert | Eine anfängliche Schätzung der Kosten |
| Number_of_years | Int | Anzahl des Jahres der Vertrag zuletzt. Kosten/Schätzungen können pro Jahr angegeben werden |
| Number_of_months | Int | Anzahl des Monats der Vertrag zuletzt. Kosten/Schätzungen können pro Monat angegeben werden |
Felder sind wie oben erwähnt. Siehe Abschnitt Wert -Datentyp
Liste der Auszeichnungen.
Jede Auszeichnung kann die folgenden Unterabschnitte enthalten:
| Feld | Datentyp | Beschreibung |
|---|---|---|
| Offizieller Name | Saite | Name des Auftragnehmers |
| LAND | Saite | Land des Auftragnehmers |
| ADRESSE | Saite | Adresse (Straßenname) des Auftragnehmers |
| STADT | Saite | Stadt des Auftragnehmers |
| Postal_Code | Saite | Postkodex des Auftragnehmers |
Felder sind wie oben erwähnt. Siehe Abschnitt 3.3.1 contract_Value
Python -Module erforderlich:
Optional:
Python -Version: 3.6 Datenbank: MongoDB, lokaler Modus
Beispiel für die Konvertierung eines Dokuments
file_path = '454322_2015.xml' # Contract Award notice downloaded from tED website
# Extract the raw data
from extractor import extract
raw = extract ( file_path )
# Validate the raw data
from validator import validate
data = validate ( raw )
# Prune the data: remove empty fields
from validator import prune
prune ( data )Repository -Struktur:
.
├── Lookups
│ └── AA_AUTHORITY_TYPE.csv
│ └── AC_AWARD_CRIT.csv
│ └── CPV.csv
│ └── ISO_COUNTRY.csv
│ └── MA_MAIN_ACTIVITY.csv
│ └── NC_CONTRACT_NATURE.csv
│ └── PR_PROC.csv
│ └── RP_REGULATION.csv
│ └── TD_DOCUMENT_TYPE.csv
│ └── TY_TYPE_BID.csv
├── extractor.py
└── validator.py
└── mongo_import.py
Lookups : Ordner mit verschiedenen Suchdateien enthältextractor.py : Skript zum Extrahieren von Rohdaten aus den Vertragsverleihungsnotizesvalidator.py : Skripte zur Validierung der Rohdaten und zum Beschneiden des Wörterbuchs (dh die leeren Abstellungen entfernen)mongo_import.py : Skript zum Hochladen der Daten in einer MongoDB -Datenbank Alessandra Sozi, arbeitet für das Big Data -Projekt des Amtes für nationale Statistiken
Unter der MIT -Lizenz veröffentlicht.