← Аналитика / analytics / graphql-api / features
Наборы данных (таблицы)
Cloudflare Analytics предлагает множество наборов данных: как общие, так и специфичные для отдельных продуктов. Названия наборов данных подчиняются единой схеме, которая явно указывает на тип возвращаемых данных:
-
Домен - каждый набор данных назван по имени поля, которое он описывает, и связан с набором узлов. Узлы данных, относящиеся к конкретному продукту, включают в название соответствующего продукта, например
loadBalancingRequests*узлы. -
Адаптивная выборка - узлы, представляющие данные, полученные с помощью адаптивной выборки, включают
Adaptiveсуффикс. Дополнительные сведения см. в выборка. -
Агрегированные данные - узлы, представляющие агрегированные данные, включают
Groupsсуффикс. Например,loadBalancingRequestsAdaptiveGroupsузел представляет агрегированные данные о запросах Load Balancing. Агрегированные данные возвращаются в виде массива...Groupобъектов. Обратите внимание: у нас есть узел, который пока исключён из этого соглашения об именовании:workersInvocationsAdaptive(бета). -
Необработанные данные - узлы с необработанными данными, например
loadBalancingRequestsAdaptive, не агрегируются и поэтому не включаютGroupsсуффикс. Необработанные данные возвращаются в массивах, содержащих объекты соответствующего типа данных. Например, запрос кloadBalancingRequestsAdaptiveвозвращает рядLoadBalancingRequestобъекты.
Дополнительные сведения о наборах данных, их доступности, статусах бета-версии и устаревания см. в документации GraphQL discovery функции.
Работа с наборами данных
Агрегированные поля
В этом примере показана структура для Groups:
type WhateverGroup {
count # No subfields, it is just the group size. Not available for roll-up tables.
sum {
# fields that support summing (numbers, maps of numbers)
}
avg {
# fields that support averaging (numbers)
}
uniq {
# fields that support uniqueing (numbers, strings, enums, IPs, dates, etc.)
}
}Уникальные значения недоступны в качестве измерения, но их можно запросить, как показано в этом примере:
{
# Get number of bytes and unique IPs in each minute.
httpRequests1mGroups {
sum {
bytes
}
uniq {
uniques # unique IPs
}
dimensions {
datetimeMinute
}
}
# Count the number of events in each hour.
firewallEventsAdaptiveGroups {
count
dimensions {
datetimeHour
}
}
}Определения типов схемы
Каждая доступная таблица имеет определение типа GraphQL. Определения типов подчиняются следующим правилам:
- Обычные поля представляют сами себя.
- Каждое поле, включая вложенные, имеет тип и представляет собой список значений этого типа.
-
enumтип представляет собой перечисляемое поле.
Пример определения типа для ContentTypeMapElem:
type ContentTypeMapElem {
edgeResponseContentType: UInt32!
requests: UInt64!
bytes: UInt64!
}
# An array of httpRequestsGroup is the result of httpRequests1hGroups or
# httpRequests1mGroups query.
type httpRequestsGroup {
date: Date!
timeslot: DateTime!
requests: UInt64!
contentTypeMap: [ContentTypeMapElem!]!
# ... other fields
}
enum TrustedClientCategory {
UNKNOWN
REAL_BROWSER
HONEST_BOT
}
# An array of Request is the result of httpRequests query.
type Request {
trustedClientCategory: TrustedClientCategory!
# ... other fields
}