← Analytics / analytics / analytics-engine
Začínáme
1. Pojmenujte svou datovou sadu a přidejte ji do svého Workeru
Přidejte následující do svého Konfigurační soubor Wrangler pro vytvoření binding do datasetu Workers Analytics Engine. Dataset funguje podobně jako tabulka v SQL: řádky a sloupce by měly mít konzistentní význam.
{
"analytics_engine_datasets": [
{
"binding": "<BINDING_NAME>",
"dataset": "<DATASET_NAME>"
}
]
}[[analytics_engine_datasets]]
binding = "<BINDING_NAME>"
dataset = "<DATASET_NAME>"2. Zapisujte datové body ze svého Workeru
Datové body do svého Workeru zapíšete zavoláním writeDataPoint() metodu, která je dostupná v bindingu, jenž jste právě vytvořili.
async fetch(request, env) {
env.WEATHER.writeDataPoint({
'blobs': ["Seattle", "USA", "pro_sensor_9000"], // City, State
'doubles': [25, 0.5],
'indexes': ["a3cd45"]
});
return new Response("OK!");
}Datový bod je strukturovaná událost, která obsahuje:
- Blobs (řetězce) : Dimenze používané pro seskupování a filtrování. V jiných systémech metrik se někdy označují jako štítky.
- Doubles (čísla) : Číselné hodnoty, které chcete zaznamenat ve svém datovém bodě.
- Indexy : (řetězce): Používá se jako vzorkování klíč.
V uvedeném příkladu předpokládejme, že sbíráte vzorky kvality ovzduší. Každý zapsaný datový bod představuje odečet z vašeho meteorologického senzoru. Bloby určují město, stát a model senzoru: jde o dimenze, podle kterých budete chtít dotazy později filtrovat. Doubly určují číselné hodnoty teploty a tlaku vzduchu. A index je ID vašeho zákazníka. Můžete zvážit i zahrnutí kontext o příchozím požadavku, jako je geolokace, a přidejte tak do datového bodu další data.
V současné době writeDataPoint() API přijímá uspořádaná pole hodnot. To znamená, že pole musíte zadávat ve stále stejném pořadí. Ačkoliv indexes pole přijímá pole hodnot, v současné době ale musíte zadat pouze jeden index. Pokud se pokusíte zadat více indexů, váš datový bod nebude zaznamenán.
3. Dotazujte data pomocí SQL API
Zapsaná data můžete dotazovat dvěma způsoby:
- SQL API, Best for writing your own queries and integrating with external tools like Grafana.
- GraphQL API, This is the same API that powers the Cloudflare dashboard.
Pro účely tohoto příkladu použijeme SQL API.
Vytvořte token API
Vytvořte API Token ↗ která má Account Analytics Read oprávnění.
Napište svůj první dotaz
Následující dotaz vrací 10 měst s nejvyšší průměrnou naměřenou vlhkostí při teplotě nad nulou:
SELECT
blob1 AS city,
SUM(_sample_interval * double2) / SUM(_sample_interval) AS avg_humidity
FROM WEATHER
WHERE double1 > 0
GROUP BY city
ORDER BY avg_humidity DESC
LIMIT 10Tento dotaz můžete spustit odesláním požadavku HTTP na SQL API:
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/analytics_engine/sql" \
--header "Authorization: Bearer <API_TOKEN>" \
--data "SELECT blob1 AS city, SUM(_sample_interval * double2) / SUM(_sample_interval) AS avg_humidity FROM WEATHER WHERE double1 > 0 GROUP BY city ORDER BY avg_humidity DESC LIMIT 10"Viz Referenční informace SQL pro Workers Analytics Engine kde najdete úplný seznam podporovaných funkcí SQL.
Práce s daty časových řad
Workers Analytics Engine je optimalizovaný pro analytiku časových řad, kterou lze zobrazit pomocí nástrojů, jako je Grafana. Každá událost zapsaná z runtime se automaticky doplní o timestamp pole. Očekává se, že většina časových řad se zaokrouhlí a poté GROUP BY timestamp. Například:
SELECT
intDiv(toUInt32(timestamp), 300) * 300 AS t,
blob1 AS city,
SUM(_sample_interval * double2) / SUM(_sample_interval) AS avg_humidity
FROM WEATHER
WHERE
timestamp >= NOW() - INTERVAL '1' DAY
AND double1 > 0
GROUP BY t, city
ORDER BY t, avg_humidity DESCTento dotaz nejprve zaokrouhlí timestamp pole na nejbližších pět minut. Poté seskupí podle tohoto pole a města a vypočítá průměrnou vlhkost v každém městě za pětiminutové období.
Viz Dotazování Workers Analytics Engine z Grafany kde najdete další podrobnosti o tom, jak vytvářet efektivní dotazy Grafana pro Workers Analytics Engine.