Filters OData v4
Bij het gebruik van grote datasets kan het lang duren voor alle data is gedownload. Het is mogelijk om de data al te filteren voor het downloaden, zodat alleen de benodigde cellen worden opgevraagd. In deze handleiding wordt uitgelegd hoe de wijk- en buurtinfo voor één specifiek gebied kan worden opgevraagd.
De codevoorbeelden kunnen eenvoudig naar het klembord worden gekopieerd door op de knop in het codeblok te klikken. De voorbeelden op deze pagina zijn ook gebundeld te vinden op GitHub.
Keuzemenu programmeertaal:
Om te filteren op een locatiecode is het nodig om eerst de codelijst met wijk-en buurtcodes te downloaden:
tableUrl <- "https://datasets.cbs.nl/odata/v1/CBS/83765NED"
wijken_en_buurtencodes <- get_odata(paste0(tableUrl,"/WijkenEnBuurtenCodes"))
Vervolgens kan er met bijvoorbeeld str_detect
gezocht worden naar de code van het gewenste gebied. Dit geeft bij de naam "Amsterdam" een gemeente, drie wijken en tien buurten:
wijken_en_buurtencodes <- wijken_en_buurtencodes %>%
filter(str_detect(Title, "Amsterdam"))
Identifier Title
1 WK036214 Amsterdamse Bos
2 BU03621401 Amsterdamse Bos Noord
3 BU03621402 Amsterdamse Bos Zuid
4 GM0363 Amsterdam
5 BU03639004 Amsterdamse Bos
6 BU03639304 Amsterdamse Poort
7 WK011406 Wijk 06 Nieuw-Amsterdam
8 BU01140600 Nieuw-Amsterdam-Centrum
9 BU01140609 Verspreide huizen Nieuw-Amsterdam
10 BU01140701 Amsterdamscheveld
11 WK039207 Amsterdamsewijk
12 BU03920701 Oude Amsterdamsebuurt
13 BU15810400 Maarn waaronder Klein Amsterdam
14 BU03520101 Gebied ten Z. van Amsterdam-Rijnkanaal
Door de link naar de dataset in get_odata(targetUrl)
aan te passen kan het juiste gedeelte worden gedownload. Opdrachten aan de API beginnen met een vraagteken, waarna verschillende parameters kunnen worden ingevuld. Dit is de standaard voor HTTP GET-verzoeken. Om te filteren moet vervolgens de variabele $filter
gelijkgesteld worden aan de filteropdracht, in dit geval WijkenEnBuurten eq 'GM0363'
.
targetUrl <- paste0(tableUrl,"/Observations?$filter=WijkenEnBuurten eq \'GM0363\'")
data_amsterdam <- get_odata(targetUrl)
Merk op dat er enkele aanhalingstekens om codes moeten worden gezet.
Er wordt nu een tabel van slechts 89 rijen en 5 kolommen gedownload. Het is mogelijk om naar nog meer variabelen te filteren door de filteropdrachten te concateneren met and
, zoals $filter=WijkenEnBuurten eq 'GM0363 ' and Measure eq 'T001036'
.
Om te filteren op een locatiecode is het nodig om eerst de codelijst met wijk-en buurtcodes te downloaden:
table_url = "https://datasets.cbs.nl/odata/v1/CBS/83765NED"
wijken_en_buurtencodes = get_odata(table_url + "/WijkenEnBuurtenCodes")
Vervolgens kan er met bijvoorbeeld str.contains
gezocht worden naar de code van het gewenste gebied. Dit geeft bij de naam "Amsterdam" een gemeente, drie wijken en tien buurten:
ams = wijken_en_buurtencodes[wijken_en_buurtencodes['Title'].str.contains("Amsterdam")]
print(ams[['Title','Identifier']])
Title Identifier
856 Amsterdamse Bos WK036214
857 Amsterdamse Bos Noord BU03621401
858 Amsterdamse Bos Zuid BU03621402
859 Amsterdam GM0363
1375 Amsterdamse Bos BU03639004
1396 Amsterdamse Poort BU03639304
4820 Wijk 06 Nieuw-Amsterdam WK011406
4821 Nieuw-Amsterdam-Centrum BU01140600
4824 Verspreide huizen Nieuw-Amsterdam BU01140609
4827 Amsterdamscheveld BU01140701
6250 Amsterdamsewijk WK039207
6251 Oude Amsterdamsebuurt BU03920701
14370 Maarn waaronder Klein Amsterdam BU15810400
15756 Gebied ten Z. van Amsterdam-Rijnkanaal BU03520101
Let op: regiocodes bevatten vaak spaties. Voor het koppelen van datasets moeten deze worden opgeschoond. Door de link naar de dataset in get_odata(targetUrl)
aan te passen kan het juiste gedeelte worden gedownload. Opdrachten aan de API beginnen met een vraagteken, waarna verschillende parameters kunnen worden ingevuld. Dit is de standaard voor HTTP GET-verzoeken. Om te filteren moet vervolgens de variabele $filter
gelijkgesteld worden aan de filteropdracht, in dit geval WijkenEnBuurten eq 'GM0363 '
.
target_url = table_url + "/Observations?$filter=WijkenEnBuurten eq 'GM0363'"
data_amsterdam = get_odata(target_url)
Merk op dat er enkele aanhalingstekens om codes moeten worden gezet.
Er wordt nu een tabel van slechts 89 rijen en 5 kolommen gedownload. Het is mogelijk om naar nog meer variabelen te filteren door de filteropdrachten te concateneren met and
, zoals $filter=WijkenEnBuurten eq 'GM0363' and Measure eq 'T001036'
.