← Аналитика / analytics / analytics-engine
Начало работы
1. Назовите свой набор данных и добавьте его в свой Worker
Добавьте следующее в свой конфигурационный файл Wrangler чтобы создать привязка в набор данных Workers Analytics Engine. Набор данных похож на таблицу в SQL: строки и столбцы должны иметь согласованное значение.
{
"analytics_engine_datasets": [
{
"binding": "<BINDING_NAME>",
"dataset": "<DATASET_NAME>"
}
]
}[[analytics_engine_datasets]]
binding = "<BINDING_NAME>"
dataset = "<DATASET_NAME>"2. Записывайте точки данных из своего Worker
Чтобы записывать точки данных в свой Worker, вызовите writeDataPoint() метод, доступный в binding, который вы только что создали.
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!");
}Точка данных представляет собой структурированное событие, которое включает:
- Blobs (строки) : измерения, используемые для группировки и фильтрации. В других системах метрик их иногда называют метками.
- Doubles (числа) : числовые значения, которые вы хотите записать в свою точку данных.
- Индексы, (strings), Used as a выборка ключ.
In the example above, suppose you are collecting air quality samples. Each data point written represents a reading from your weather sensor. The blobs define city, state, and sensor model, the dimensions you want to be able to filter queries on later. The doubles define the numeric temperature and air pressure readings. And the index is the ID of your customer. You may want to include контекст о входящем запросе, например геолокацию, чтобы добавить в точку данных дополнительные сведения.
В настоящее время writeDataPoint() API принимает упорядоченные массивы значений. Это означает, что поля нужно указывать в неизменном порядке. Хотя indexes поле принимает массив, но в настоящее время нужно указывать только один индекс. Если вы попытаетесь указать несколько индексов, ваша точка данных не будет записана.
3. Выполняйте запросы к данным с помощью SQL API
Записанные данные можно запрашивать двумя способами:
- 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.
В этом примере мы используем SQL API.
Создание API-токена
Создайте API-токен ↗ у которого есть Account Analytics Read разрешение.
Напишите свой первый запрос
Следующий запрос возвращает 10 городов с самой высокой средней влажностью при температуре выше нуля:
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Этот запрос можно выполнить, отправив HTTP-запрос к 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"См. Справочник по SQL для Workers Analytics Engine , где приведён полный список поддерживаемых функций SQL.
Работа с данными временных рядов
Workers Analytics Engine оптимизирован для аналитики временных рядов, которую можно визуализировать с помощью таких инструментов, как Grafana. Каждое событие, записанное из runtime, автоматически дополняется timestamp поле. Ожидается, что большинство временных рядов будут округлены, а затем GROUP BY timestamp. Например:
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 DESCСначала этот запрос округляет timestamp поле до ближайших пяти минут. Затем группирует данные по этому полю и городу и вычисляет среднюю влажность в каждом городе за пятиминутный период.
См. Запрос Workers Analytics Engine из Grafana , где приведены дополнительные сведения о том, как создавать эффективные запросы Grafana к Workers Analytics Engine.