De ShopifyQL-query-editor gebruiken
Je kunt ShopifyQL gebruiken met de nieuwe Shopify Analytics om de database van je eigen bedrijf te verkennen en de gegevens op te halen die je een diepgaander inzicht geven in je bedrijf.
ShopifyQL of Shopify Query Language is de querytaal van Shopify die ontwikkeld is voor handel. Querytalen worden gebruikt om gegevens uit databases op te vragen en op te halen. De gegevens van je winkel worden opgeslagen in databasetabellen, onderverdeeld in gedefinieerde kolommen en rijen. In kolommen wordt het type gegevens, zoals verkopen, aangegeven dat ze bevatten. Rijen geven de werkelijke waarde van het gegevenstype aan, zoals 2.450 USD aan verkopen.
Om je gegevens in een zinvolle indeling op te halen, moet een query worden ingediend bij de database. Een query is een vraag die specifieke gegevens als antwoord opvraagt, gemaakt van trefwoorden en de bijbehorende parameters. De combinatie van verschillende trefwoorden met specifieke parameters vormt je zoekopdracht. Nadat je je zoekopdracht hebt gevormd, kun je deze uitvoeren en een rapport ontvangen.
Termenlijst
Term | Definitie |
---|---|
Afmetingen | Een attribuut dat gegevens segmenteert, zodat deze duidelijker kunnen worden gesorteerd en gepresenteerd. Veelvoorkomende voorbeelden van dimensies zijn tijd, producten en plaatsen. Afmetingen worden gebruikt als parameters in ShopifyQL. |
Trefwoord | ShopifyQL-syntaxis die fungeert als een opdracht om je query te sturen. |
Statistiek | Een afmeting van gegevens. Veelvoorkomende voorbeelden van statistieken zijn de totale verkoop, het aantal bestellingen en de brutowinst. |
Parameter | ShopifyQL-syntaxis die de database-elementen of -gegevens identificeert die in je zoekopdracht moeten worden opgenomen. |
Operator | Een gereserveerd woord of teken dat wordt gebruikt als onderdeel van een query. Voorbeelden zijn STARTS WITH , >= , of last_week . |
ShopifyQL-syntaxis
Je moet aan de volgende voorwaarden voldoen bij het maken van een geldige rapportquery met ShopifyQL:
- Je kunt een volledige query op één regel of op afzonderlijke regels plaatsen.
- Je moet ten minste de
FROM
enSHOW
trefwoorden opnemen, met de juiste parameters. Alle andere trefwoorden en parameters zijn optioneel. - Alle trefwoorden in een query moeten in de volgende volgorde zijn opgenomen:
1.
FROM
2.SHOW
3.WHERE
4.GROUP BY
5.TIMESERIES
6.WITH
TOTALS
,GROUP_TOTALS
,PERCENT_CHANGE
7.HAVING
8.SINCE
&UNTIL
, ofDURING
9.COMPARE TO
& optioneelUNTIL
10.ORDER BY
11.LIMIT
12.VISUALIZE
&TYPE
Dit is een voorbeeld van ShopifyQL dat als een query is uitgeschreven met de juiste syntaxis. De trefwoorden zijn vetgedrukt, de bijbehorende parameters staan erbij met generieke tijdelijke aanduidingen en optionele parameters staan tussen haakjes:
FROM table_name1, table_name2, ...
SHOW column1 { AS alias }, column2 { AS alias }, ...
WHERE condition
GROUP BY dimension
TIMESERIES time_dimension
WITH TOTALS, GROUP_TOTALS, PERCENT_CHANGE
HAVING condition
SINCE date_offset
UNTIL date_offset
DURING named_date_range
COMPARE TO [date_offset, ...]
ORDER BY column { ASC | DESC }
LIMIT number { OFFSET number }
VISUALIZE [alias1, alias2, ...]
TYPE { visualization_type }
LIMIT number
ShopifyQL-trefwoorden
ShopifyQL-query's kunnen variëren van basisvragen, voor hoogwaardige gegevensinzichten, tot uitgebreide, voor gedetailleerde inzichten. Elk trefwoord heeft een specifieke functie die je zoekopdracht opbouwt.
Trefwoord | Beschrijving |
---|---|
FROM | Geeft aan uit welke datasettabel gegevens moeten worden geselecteerd. |
SHOW | Selecteert de kolommen die je uit de datasettabel wilt extraheren. |
WHERE | Definieert de voorwaarde of voorwaarden waar rijen aan moeten voldoen om te worden geselecteerd. |
GROUP BY | Groepeert de opgehaalde gegevens op een dimensie of op tijdsdimensies. |
TIMESERIES | Onderscheidt groeperen op tijdafmetingen en vult datums in een query aan. |
WITH | Wijzigt het gedrag van bepaalde ShopifyQL-trefwoorden. |
HAVING | Filtert de resultaten van een query nadat deze is gegroepeerd. |
SINCE | Toont gegevens sinds een specifieke periode in het verleden. Vaak gekoppeld aan UNTIL . |
UNTIL | Toont gegevens tot een bepaalde periode in het verleden. Vaak gekoppeld aan SINCE of COMPARE TO . |
DURING | Toont gegevens gedurende een gespecificeerde periode in het verleden. |
COMPARE TO | Toont gegevens voor vergelijking met een specifieke periode in het verleden. |
ORDER BY | Specificeert op welke kolom de gegevens moeten worden gesorteerd. |
LIMIT | Beperkt het aantal rijen gegevens dat wordt weergegeven. |
VISUALIZE | Geeft je gegevens weer in een regel of balk. Je kunt je voorkeursweergave aangeven met TYPE . |
AS | Een optioneel trefwoord dat een kolom hernoemt naar een naam van jouw keuze. |
Voor het maken van de eenvoudigste ShopifyQL-query zijn slechts twee trefwoorden nodig: FROM
en SHOW
, geschreven in die volgorde. FROM
, gevolgd door een of meerdere tabelnaamparameters, geeft aan welke tabel je wil opvragen. SHOW
, gevolgd door een onbepaald aantal kolomnaamparameters, geeft de kolommen op die je wil selecteren.
SHOW
kan worden gebruikt om de volgorde op te geven waarop statistieken en afmetingen worden terruggegeven in het rapport.
Je kunt bijvoorbeeld de som van de totale verkoop terugzien door deze query te schrijven:
FROM sales
SHOW total_sales
WHERE
Met trefwoord WHERE
kun je een dimensiefilter toepassen op een volledige ShopifyQL-query. Het filter kan worden gewijzigd door zowel vergelijkingsoperators (zoals meer dan >
), logische operators (zoals AND
of NOT
) en gedeeltelijke tekenreeks- en matrix-matching (zoals STARTS WITH
en CONTAINS
).
WHERE
voorwaarden moeten aan de volgende voorwaarden voldoen:
- Waarden moeten worden omringd door enkele aanhalingstekens ('), niet door dubbele aanhalingstekens (").
- Voorwaarden mogen geen rekenkundige tekens bevatten.
- Voorwaarden kunnen alleen verwijzen naar een dimensie, niet naar een statistiek.
Als je bijvoorbeeld de totale verkoop wil inzien, maar dan gefilterd op basis van het land van facturering, is je query:
FROM sales
SHOW total_sales, product_title, product_type, product_vendor
WHERE billing_country='Canada'
GROUP BY product_title, product_type, product_vendor
Zoals in het bovenstaande voorbeeld, kun je het resultaat dat is ingesteld met de WHERE
-parameter filteren, zelfs wanneer die parameter niet is opgenomen in het SHOW
trefwoord. In dit geval wordt de totale verkoop alleen gefilterd op bestellingen uit Canada, hoewel billing_country
niet is opgenomen in de set resultaten.
Vergelijkingsoperators
Het trefwoord WHERE
maakt gebruik van vergelijkingsoperators om gegevens te filteren. In het bovenstaande voorbeeld is =
gebruikt om op te geven dat de query op een specifieke waarde wordt gefilterd, maar er staan andere operators tot je beschikking:
Vergelijkingsoperator | Beschrijving |
---|---|
= | gelijk aan |
!= | niet gelijk aan |
< | kleiner dan |
> | groter dan |
<= | kleiner dan of gelijk aan |
>= | groter dan of gelijk aan |
Om je gegevens verder te filteren, kun je logische operators aan je zoekopdracht toevoegen. De logische operators van ShopifyQL zijn:
Logische operator | Beschrijving |
---|---|
AND | Filter om alle rijen aan te duiden die aan de door AND gescheiden voorwaarden voldoen. |
OR | Filter om alle rijen aan te duiden die aan een van de door OR gescheiden voorwaarden voldoen. |
NOT | Filter om alleen rijen aan te duiden die niet aan de voorwaarden voldoen, zoals rijen die de opgegeven waarde niet bevatten. |
Je kunt meerdere filters gebruiken met het trefwoord WHERE
door logische operators toe te voegen.
Als extra toevoeging aan de voorbeeldquery van een dataset: de query om een maandelijks overzicht te krijgen van de netto-omzet voor alle bestellingen met gedroogde perziken, een factuuradres in Canada en een toegepaste korting, is:
FROM sales
SHOW total_sales, product_title, product_type, product_vendor
WHERE billing_country = 'Canada' AND product_title = 'Dried Peaches' AND is_discounted_sale = true
GROUP BY product_title, product_type, product_vendor
GROUP BY
Gebruik het trefwoord GROUP BY
als je een statistiek wil segmenteren op een dimensie, zoals groepsverkopen per regio. Je kunt het trefwoord GROUP BY
koppelen aan elke gewenste dimensieparameter.
Een query die de totale verkoop per land en regio voor factuur groepeert, wordt bijvoorbeeld geschreven als:
FROM sales
SHOW total_sales
GROUP BY billing_country, billing_region
Dit is een ander voorbeeld van een query die een tijddimensie gebruikt om de totale verkoop per maand weer te geven:
FROM sales
SHOW total_sales
GROUP BY month
De bovenstaande query levert geen resultaat op voor maanden waarin je geen omzet hebt. Gebruik het trefwoord TIMESERIES
als je een query wil die een volledige, ononderbroken periode als resultaat geeft.
FROM sales
SHOW total_sales
TIMESERIES month
SINCE last_year
UNTIL today
Tijdsdimensies
Dit zijn de tijdsafmetingen die je kunt gebruiken om je gegevens te groeperen:
Operator | Beschrijving |
---|---|
second | Groeperen op seconde van uur. |
minute | Groeperen op minuut van uur. |
hour | Groeperen op uur van kalenderdag. |
day | Groeperen op kalenderdag. |
week | Groeperen op kalenderweek. |
month | Groeperen op kalendermaand. |
quarter | Groeperen op kalenderkwartaal. |
year | Groeperen op kalenderjaar. |
hour_of_day | Zero-based grouping per 24 uur (0, 1, ..., 23). |
day_of_week | Zero-based grouping per dag van de week (0, 1, ... , 6). |
week_of_year | Groeperen op week van het jaar (1, 2, ..., 52). |
month_of_year | Groeperen per maand van het jaar (1, 2, ..., 12). |
Je kunt het trefwoord TIMESERIES
gebruiken wanneer je een groep wil onderscheiden op tijdsafmetingen, statistieken gedurende een tijdsbestek wil bekijken, of achteraf datums in een query wil invullen om een grafiek tijdreeksen zonder data te maken.
In dit voorbeeld, vul je achteraf de ontbrekende totale verkoopgegevens van de afgelopen 15 dagen in:
FROM sales
SHOW total_sales
GROUP BY product_title, billing_country
TIMESERIES day
SINCE -15d
TIMESERIES en de volgorde van kolommen
Afhankelijk van de bekendheid en de aanwezigheid van de TIMESERIES
in de waarden GROUP BY
of SHOW
, kan de volgorde van kolommen veranderen.
TIMESERIES | SHOW | GROUP BY | Resultaat |
---|---|---|---|
Opgegeven | Niet aanwezig | Niet aanwezig | De TIMESERIES is de eerste dimensie. |
Opgegeven | Niet aanwezig | Aanwezig | Positie van tijdafmetingen wordt gedefinieerd door de positie in GROUP BY . |
Opgegeven | Aanwezig | Aanwezig | Positie van tijdafmetingen wordt gedefinieerd door de positie in SHOW . |
Niet opgegeven | Niet aanwezig | Aanwezig | Positie van tijdafmetingen wordt gedefinieerd door de positie in GROUP BY . Gegevens worden niet aangevuld. |
Niet opgegeven | Aanwezig | Aanwezig | Positie van tijdafmetingen wordt gedefinieerd door de positie in SHOW . Gegevens worden niet aangevuld. |
Niet opgegeven | Aanwezig | Niet aanwezig | Activeert een syntaxisfout omdat SHOW alleen kan verwijzen naar dimensies die aanwezig zijn in GROUP BY . |
Net als WHERE
, kun je het trefwoord HAVING
gebruiken om de resultaten van een query te filteren nadat deze zijn gegroepeerd. De filter kan één voorwaarde hebben, maar de voorwaarde kan worden gewijzigd door zowel vergelijkingsoperators (zoals meer dan >
) als logische operators (zoals AND
of NOT
). In tegenstelling tot trefwoord WHERE
, kanHAVING
verwijzen naar aliassen, samengestelde functies en groeperende kolommen.
HAVING
vereist dat je zoekopdracht een GROUP BY
of TIMESERIES
bepaling bevat, omdat HAVING
de resultaten van een query filtert nadat ze zijn gegroepeerd op GROUP BY
of TIMESERIES
.
In dit voorbeeld filter je de totale verkoop voor elk product met een totale verkoop groter dan 1000 en minder dan 5000:
FROM sales
SHOW total_sales
GROUP BY product_title
HAVING total_sales > 1000 AND total_sales < 5000
WITH
Het trefwoord WITH
wijzigt het gedrag van bepaalde andere ShopifyQL-trefwoorden. Er zijn 3 beschikbare aanpassingen:
TOTALS
: Biedt een overzicht op het hoogste niveau van statistieken voordat deze worden door enige dimensie worden opgesplitst.GROUP_TOTALS
: geeft een totaal voor alle subgroeperingen wanneer er een groep is op samentelling.PERCENT_CHANGE
: voegt een procentwijzigingsstatistiek toe aan elke vergelijkingskolom inCOMPARE TO
. Wanneer deze wijziger aanwezig is, wordt voor elke wijzigingsstatistiekkolom een nieuwe kolom toegevoegd, met de procentwijziging.
TOTALS
De wijziger TOTALS
biedt een overzicht op het hoogste niveau van statistieken voordat deze worden opgesplitst door een andere dimensie. Wanneer je WITH TOTALS
gebruikt, geeft de query de totalen weer in de resultatenset als extra kolommen met de statistieknaam en "totals" als onderdeel van de kolomnaam. Elke rij bevat alle toepasbare totalen.
Deze query geeft bijvoorbeeld de totalen van de totale verkoop weer:
FROM sales
SHOW gross_sales, net_sales, total_sales
TIMESERIES day
WITH TOTALS
Deze query kan een rapport leveren dat vergelijkbaar is met dit:
Dag | Bruto-omzet | Nettoverkoop | Totale verkoop |
---|---|---|---|
Overzicht | 6 | 15 | 24 |
2024-01-01 | 1 | 4 | 7 |
2024-01-02 | 2 | 5 | 8 |
2024-01-03 | 3 | 6 | 9 |
De wijziger GROUP_TOTALS
biedt een totaal voor alle subgroepen wanneer er een groep per samentelling is. Wanneer je WITH GROUP_TOTALS
gebruikt, geeft de query de totalen weer als extra kolommen in de resultatenset met de statistieknaam, dimensies die worden opgeteld en "totals" als onderdeel van de kolomnaam. Elke rij bevat alle toepasbare totalen.
Deze query geeft bijvoorbeeld het totaal van de totale verkoop per land van factuur weer:
FROM sales
SHOW customer_id, total_sales
GROUP BY customer_id, billing_country
WITH TOTALS, GROUP_TOTALS
Deze query kan een rapport leveren dat vergelijkbaar is met dit:
Land | Klant-ID | Totale verkoop |
---|---|---|
Overzicht (VS + Canada) | - | 1 |
VS groep totalen | - | 0 |
US | 1 | 1 |
US | null | -1 |
Canada groep totalen | - | 1 |
Canada | 1 | 1 |
De wijziger PERCENT_CHANGE
voegt een percentagewijzigingsstatistiek toe aan elke vergelijkingskolom wanneer je COMPARE TO
gebruikt. Wanneer je WITH PERCENT_CHANGE
gebruikt, geeft de query de procentuele wijziging voor elke vergelijkingsstatistiek weer als extra kolommen in de resultatenset met de statistieknaam en "percent change" als onderdeel van de kolmnaam.
De formule die wordt gebruikt voor het berekenen van wijzigingspercentage is: (base_column - comparison_column) * 100 / abs(comparison_column)
Deze query gebruikt bijvoorbeeld SINCE
en COMPARE TO
om de netto-omzet per dag van de vorige maand te vergelijken met dezelfde maand van het voorgaande jaar, met een kolom voor procentwijziging:
FROM sales
SHOW net_sales
TIMESERIES day
WITH PERCENT_CHANGE
SINCE -1m
UNTIL -0m
COMPARE TO previous_year
De kolommen in het resulterende rapport bevatten dag, netto-omzet, vergelijkingsdag, vergelijkingsnetto-omzet en procentwijziging netto-omzet.
SINCE en UNTIL
Als je je query wil filteren op een datum of bepaalde periode, kun je de trefwoorden SINCE
en UNTIL
en de bijbehorende parameters gebruiken. Deze trefwoorden zijn uniek omdat ze alleen tijdsperioden filteren. Als je SINCE
gebruikt en geen waarde voor UNTIL
definieert, wordt het einde van je tijdsbereik standaard ingesteld op today
.
Dit is bijvoorbeeld een query om de netto-omzet van de afgelopen 12 maanden in Canada te vinden, tot en met gisteren:
FROM sales
SHOW net_sales
WHERE billing_country = 'Canada'
GROUP BY month
SINCE -12m
UNTIL yesterday
Compensatie-operators
Je kunt filteren op specifieke datums of op datum- en tijdcompensaties. De offset-operators van ShopifyQL zijn:
Offset-operator | Beschrijving |
---|---|
-{#}s | Aantal seconden sinds de datum en tijd dat de aanvraag is gedaan. |
-{#}min | Aantal minuten sinds de datum en tijd dat de aanvraag is gedaan. |
-{#}h | Aantal uren sinds de datum en tijd dat de aanvraag is gedaan. |
-{#}d | Aantal dagen sinds de datum en tijd dat de aanvraag is gedaan. |
-{#}w | Aantal weken sinds de datum en tijd dat de aanvraag is gedaan. |
-{#}m | Aantal maanden sinds de datum en tijd dat de aanvraag is gedaan. |
-{#}q | Aantal kwartalen geleden vanaf de datum en tijd waarop de query wordt uitgevoerd. |
-{#}y | Aantal jaren sinds de datum en tijd dat de aanvraag is gedaan. |
yyyy-MM-dd | Een specifieke datum. |
yyyy-MM-ddThh:mm:ss | Een specifieke datum en tijd. |
Je kunt in SINCE
en UNTIL
verklaringen de volgende functies gebruiken in combinatie met datumbereikoperators (met uitzondering van specifieke datums). De "startOf...
" functies kappen af op het begin van de bijbehorende tijdeenheid (minuut, uur, dag, week, maand, kwartaal en jaar) wanneer die worden gebruikt met SINCE
en de "endOf...
" functies kappen af op het eind van de bijbehorende tijdeenheid wanneer ze met UNTIL
worden gebruikt.
Datumfunctie-eenheden en operator-eenheden moeten overeenkomen om een geldig resultaat weer te kunnen geven. Zo klopt startOfMonth(-1m)
bijvoorbeeld, maar startOfMonth(-1d)
niet.
Datumfunctie | Beschrijving |
---|---|
now | De datum en tijd waarop de query wordt uitgevoerd. |
startOfMinute(-{#}min) | Kapt de operator van het datumbereik af aan het begin van de beoogde minuut. |
endOfMinute(-{#}min) | Kapt de datumbereik-operator af op het eind van de beoogde minuut. |
startOfHour(-{#}h) | Kapt de datumbereik-operator af op het begin van het beoogde uur. |
endOfHour(-{#}h) | Kapt de operator van het datumbereik af aan het einde van het beoogde uur. |
startOfDay(-{#}d) | Kapt de datumbereik-operator af op het begin van de beoogde dag. |
endOfDay(-{#}d) | Kapt de datumbereik-operator af op het eind van de beoogde dag. | startOfWeek(-{#}w) | Kapt de datumbereik-operator af op het begin van de beoogde week. |
Als het vandaag bijvoorbeeld 8 november 2022 is, kun je de volgende query gebruiken om de bruto-omzet van 1 januari 2020 tot 31 oktober 2022 in te zien:
FROM sales
SHOW gross_sales
SINCE startOfYear(-2y)
UNTIL endOfMonth(-1m)
DURING
Het trefwoord DURING
vereenvoudigt het filteren op datumbereik en vervangt het gebruik van SINCE
en UNTIL
. Je kunt het trefwoord DURING
gebruiken om de queryresultaten te filteren voor een bekende periode, zoals een kalenderjaar of specifieke maand, of voor een datumbereik dat elk jaar op een andere datum valt, zoals Black Friday en Cyber Monday. Bijvoorbeeld:
FROM sales
SHOW total_sales
GROUP BY day
DURING bfcm2021
Genoemde datumbereikoperators
DURING
accepteert de volgende operatoren voor het benaamde datumbereik:
Operatoren voor het benaamde datumbereik | Beschrijving |
---|---|
today | De datum waarop de query wordt uitgevoerd. |
yesterday | De afgelopen 24 uur vanaf het moment dat de query werd uitgevoerd. |
this_week | De huidige kalenderweek. |
this_month | De huidige kalendermaand. |
this_quarter | Het huidige kalenderkwartaal. |
this_year | Het huidige kalenderjaar. |
last_week | De vorige kalenderweek. |
last_month | De vorige kalendermaand. |
last_quarter | Het vorige kalenderkwartaal. |
last_year | Het vorige kalenderjaar. |
bfcmYYYY | Het Black Friday Cyber Monday bereik voor het opgegeven jaar. bfcm2022 geeft bijvoorbeeld de resultaten voor 25-28 november 2022. |
COMPARE TO
Met het trefwoordCOMPARE TO
kun je gegevens vergelijken tussen de datumbereiken in SINCE
en UNTIL
of DURING
en inCOMPARE TO
.
Je kunt het trefwoordCOMPARE TO
met de volgende soorten parameters gebruiken:
Absolute datums, zoals
2023-01-01
: hieronder vallen de statistieken voor de opgegeven periode en de vergelijkingsstatistieken voor diezelfde periode op de absolute datum.Benaamde data zoals
last_week
: hieronder vallen de statistieken voor de opgegeven periode en de vergelijkingsstatistieken voor diezelfde periode op de benaamde datum. - De operator dieCOMPARE TO
gebruikt hoeft niet dezelfde tijdsduur te hebben als de operator dieDURING
gebruikt. Als er geenUNTIL
waarde wordt opgegeven, berekent het het tijdsbereik als gelijk aan de waarde die is opgegeven inDURING
.DURING this_week COMPARE TO last_month
vergelijkt bijvoorbeeld de gegevens van deze week met een periode van één week die begin vorige maand begint.Offset data zoals
-3q
: hieronder vallen de statistieken voor de opgegeven periode en de vergelijkingsstatistieken voor diezelfde periode op de relatieve datum.Vergelijkingen van meerdere datums, zoals
-1y, -2y
: vergelijken je gegevens van een specifiek datumbereik met meerdere andere datumbereiken. Dit kan handig zijn wanneer je wijzigingen in verschillende periodes wil volgen.Als je een datumsafmeting gebruikt in een query met
COMPARE TO
, moet je erTIMESERIES
voor gebruiken in plaats vanGROUP BY
.
In het volgende voorbeeld wordt de netto-omzet in de vorige maand vergeleken met die in dezelfde maand van het voorgaande jaar:
FROM sales
SHOW net_sales, product_title
GROUP BY product_title
TIMESERIES day
SINCE -1m
UNTIL -0m
COMPARE TO previous_year
Operator relatieve datumbereik
Relatieve operators geven dezelfde tijdsduur als het basisdatumbereik, teruggeschoven door de opgegeven periode. Naast de genoemde datumbereikoperators, worden bij COMPARE TO
de volgende relatieve operators geaccepteerd:
Operator met een relatief datumbereik | Beschrijving |
---|---|
previous_period | Eén periode voor het basisdatumbereik. |
previous_year | Eén jaar voor het basisdatumbereik. |
previous_quarter | Eén kwartaal voor het basisdatumbereik. |
previous_month | Eén maand voor het basisdatumbereik. |
previous_week | Eén week voor het basisdatumbereik. |
previous_day | Eén dag voor het basisdatumbereik. |
previous_hour | Eén uur voor het basisdatumbereik. |
previous_minute | Eén minuut voor het basisdatumbereik. |
previous_second | Eén seconde voor het basisdatumbereik. |
Je kunt opgeven hoe je de gegevens wil sorteren die door je query worden opgehaald met behulp van het trefwoord ORDER BY
en de parameters ervan: ASC
voor oplopende volgorde en DESC
voor aflopende volgorde.
Je kunt elke statistiek of dimensie uit je query specificeren in het trefwoord ORDER BY
, inclusief meerdere velden.
Deze query geeft bijvoorbeeld de netto-omzet voor alle producten en varianten van het afgelopen jaar. De resultaten worden eerst in alfabetische volgorde gesorteerd op producttitel en vervolgens in omgekeerde alfabetische volgorde op producttype:
FROM sales
SHOW net_sales
GROUP BY product_title, product_type
SINCE -1y
UNTIL today
ORDER BY product_title, product_type DESC
De volgorde waarin je de statistieken of dimensie schrijft, is belangrijk. Als je meerdere waarden opgeeft voor ORDER BY
, wordt de sortering toegepast op elke statistiek of dimensie in de opgegeven volgorde.
TIMESERIES en de volgorde van kolommen
De volgorde van de kolommen kan veranderen afhankelijk van of de query al dan niet een TIMESERIES
en ORDER BY
bevat.
TIMESERIES | ORDER BY | Resultaat |
---|---|---|
Aanwezig | Niet aanwezig | Resultaten worden geordend aan de hand van deTIMESERIES dimensie. |
Aanwezig | Aanwezig | Resultaten worden geordend aan de hand van deTIMESERIES tijdsafmeting en vervolgens deORDER BY dimensie. |
Niet aanwezig | Aanwezig | Resultaten worden geordend aan de hand van deORDER BY dimensie. |
Niet aanwezig | Niet aanwezig | De resultaten worden geordend aan de hand van de eerste SHOW kolom. |
Met het trefwoord LIMIT
kun je een maximaal aantal rijen opgeven voor het resultaat van de query. Dit is handig wanneer je wil begrijpen hoe de gegevens in elke kolom worden weergegeven, of voor grotere rapporten waarbij het langer kan duren voor zoekopdrachten waarden geven. Je kuntLIMIT
combineren met ORDER BY
om boven- en onderlijsten aan te maken.
Als je geen LIMIT
waarde opgeeft, geeft de query standaard een resultaat met 1000 rijen.
Je kunt ook een optionele { OFFSET # }
parameter gebruiken, waarbij het resultaat een bepaald aantal rijen overslaat voor het begint met het geven van rijgegevens. De format van de resulterende zin zou vergelijkbaar zijn met: LIMIT 15 { OFFSET 5 }
.
Dit voorbeeld gebruikt LIMIT
en ORDER BY
om een lijst te maken van producten die de voorgaande 3 maanden het best verkochten:
FROM sales
SHOW gross_sales as total_gross_sales
GROUP BY product_title
SINCE -3m
UNTIL today
ORDER BY total_gross_sales DESC
LIMIT 10
VISUALIZE en TYPE
Met het trefwoordVISUALIZE
kun je een ShopifyQL-query schrijven die gegevens in een grafische visualisatielaat zien. Onder de ondersteunde visualisaties vallen de volgende waarden:
bar
stacked_bar
stacked_horizontal_bar
line
simple_bar
stacked_area
single_metric
donut
list
list_with_dimension_values
horizontal_bar
cohort
single_stacked_bar
funnel
grouped_bar
horizontal_grouped_bar
table
grid
Het trefwoord TYPE
is optioneel en moet worden vergezeld door één soort visualisatie. Als TYPE
niet in je zoekopdracht is opgenomen, kiest ShopifyQL automatisch de meest geschikte visualisatie voor je zoekopdracht. Als je query niet kan worden gevisualiseerd als geschreven, geeft ShopifyQL het resultaat in de vorm van tabelgegevens.
VISUALIZE
accepteert ook een optioneel LIMIT
-trefwoord waarbij de parameter het beperkte aantal gegevenspunten is dat moet worden weergegeven.
Je kunt bijvoorbeeld je verkooptrend van het afgelopen jaar per maand visualiseren met een trendlijn. Met deze query wordt een grafiek geretourneerd uit de tijdreeks die de bruto-omzet per maand van het afgelopen jaar weergeeft. De bruto-omzet wordt weergegeven door een enkele lijn, met de x-as als maand en de y-as als bruto-omzet:
FROM sales
SHOW gross_sales
TIMESERIES month
SINCE -1y
UNTIL today
VISUALIZE gross_sales TYPE line
AS
Het trefwoord AS
is een optioneel trefwoord waarmee je een kolom of een expressie een andere naam (of een alias) kunt geven.
AS
accepteert slechts één parameter. Als de alias een spatie in de naam heeft, moet je de alias tussen dubbele aanhalingstekens (") zetten.
FROM sales
SHOW total_sales AS "My Total Sales"
Andere ShopifyQL-operators
ShopifyQL omvat de volgende aanvullende operators:
- Wiskundige operators zoals
+
of/
- Impliciete verbindingen
- Gedeeltelijke matching van tekenreeksen en matrixen zoals
STARTS WITH
enCONTAINS
- Reacties
Wiskundige operator
ShopifyQL maakt het mogelijk om gebruik te maken van metrische gegevens. Er zijn de volgende operators beschikbaar voor zelfoperators:
Wiskundige operator | Beschrijving |
---|---|
+ | Toevoeging van twee cijfers. |
- | Aftrekking van twee getallen. |
* | Vermenigvuldiging van twee cijfers. |
/ | Deling van twee cijfers. |
Met deze query bereken je bijvoorbeeld de bestelwaarde per regio over het afgelopen jaar. Wanneer je gebruikmaakt van operators met statistieken, kun je het trefwoord AS
gebruiken om een nieuwe naam toe te wijzen aan de nieuwe statistiek. Houd er rekening mee dat er beperkingen zijn aan het gebruik van wiskundige Expression.
FROM sales
SHOW (net_sales + returns) AS order_value, orders
GROUP BY billing_region
SINCE -1y
UNTIL today
Impliciete verbindingen
Met een join kun je statistieken van verschillende domeinen naast elkaar bekijken. Joins worden impliciet en intelligent uitgevoerd in ShopifyQL.
ShopifyQL heeft de volgende join-mogelijkheden:
- ShopifyQL staat joins van dimensievelden toe als er één
FROM
-tabel in de query staat. - Automatisch links joinen op dimensievelden.
- ShopifyQL staat multi-fact joins toe (wanneer er meerdere
FROM
-tabellen in de query's staan). - Automatische volledige join op multi-fact joins, welke een willekeurig aantal tabellen of schema's ondersteunen en gegroepeerd zijn op dimensies.
- Statistieken in multi-fact joins kunnen wiskunde gebruiken.
Shopify QL heeft de volgende join-beperkingen:
- Het join-veld moet in alle samengevoegde schema's dezelfde naam hebben.
- Het join-veld moet in
GROUP BY
zijn. - Het join-veld kan geen wiskunde gebruiken.
FROM
is noodzakelijk om ervoor te zorgen dat multi-fact joins werken.- Bij een multi-fact join moet elke
GROUP BY
in alle schema's voorkomen en wordt beschouwd als een veld waarop moet worden samengevoegd.
Deze query gebruikt bijvoorbeeld een multi-fact join:
FROM sales, sessions
SHOW day, total_sales, sessions
GROUP BY day
SINCE 2023-10-03
ORDER BY day
Gedeeltelijke matching van tekenreeksen en matrixen
Je kunt de volgende operators gebruiken voor gedeeltelijke matching van tekenreeksen en matrixen:
Operator | Beschrijving |
---|---|
STARTS WITH | Toon alle rijen waarin een kolom begint met een voorvoegsel. |
ENDS WITH | Retourneer alle rijen waarin een kolom eindigt met een achtervoegsel. |
CONTAINS | Retourneer alle rijen waarin een kolom een gedeelte van een tekenreeks of een element in een matrix bevat. |
Enkele voorbeelden van gedeeltelijke matching van tekenreeksen met behulp van operators zijn de volgende query's:
FROM sales
SHOW product_title
WHERE product_title STARTS WITH 'Summer'
GROUP BY product_title
FROM sales
SHOW product_title
WHERE product_title ENDS WITH 'kit'
GROUP BY product_title
FROM sales
SHOW product_title
WHERE product_title CONTAINS 'Beef'
GROUP BY product_title
De operator CONTAINS
kan worden gebruikt om elementen binnen matrixen te matchen, inclusief gehele getallen, tekenreeksen en decimalen. Deze matching is niet hoofdlettergevoelig. Enkele voorbeelden van de matching van matrixen met behulp van CONTAINS
zijn de volgende query's:
FROM sales
SHOW orders
WHERE products_bought_together_ids CONTAINS '101'
FROM customers
SHOW total_number_of_orders
WHERE customer_cities CONTAINS 'seattle'
FROM sales
SHOW orders
WHERE variants_bought_together_variant_prices CONTAINS '10.2'
Reacties
Je kunt opmerkingen gebruiken om secties van ShopifyQL-overzichten uit te leggen of om de uitvoering van een ShopifyQL-overzicht te voorkomen. De tekst van een opmerking wordt tijdens de uitvoering genegeerd.
Opmerkingen op een regel beginnen met --
en eindigen na de regel.
Opmerkingen op meerdere regels beginnen met /*
en eindigen met */
.
FROM sales
SHOW average_order_value, gross_sales
-- the line below has been commented out and won't run
-- GROUP BY billing_region
WHERE billing_country = 'United States'
/*
this line and the two lines below it have been commented out and won't run
SINCE 2021-01-01
UNTIL 2021-12-31
*/