Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве вы создадите представление метрик аналитики продаж в наборе данных TPC-H. В конечном итоге вы получите представление метрик, которое:
- Объединяет заказы и клиентов из нескольких таблиц с помощью схемы «снежинка».
- Определяет поля (также называемые измерениями) для времени, географии и порядка атрибутов.
- Вычисляет простые и сложные показатели, включая коэффициенты, агрегации с фильтрацией и оконные показатели.
- Использует компонуемость для построения сложных метрик из более простых показателей.
- Определяет параметр, который будет применять скидку во время запроса.
- Включает метаданные агента для панелей мониторинга и средств искусственного интеллекта.
Если вы не знакомы с представлениями метрик, начните с создания представления метрик , чтобы узнать основы. Это руководство расширяет основу с реальной сложностью.
Требования
Для работы с этим руководством требуется:
- Рабочая область с поддержкой Unity Catalog.
- Хранилище SQL или вычислительный ресурс под управлением Databricks Runtime 17.3 или более поздней версии.
Полный список привилегий, необходимых для создания представления метрик, см. в разделе "Предварительные требования".
Note
Создание представления метрик поддерживается в Databricks Runtime 16.4 и выше. В этом руководстве используются функции, требующие Databricks Runtime 17.3 или более поздней версии, а для некоторых шагов требуется более поздняя среда выполнения. Сведения о минимальной версии среды выполнения для каждой функции см. в разделе Доступность функций представления метрик.
Модель данных
Набор данных TPC-H моделирует оптовую цепочку поставок. В этом руководстве используются три таблицы, присоединенные к схеме snowflake:
-
ordersприсоединяется кcustomerнаo_custkey = c_custkey -
customerприсоединяется кnationнаc_nationkey = n_nationkey
| Таблица | Role | Ключевые столбцы |
|---|---|---|
orders |
Таблица фактов (транзакции заказа) |
o_orderkey, , o_custkeyo_totalprice, o_orderdateo_orderstatus |
customer |
Таблица измерений (сведения о клиенте) |
c_custkey, , c_namec_mktsegmentc_nationkey |
nation |
Таблица измерений (справочник по странам или регионам) |
n_nationkey, , n_namen_regionkey |
Шаг 1. Создание представления метрик и открытие редактора
Вы можете создать это представление метрик в пользовательском интерфейсе обозревателя каталогов, создать его с помощью кода Genie или записать полное определение YAML напрямую. Все три метода сводятся к единому определению YAML, которое описывает представление метрик. На каждом шаге, следующем, выберите пользовательский интерфейс обозревателя каталогов или вкладку редактора YAML , чтобы следовать вашему предпочтительному методу. Если вы используете редактор YAML, то пример кода на каждом этапе представляет собой ту часть определения YAML, которая соответствует тому, что вы создаёте на этом этапе.
Note
Примеры YAML в этом руководстве используют ключевое fields слово. Когда вы создаёте представление метрик в low-code-редакторе, создаваемый им YAML использует вместо этого эквивалентное ключевое слово dimensions. См. поля.
Если вы не знакомы с пользовательским интерфейсом для создания представлений метрик, см. статью "Создание представления метрик".
Чтобы создать представление метрик, в обозревателе каталогов выполните следующие действия.
- Найдите
samples.tpch.orders. - Щелкните по имени таблицы.
- Нажмите кнопку "Создать>представление метрик " и назовите представление.
Подробные инструкции по созданию см. в разделе "Создание представления метрик". Когда откроется редактор, используйте вкладку пользовательского интерфейса для интерактивной сборки или нажмите <> кнопку, чтобы изменить определение YAML напрямую.
Шаг 2. Настройка представления метрик
Задайте версию и описание представления метрик.
version определяет версию спецификации YAML, а comment описывает назначение представления метрик, которое отображается в Catalog Explorer. Azure Databricks управляет версией за вас.
Пользовательский интерфейс обозревателя каталогов
Версия определена для вас. Чтобы добавить или изменить описание после сохранения представления метрик:
- В обозревателе каталогов найдите представление метрик и щелкните его имя.
- Нажмите кнопку "Описание", а затем введите описание представления метрик. Вы можете использовать пример описания, показанного на вкладке редактора YAML .
Этот текст соответствует полю comment в определении YAML. Дополнительные способы редактирования представления метрик см. в разделе "Изменение представления метрик".
Редактор YAML
version: 1.1
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
Шаг 3. Определение источника и соединения
Определите основную исходную таблицу и присоединийте связанные таблицы:
-
sourceзадает таблицу фактов (заказы) в качестве зерна. -
joinsприносит данные клиента с помощью связи "много ко одному". - Вложенный
nationдемонстрирует схему типа «снежинка», выполняя соединение черезcustomer, чтобы получить доступ к географическим данным, где страна является подизмерением клиента.
Пользовательский интерфейс обозревателя каталогов
В этом примере добавляется два соединения( оба типа "многие к одному", чтобы моделировать схему снежинки.
Чтобы добавить соединение, выполните следующие действия customer .
- В редакторе нажмите кнопку "Присоединиться " в правом верхнем углу, чтобы открыть диалоговое окно "Добавить соединение ".
- Найдите
samples.tpch.customer, щелкните имя таблицы, а затем нажмите Добавить. - Задайте условие соединения:
o_custkey = c_custkey. - В поле Кратность соединения выберите Многие к одному. Рекомендации по выбору кратности см. в разделе "Кратность соединения".
Затем добавьте вложенное nation соединение. Повторите шаги для соединения customer, присоединив samples.tpch.nation по c_nationkey = n_nationkey. Вложение соединения в customer моделирует страну как подизмерение клиента.
Инструкции по полному диалогу соединения см. в шаге 2. Добавление соединения.
Редактор YAML
source: SELECT * FROM samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': o_custkey = c_custkey
joins:
- name: nation
source: samples.tpch.nation
'on': c_nationkey = n_nationkey
Шаг 4. Определение фильтра
filter ограничивает исходные данные и применяется ко всем запросам в представлении метрики. В этом руководстве представление метрик ограничивается последними данными.
Пользовательский интерфейс обозревателя каталогов
Чтобы определить фильтр, выполните следующие действия.
- В редакторе щелкните
Фильтруйте в правом верхнем углу.
- Используйте раскрывающиеся меню, чтобы установить для «Столбец» значение
o_orderdate, для «Оператор» —>=, а для «Значение» —1995-01-01.
Дополнительные сведения о фильтрах см. на шаге 3. Определение фильтра.
Редактор YAML
filter: o_orderdate >= '1995-01-01'
Шаг 5. Определение полей
Поля — это атрибуты, по которым пользователи группируются и фильтруются. Поле может быть категориальным столбцом (например, регионом или состоянием) или нерегрегированным числовым столбцом (например, возрастом или количеством), которые пользователи агрегируют во время запроса.
Метаданные агента
Каждое поле и мера в этом руководстве включают свойства метаданных агента , которые улучшают работу представления метрик с панелями мониторинга и инструментами искусственного интеллекта:
-
display_name: читаемая метка, которая отображается в визуализациях вместо имени технического столбца. -
synonyms: альтернативные имена, которые помогают инструментам ИИ, таким как Genie, обнаруживать поля и меры с помощью запросов естественного языка. -
format: как значения отображаются на подчиненных поверхностях, таких как панели мониторинга, записные книжки и результаты SQL-запросов, например валюта, число или процент.
Эти свойства являются необязательными, но рекомендуемыми. В следующих шагах определения полей и показателей приведены непосредственно в тексте.
Определения полей
В этом руководстве добавляется следующее:
-
Поля времени:
order_date,order_monthиorder_yearс несколькими уровнями детализации для различных задач анализа. -
Преобразованные поля:
order_statusиorder_priority, которые используютCASEиSPLITпреобразуют исходные коды в доступные для чтения метки. -
Присоединенные поля:
customer_name,market_segmentиcustomer_nation, которые ссылаются на присоединенные таблицы с использованием имени соединения. Вложенные столбцы объединения используют цепочечную точечную нотацию, напримерcustomer.nation.n_name, для обхода схемы типа «снежинка».
Пользовательский интерфейс обозревателя каталогов
Редактор автоматически добавляет все исходные столбцы на вкладку "Поля ". Измените, переименуйте, удалите и добавьте поля, чтобы представление метрик определяло именно следующее. Для каждого поля щелкните его имя, чтобы изменить его или щелкните
", чтобы создать его, а затем задайте выражение в построителе или пользовательском режиме. Задайте отображаемое имя и синонимы для каждого поля, как показано ниже.
order_date: В режиме Builder выберите столбец
o_orderdate. Установите отображаемое имя наOrder Date.order_month. В пользовательском режиме введите
DATE_TRUNC('MONTH', order_date). Установите отображаемое имя наOrder Month.order_year. В пользовательском режиме введите
YEAR(order_date). Установите отображаемое имя наOrder Year.order_status. В пользовательском режиме введите следующее выражение. Установите отображаемое имя:
Order Status, а синонимы:status,fulfillment status.CASE o_orderstatus WHEN 'O' THEN 'Open' WHEN 'P' THEN 'Processing' WHEN 'F' THEN 'Fulfilled' ENDorder_priority. В пользовательском режиме введите
SPLIT(o_orderpriority, '-')[0]. Установите отображаемое имя наPriority.customer_name. В режиме построителя выберите
c_nameстолбец из присоединеннойcustomerтаблицы. Установите отображаемое имя наCustomer Name.market_segment: В режиме Builder выберите столбец
c_mktsegmentиз объединённой таблицыcustomer. Установите отображаемое имя:Market Segment, а синонимы:segment,industry.customer_nation: В режиме пользовательском введите
customer.nation.n_name, чтобы сослаться на вложенное соединениеnation. Установите отображаемое имя:Country, а синонимы:nation,country.
Полные действия по полю см. в шаге 4. Добавление полей.
Редактор YAML
fields:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', order_date)"
display_name: Order Month
- name: order_year
expr: YEAR(order_date)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
Шаг 6. Определение параметров
Параметры позволяют передавать значения в представление метрик при запросе, поэтому одно определение может обслуживать множество вариантов запросов. В этом руководстве добавляется параметр discount, который затем используется другой мерой для вычисления выручки с учётом скидки. Параметр имеет значение по умолчанию 0, поэтому запросы, которые не передают значение, возвращают нерасчетный доход. Дополнительные сведения о параметрах см. в разделе "Использование параметров с представлениями метрик".
Пользовательский интерфейс обозревателя каталогов
В заголовке редактора нажмите кнопку "Добавить параметр". Введите discount в качестве имени, затем введите значение по умолчанию 0 и выберите тип данных double.
Редактор YAML
parameters:
- name: discount
data_type: double
default: 0
Шаг 7. Определение мер
Меры — это вычисления, которые пользователи хотят проанализировать. Сначала определите атомарные измерения, а затем используйте компонуемость для создания сложных метрик, ссылающихся на ранее определенные измерения с помощью функции MEASURE(). Задайте display_name, format и synonyms для каждого показателя, как описано в метаданных агента. В этом руководстве добавляется следующее:
-
Атомарные показатели:
order_count,total_revenue, иunique_customers— простые агрегирования, которые служат базовыми элементами. -
Составные меры:
avg_order_valueиrevenue_per_customer, которые ссылаются на ранее определённые меры с помощьюMEASURE()вместо дублирования логики агрегирования. Приtotal_revenueизменении эти меры автоматически используют обновленное определение. См. статью "Компонуемость". -
Отфильтрованные меры:
open_order_revenueиfulfilled_order_revenue, которые используютсяFILTER (WHERE ...)для создания условных метрик без отдельных полей. -
Параметризованная мера:
discounted_revenue, которая ссылается наdiscountпараметр, чтобы применить скидку. См. раздел "Использование параметров с представлениями метрик". -
Оконная мера:
t7d_customers, которая вычисляет скользящее 7-дневное количество уникальных клиентов. Дополнительные шаблоны мер окна см. в разделе "Меры окна ".
Пользовательский интерфейс обозревателя каталогов
Редактор автоматически добавляет образец меры COUNT(*). Измените или удалите его и добавьте меры, чтобы представление метрик точно определило следующее. Для каждой меры нажмите кнопку
", а затем задайте выражение в построителе или пользовательском режиме. Задайте отображаемое имя, формат и синонимы , как показано ниже. Используйте 2 десятичных разряда для форматов валют и 0 десятичных разрядов для числовых форматов.
-
order_count: В режиме конструктора выберите агрегацию Подсчет уникальных значений для
o_orderkey. Задайте отображаемое имяOrder Countв формате Number. -
total_revenue: В режиме Builder выберите агрегирование Sum для
o_totalprice. Установите отображаемое имя:Total Revenue, формат: Валюта (USD), синонимы:revenue,sales. -
discounted_revenue. В пользовательском режиме введите
SUM(o_totalprice * (1 - discount)). Установите отображаемое имя наDiscounted Revenue, а формат — на Currency (USD). -
unique_customers: В режиме Конструктор выберите агрегирование Подсчет различных для
o_custkey. Задайте отображаемое имяUnique Customersв формате Number. -
avg_order_value. В пользовательском режиме введите
MEASURE(total_revenue) / MEASURE(order_count). Установите отображаемое имя наAvg Order Value, формат — на Валюта (USD), синонимы — наAOV. -
revenue_per_customer. В пользовательском режиме введите
MEASURE(total_revenue) / MEASURE(unique_customers). Установите отображаемое имя наRevenue per Customer, а формат — на Currency (USD). -
open_order_revenue. В пользовательском режиме введите
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O'). Установите отображаемое имя наOpen Order Revenue, формат — на Валюта (USD), синонимы — наbacklog. -
fulfilled_order_revenue. В пользовательском режиме введите
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F'). Установите отображаемое имя наFulfilled Revenue, а формат — на Currency (USD). -
t7d_customers. В пользовательском режиме введите
COUNT(DISTINCT o_custkey). Затем нажмите + Window и настройте окно, упорядоченное поorder_date, с диапазономtrailing 7 dayи полуаддитивной агрегациейlast. Задайте отображаемое имя7-Day Rolling Customersв формате Number.
Полные шаги меры см. в шаге 5. Добавление мер.
Редактор YAML
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: discounted_revenue
expr: SUM(o_totalprice * (1 - discount))
display_name: Discounted Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
Проверка полного определения
После выполнения описанных выше действий представление метрик имеет следующее полное определение:
Просмотр полного определения YAML
version: 1.1
parameters:
- name: discount
data_type: double
default: 0
source: SELECT * FROM samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': o_custkey = c_custkey
joins:
- name: nation
source: samples.tpch.nation
'on': c_nationkey = n_nationkey
filter: o_orderdate >= '1995-01-01'
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
fields:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', order_date)"
display_name: Order Month
- name: order_year
expr: YEAR(order_date)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: discounted_revenue
expr: SUM(o_totalprice * (1 - discount))
display_name: Discounted Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
Создание представления метрик с помощью SQL
Если вы создаете это определение за пределами обозревателя каталогов, выполните следующий SQL, чтобы создать представление метрик:
CREATE OR REPLACE VIEW catalog.schema.tpch_sales_analytics
WITH METRICS
LANGUAGE YAML
AS $$
version: 1.1
parameters:
- name: discount
data_type: double
default: 0
source: SELECT * FROM samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': o_custkey = c_custkey
joins:
- name: nation
source: samples.tpch.nation
'on': c_nationkey = n_nationkey
filter: o_orderdate >= '1995-01-01'
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
fields:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', order_date)"
display_name: Order Month
- name: order_year
expr: YEAR(order_date)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: discounted_revenue
expr: SUM(o_totalprice * (1 - discount))
display_name: Discounted Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
$$;
Другие способы создания представления метрик см. в разделе "Создание представления метрик".
Шаг 8. Запрос представления метрик
Выполняйте запросы к представлению метрик, используя понятный бизнес-пользователям синтаксис. Функция MEASURE() агрегирует показатель на уровне детализации выбранных полей.
Агрегированные показатели по измерению
В этом примере агрегируются меры в нескольких полях. Он возвращает общий доход, количество заказов и среднее значение заказа по стране клиента и сегменту рынка, ранжированное по самым высоким доходам в первую очередь:
SELECT
customer_nation,
market_segment,
MEASURE(total_revenue) AS total_revenue,
MEASURE(order_count) AS order_count,
MEASURE(avg_order_value) AS avg_order_value
FROM catalog.schema.tpch_sales_analytics
GROUP BY customer_nation, market_segment
ORDER BY total_revenue DESC;
Анализ ежемесячной тенденции
В этом примере используется поле времени с мерами для отслеживания тренда. Возвращает общую выручку и выручку по открытым заказам (портфель невыполненных заказов) по месяцам и статусам заказов:
SELECT
order_month,
order_status,
MEASURE(total_revenue) AS total_revenue,
MEASURE(open_order_revenue) AS open_order_revenue
FROM catalog.schema.tpch_sales_analytics
GROUP BY order_month, order_status
ORDER BY order_month;
Передача значения параметра
Так как представление метрик определяет параметр, его можно вызвать как табличную функцию и передать значение во время запроса. Следующий запрос применяет скидку на 10%. Так как discount имеет значение по умолчанию 0, запросы, которые опустили аргумент, возвращают нерасчетный доход:
SELECT
customer_nation,
MEASURE(total_revenue) AS total_revenue,
MEASURE(discounted_revenue) AS discounted_revenue
FROM catalog.schema.tpch_sales_analytics(discount => 0.1)
GROUP BY customer_nation
ORDER BY discounted_revenue DESC;
Что вы узнали
Вы создали представление метрик, демонстрирующее:
| Функция | Example |
|---|---|
| Соединения схемы Snowflake | Заказы, связывающие клиента и нацию (вложенные соединения "много к одному") |
| Поля времени | Гранулярность по дате, месяцу, году |
| Преобразованные поля |
CASE операторы, SPLIT функции |
| Простые меры |
COUNT, SUM |
| Композиционность |
avg_order_value и revenue_per_customer ссылаются на ранее определённые меры с помощью MEASURE() |
| Отфильтрованные меры |
FILTER (WHERE ...) для условных агрегаций |
| Меры окна | Скользящий 7-дневный подсчет количества клиентов с помощью trailing 7 day |
| Параметры |
discountпараметр, применяемый в мере discounted_revenue |
| Метаданные агента |
display_name, format, synonyms в полях и показателях |
Дополнительные ресурсы
- Меры окна для вычисления скользящей средней и даты итогов.
- Материализация представлений метрик для повышения производительности запросов для больших наборов данных.
- Используйте представления метрик для использования представления метрик в панелях мониторинга AI/BI.