Zoeken in de data

Zoeken naar records

Zoekopdracht

Voorbeeld (gebaseerd op ods-api-monitoring dataset)

die een waarde bevatten

waarde

explore

levert elk record op dat de string "explore" bevat

die een waarde in een specifiek veld bevatten

id_field:value

action:explore

levert elk record op dat de string "explore" bevat in de kolom met de naam "actie"

die verschillende waarden bevat

value1 EN value2

explore AND search

levert elk record op dat zowel "explore" als "zoeken" bevat

die minstens één van de waarden bevat

value1 OF value2

action OR explore

levert elk record op dat ofwel "explore" ofwel "zoeken" bevat

die geen waarde bevat

NOT-waarde

NOT anonymous

levert elk record op dat de string "anoniem" niet bevat

die een exacte waarde in een veld bevat

#exact(id_field,"value")

#exact(user_id,"anonymous")

levert elk record op dat de exacte string "anoniem" bevat in de kolom met de naam "user_id"

wanneer een veld leeg is

#null(id_field)

#null(referer)

levert elk record op dat geen waarde heeft in de kolom met de naam "referer"

waarbij de datum in een veld vroeger valt dan een waarde

id_date_field<=YYYY/MM/DD

timestamp<=2016/09

levert elk record op met een tijdstempel die vóór of gelijk valt met september 2016

wanneer de datum in een veld gelijk is aan de huidige datum min een periode

id_date_field>#now(days=-value)

timestamp>#now(days=-7)

levert elk record op met een tijdstempel die gelijk is aan de huidige dag min 7 dagen

die een geo-veld bevat dat gelegen is in een welbepaald gebied

voor een cirkelvormig gebied:

#distance("latitude,longitude",distance)

voor een veelhoek of vierkant gebied:

#polygon(geo_field,"(lat1,lon1),(lat2,lon2),(lat3,lon3)")

#distance("48.866667,2.333333",1000)

levert elk record op dat gelegen is op 1 km van het centrum van Parijs

#polygon(coordinates,"(40.17887331434696,-7.3828125),(52.05249047600099,-7.3828125),(52.05249047600099,16.171875),(40.17887331434696,16.171875),(40.17887331434696,-7.3828125)")

levert elk record op dat zich in de veelhoek bevindt

Query Language en Geo Filtering

Taal van de zoekopdracht

De taal van de zoekopdracht in OpenDataSoft maakt het mogelijk om complexe booleaanse voorwaarden uit te drukken als een filteringcontext.

Booleaanse uitdrukkingen

De taal van de zoekopdracht ondersteunt de volgende booleaanse operatoren AND, OR en NOT.

Parentheses kunnen gebruikt worden om uitdrukkingen te bundelen en het standaard prioriteitsmodel te wijzigen:

  • NOT
  • AND
  • OR

Voorbeelden

  • film OR bomen

  • (film OR bomen) AND parijs

Zoekopdrachten voor velden

Een van de belangrijkste kenmerken van de taal van de zoekopdracht is een filtering per veld toe te laten. U kan veldnamen gebruiken als een prefix voor uw zoekopdrachten om de resultaten te filteren op basis van de waarde van een specifiek veld.

Voor het zoeken naar datasets, stemt de lijst met beschikbare velden precies overeen met de beschikbare metadata. Standaard:

Veldnaam

Omschrijving

uitgever

De uitgever van de dataset

titel

De titel van de dataset

omschrijving

De omschrijving van de dataset

licentie

De licentie van de dataset

records_count

Het aantal records in de dataset

gewijzigd

De datum van laatste wijziging van de dataset

taal

De taal van de dataset (ISO-code)

thema

Het thema van de dataset

referenties

De referenties voor de dataset

De domeinbeheerder zou een rijkere metadata template kunnen definiëren waardoor toegang wordt verleend aan een rijkere reeks filteringvelden.

Voor het zoeken naar het record, hangt de lijst met beschikbare velden af van het schema van de dataset. Om de lijst met beschikbare velden voor een welbepaalde dataset terug te vinden, kan u de zoek-API's voor de dataset of opzoek-API's voor de dataset gebruiken.

Er kunnen meervoudige operatorvelden gebruikt worden tussen de veldnaam en de zoekopdracht:

  • :, =, ==: levert resultaten op waarvan de velden exact overeenstemmen met de opgegeven waarde (de velden zijn van een tekst- of numeriek type)

  • >, <, >=, <=: Levert resultaten op waarvan de veldwaarden groter, kleiner, groter of gelijk, kleiner of gelijk zijn aan de opgegeven waarde (het veld is van het datum- of numeriek type).

  • [start_date TO end_date]: Zoekt naar records waarvan de datum tussen de start_date en end_date ligt.

Datumformaten kunnen gespecificeerd worden in verschillende formaten: gewoon (JJJJ[[/mm]/dd]) of ISO 8601 (JJJJ-mm-DDTUU:MM:SS)

Voorbeelden:

  • film_date >= 2002
  • film_date >= 2013/02/11
  • film_date: [1950 TO 2000]
  • film_box_office > 10000 AND film_date < 1965

Taalfuncties van de zoekopdracht

Geavanceerde functies kunnen gebruikt worden in de taal van de zoekopdracht. Functienamen moeten het prefix van een scherp (#) teken krijgen.

Naam van de functie

Omschrijving

now

Geeft de huidige datum. Deze functie kan een opgeroepen als een zoekwaarde voor een veld. Wanneer ze wordt opgeroepen zonder een argument, zal ze de huidige datumtijd evalueren: "birthdate>=#now()" levert alle records op die een geboortedatum bevatten die groter is dan of gelijk is aan de huidige datumtijd. Deze functie kan ook parameters aanvaarden, zie hieronder voor de parameters die beschikbaar zijn voor de "#now"-functie.

null

Deze functie kan opgeroepen worden om een veldnaam te specificeren als een parameter. Ze geeft de hits waarvoor geen waarde is gedefinieerd voor het gespecificeerde veld. Bijvoorbeeld "#null(birthdate)"

exact

Deze functie maakt het mogelijk om te zoeken naar records met een veld dat exact overeenstemt met een welbepaalde waarde. Bijvoorbeeld: #exact(firstname, "Marie") zal records opleveren met een veld "firstname" dat exact "Marie" bevat en niets anders.

attr

Deze functie maakt het mogelijk om records te zoeken met een veld dat overeenstemt met een waarde in de SAML attributen van de gebruiker die het verzoek indient. Bijvoorbeeld #attr(firstname, user_first_name), uitgevoerd door een gebruiker die een SAML attribuut user_first_name heeft met een waarde "Marie", zal records opleveren met een veld firstname dat "Marie" bevat.

Beschikbare parameters voor de ``#now`` functie:

  • jaren, maanden, weken, dagen, uren, minuten, seconden, microseconden: Deze parameters voegen tijd toe aan de huidige datum.

    Bijvoorbeeld: #now(years=-1, hours=-1) levert de huidige datum op min een jaar en een uur

  • jaar, maand, dag, uur, minuut, seconde, microseconde: kan ook gebruikt worden om een absolute datum te specificeren.

    Bijvoorbeeld: #now(year=2001) levert de huidige tijd, dag en maand op voor het jaar 2001

  • weekdag: specificeert een dag van de week. Deze parameter aanvaardt ofwel een geheel getal tussen 0 en 6 (waarbij 0 maandag is en 6 zondag) of de eerste twee letters van de dag (in het Engels) gevolgd door het kardinaalteken van de eerste week waarop de zoekopdracht moet worden gestart.

    #now(weeks=-2, weekday=1) levert de donderdag vóór de laatste donderdag op.

    #now(weekday=MO(2)) levert de maandag volgend op de volgende maandag op.

Geo Filtering

Zoek voor records aanvaarden geofilterparameters om te filteren in records die gelegen zijn in een specifiek geografisch gebied.

De volgende parameters kunnen gebruikt worden.

Naam van de parameter

Omschrijving

geofilter.distance

Beperkt het resultaat tot een geografisch gebied dat gedefinieerd wordt door een cirkel (coördinaten van het midden van de cirkel uitgedrukt in WGS84 en afstand uitgedrukt in meter): latitude,longitude,distance: geofilter.distance=48.8520930694,2.34738897685,1000

Opmerking

Deze zoekparameter is het equivalent van de "#distance"-functie die beschreven staat in het begin van de documentatie.

geofilter.polygon

Beperkt het resultaat tot het geografisch gebied dat gedefinieerd wordt door een veelhoek (coördineert de punten die uitgedrukt staan in WGS84 zoals in (lat1,lon1),(lat2,lon2),(lat3,lon3): geofilter.polygon=(48.883086,2.379072),(48.879022,2.379930),(48.883651,2.386968)