Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этой странице описывается полная грамматика YAML для представлений метрик. Определения представления метрик соответствуют стандартному синтаксису нотации YAML.
Минимальные требования к версии среды выполнения и спецификации YAML для каждой функции см. в разделе "Доступность функций представления метрик".
См. документацию YAML Specification 1.2.2, чтобы узнать больше о спецификациях YAML.
Общие сведения о YAML
Определение YAML для представления метрик включает следующие поля верхнего уровня:
| Поле | Обязательный | Тип | Описание |
|---|---|---|---|
version |
Обязательный | String | Версия спецификации представления метрик. См. сведения о версиях спецификации YAML. |
comment |
Необязательно | String | Описание представления метрик. |
source |
Обязательный | String | Исходные данные для представления метрик. Может быть любым ресурсом каталога Unity, включая представление метрик или SQL-запрос. См . источник. |
filter |
Необязательно | String | Логическое выражение SQL, которое применяется ко всем запросам. См . фильтр. |
joins |
Необязательно | Массив | Схема "Звезда" и соединения схемы snowflake. См. статью "Соединения". |
dimensions |
Conditional | Массив | Определения измерений, включая имя, выражение и необязательные семантические метаданные. Требуется, если нет measures указанных. См. измерения. |
measures |
Conditional | Массив | Определения мер, включая имя, агрегатное выражение и необязательные семантические метаданные. Требуется, если нет dimensions указанных. См. меры. |
materialization |
Необязательно | Объект | Конфигурация для ускорения запросов с материализованными представлениями. Включает определения расписания обновления и материализованного представления. См. материализацию. |
Исходный материал
Поле source указывает источник данных для представления метрик. Вы можете использовать табличный ресурс, например таблицы, представления и метрики, или SQL-запрос в качестве источника. Возможность создания применяется в представлениях метрик. При использовании представления метрик в качестве источника можно ссылаться на его измерения и меры в новом представлении метрик. См. статью "Компонуемость".
Источник ресурса, похожий на таблицу
Ссылка на ресурс, похожий на таблицу, с помощью трех частей:
source: catalog.schema.source_table
Источник SQL-запроса
Чтобы использовать SQL-запрос, напишите текст запроса непосредственно в YAML:
source: SELECT * FROM samples.tpch.orders o
LEFT JOIN samples.tpch.customer c
ON o.o_custkey = c.c_custkey
Замечание
При использовании SQL-запроса в качестве источника с JOIN предложением задайте ограничения первичного и внешнего ключа в базовых таблицах и используйте RELY этот параметр для оптимальной производительности запросов. Дополнительные сведения см. в разделе "Объявление первичных ключей" и связей внешнего ключа иоптимизации запросов с помощью ограничений первичного ключа.
Фильтр
Фильтр в определении YAML применяется ко всем запросам, ссылающимся на представление метрик. Записывает фильтры в виде логических выражений SQL.
# Single condition filter
filter: o_orderdate > '2024-01-01'
# Multiple conditions with AND
filter: o_orderdate > '2024-01-01' AND o_orderstatus = 'F'
# Multiple conditions with OR
filter: o_orderpriority = '1-URGENT' OR o_orderpriority = '2-HIGH'
# Complex filter with IN clause
filter: o_orderstatus IN ('F', 'P') AND o_orderdate >= '2024-01-01'
# Filter with NOT
filter: o_orderstatus != 'O' AND o_totalprice > 1000.00
# Filter with LIKE pattern matching
filter: o_comment LIKE '%express%' AND o_orderdate > '2024-01-01'
Присоединения
Соединения в представлениях метрик поддерживают прямые соединения из таблицы фактов с таблицами измерений (схема звезды) и соединениями с несколькими прыжками в нормализованных таблицах измерений (схемы снежинки). Вы также можете присоединиться к SQL-запросу с помощью инструкции SELECT . См. раздел "Использование SQL-запроса в качестве источника".
Замечание
Присоединенные таблицы не могут содержать MAP столбцы типов. Сведения о распаковке значений из столбцов типов см. в разделе "Взрыв вложенных элементов" изMAP карты или массива.
Каждое определение соединения включает следующие поля:
| Поле | Обязательный | Тип | Описание |
|---|---|---|---|
name |
Обязательный | String | Псевдоним для присоединенной таблицы или SQL-запроса. Используйте этот псевдоним при ссылке на столбцы из присоединенной таблицы в измерениях или мерах. |
source |
Обязательный | String | Трехкомпонентное имя таблицы для присоединения. Также может быть SQL-запросом. |
on |
Conditional | String | Логическое выражение, определяющее условие соединения. Обязательный, если using он не указан. |
using |
Conditional | Массив | Список имен столбцов, присутствующих как в родительской таблице, так и в присоединенной таблице. Обязательный, если on он не указан. |
joins |
Необязательно | Массив | Список определений вложенных соединений для моделирования схемы snowflake. См. сведения о доступности функций представления метрик для минимальных требований к среде выполнения. |
Соединения схемы "Звезда"
В схеме source звездочки таблица фактов и присоединение к одной или нескольким таблицам измерений с помощью .LEFT OUTER JOIN Представления метрик объединяют таблицы фактов и измерений, необходимые для конкретного запроса, на основе выбранных столбцов.
Укажите столбцы соединения с помощью ON предложения или USING предложения:
- Предложение ON: использует логическое выражение для определения условия соединения.
- Предложение USING: перечисляет столбцы с одинаковым именем как в родительской таблице, так и в присоединенной таблице.
Присоединение должно соответствовать отношению "многие к одному". В случаях "многие ко многим" выбрана первая соответствующая строка из присоединенной таблицы измерений.
version: 1.1
source: samples.tpch.lineitem
joins:
- name: orders
source: samples.tpch.orders
on: source.l_orderkey = orders.o_orderkey
- name: part
source: samples.tpch.part
on: source.l_partkey = part.p_partkey
dimensions:
- name: Order Status
expr: orders.o_orderstatus
- name: Part Name
expr: part.p_name
measures:
- name: Total Revenue
expr: SUM(l_extendedprice * (1 - l_discount))
- name: Line Item Count
expr: COUNT(1)
Замечание
Пространство source имен ссылается на столбцы из источника представления метрик, а соединение name ссылается на столбцы из этой присоединенной таблицы. Например, в source.l_orderkey = orders.o_orderkeysource этом случае ссылается lineitem на присоединенную таблицу и orders ссылается на нее. Если префикс не указан в on предложении, ссылка по умолчанию используется для присоединенной таблицы.
Соединения схемы Snowflake
Схема snowflake расширяет схему звезд, нормализуя таблицы измерений и подключая их к подмериям. Это создает структуру соединения с несколькими уровнями. См. сведения о доступности функций представления метрик для минимальных требований к среде выполнения.
Чтобы определить схему snowflake, вложенную joins в определение родительского соединения:
version: 1.1
source: 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
dimensions:
- name: customer_nation
expr: customer.nation.n_name
Размеры
Измерения — это столбцы, используемые в SELECT, WHERE и GROUP BY предложениях во время запроса. Каждое выражение должно возвращать скалярное значение. Измерения могут ссылаться на столбцы из исходных данных или более ранних измерений в представлении метрик.
Каждое определение измерения включает следующие поля:
| Поле | Обязательный | Тип | Описание |
|---|---|---|---|
name |
Обязательный | String | Псевдоним столбца для измерения. |
expr |
Обязательный | String | Выражение SQL, которое может ссылаться на столбцы из исходных данных или ранее определенного измерения. |
comment |
Необязательно | String | Описание измерения. Отображается в каталоге Unity и средствах документации. |
display_name |
Необязательно | String | Метка с возможностью чтения, которая отображается в средствах визуализации. Ограничено 255 символами. Требуется спецификация YAML 1.1. См. сведения о доступности функций представления метрик. |
format |
Необязательно | Карта | Спецификация формата для отображения значений. Требуется спецификация YAML 1.1. См. спецификации формата. |
synonyms |
Необязательно | Массив | Альтернативные имена средств LLM для обнаружения измерения. До 10 синонимов, каждый из которых ограничен 255 символами. Требуется спецификация YAML 1.1. См. синонимы. |
Пример:
dimensions:
# Basic dimension
- name: order_date
expr: o_orderdate
comment: 'Date the order was placed'
display_name: 'Order Date'
# Dimension with SQL expression
- name: order_month
expr: DATE_TRUNC('MONTH', o_orderdate)
display_name: 'Order Month'
# Dimension with synonyms
- name: order_status
expr: CASE
WHEN o_orderstatus = 'O' THEN 'Open'
WHEN o_orderstatus = 'P' THEN 'Processing'
WHEN o_orderstatus = 'F' THEN 'Fulfilled'
END
display_name: 'Order Status'
synonyms: ['status', 'fulfillment status']
Меры
Меры — это выражения, которые создают результаты без предварительно определенного уровня агрегирования. Они должны быть выражены с помощью агрегатных функций. Чтобы ссылаться на меру в запросе, используйте функцию MEASURE . Меры могут ссылаться на базовые поля в исходных данных, более ранних измерениях или более ранних мерах.
Каждое определение меры включает следующие поля:
| Поле | Обязательный | Тип | Описание |
|---|---|---|---|
name |
Обязательный | String | Псевдоним для меры. |
expr |
Обязательный | String | Статистическое выражение SQL, включающее агрегатные функции SQL. |
comment |
Необязательно | String | Описание меры. Отображается в каталоге Unity и средствах документации. |
display_name |
Необязательно | String | Метка с возможностью чтения, которая отображается в средствах визуализации. Ограничено 255 символами. Требуется спецификация YAML 1.1. См. сведения о доступности функций представления метрик. |
format |
Необязательно | Карта | Спецификация формата для отображения значений. Требуется спецификация YAML 1.1. См. спецификации формата. |
synonyms |
Необязательно | Массив | Альтернативные имена средств LLM для обнаружения меры. До 10 синонимов, каждый из которых ограничен 255 символами. Требуется спецификация YAML 1.1. См. сведения о доступности функций представления метрик. |
window |
Необязательно | Массив | Спецификации окон для оконных, накопительных или полуаддитивных агрегатов. Если этот параметр не указан, мера ведет себя как стандартная агрегатная. См. меры окна. |
См. раздел "Агрегатные функции " для списка агрегатных функций.
Пример:
measures:
# Simple count measure
- name: order_count
expr: COUNT(1)
display_name: 'Order Count'
# Sum aggregation measure with synonyms
- name: total_revenue
expr: SUM(o_totalprice)
comment: 'Gross revenue from all orders'
display_name: 'Total Revenue'
synonyms: ['revenue', 'total sales']
# Distinct count measure
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: 'Unique Customers'
# Calculated measure combining multiple aggregations
- name: avg_order_value
expr: SUM(o_totalprice) / COUNT(DISTINCT o_orderkey)
display_name: 'Avg Order Value'
synonyms: ['AOV', 'average order']
# Filtered measure with WHERE condition
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: 'Open Order Revenue'
synonyms: ['backlog', 'outstanding revenue']
Размеры окна
Это важно
Эта функция является экспериментальной.
Поле window определяет меры в виде оконных, накопительных или полуаддитивных агрегатов. Подробные сведения о мерах и вариантах использования окон см. в разделе "Меры окна".
Каждая спецификация окна включает следующие поля:
| Поле | Обязательный | Тип | Описание |
|---|---|---|---|
order |
Обязательный | String | Измерение, определяющее порядок окна. |
range |
Обязательный | String | Экстент окна. Поддерживаемые значения:
|
semiadditive |
Обязательный | String | Метод агрегирования. Поддерживаемые значения: first или last. |
Пример меры окна
В следующем примере вычисляется скользящей 7-дневной счетчик уникальных клиентов:
version: 1.1
source: samples.tpch.orders
dimensions:
- name: order_date
expr: o_orderdate
measures:
- name: rolling_7day_customers
expr: COUNT(DISTINCT o_custkey)
display_name: '7-Day Rolling Customers'
window:
- order: order_date
range: trailing 7 day
semiadditive: last
Материализация
Это важно
Эта функция является экспериментальной.
Поле настраивает автоматическое materialization ускорение запросов с помощью материализованных представлений. Подробные сведения о том, как работает материализация, требования и рекомендации, см. в разделе "Материализация" для представлений метрик.
Это materialization поле содержит следующие поля верхнего уровня:
| Поле | Обязательный | Тип | Описание |
|---|---|---|---|
schedule |
Обязательный | String | Расписание обновления. Использует тот же синтаксис, что и предложение schedule для материализованных представлений. Условие TRIGGER ON UPDATE не поддерживается. |
mode |
Обязательный | String | Необходимо задать значение relaxed. |
materialized_views |
Обязательный | Массив | Список материализованных представлений для материализации. Для каждой записи требуются поля, описанные ниже. |
Каждая запись включает materialized_views следующие поля:
| Поле | Обязательный | Тип | Описание |
|---|---|---|---|
name |
Обязательный | String | Имя материализации. |
type |
Обязательный | String | Тип материализации. Поддерживаемые значения: aggregated (требуется dimensionsили measuresоба) или unaggregated. |
dimensions |
Conditional | Массив | Список имен измерений для материализации. Обязательный параметр, если type он не aggregatedmeasures указан. |
measures |
Conditional | Массив | Список имен мер для материализации. Обязательный параметр, если type он не aggregateddimensions указан. |
Пример материализации
В следующем примере определяется представление метрик с несколькими материализациями:
version: 1.1
source: samples.tpch.orders
dimensions:
- name: order_date
expr: o_orderdate
- name: order_status
expr: o_orderstatus
measures:
- name: total_revenue
expr: SUM(o_totalprice)
- name: order_count
expr: COUNT(1)
materialization:
schedule: every 6 hours
mode: relaxed
materialized_views:
- name: baseline
type: unaggregated
- name: daily_status_metrics
type: aggregated
dimensions:
- order_date
- order_status
measures:
- total_revenue
- order_count
Ссылки на названия столбцов
При ссылке на имена столбцов, содержащих пробелы или специальные символы в выражениях YAML, заключите имя столбца в обратные кавычки, чтобы экранировать пробел или специальный символ. Если выражение начинается с обратного апострофа и используется непосредственно в качестве значения YAML, заключите все выражение в двойные кавычки. Допустимые значения YAML не могут начинаться с обратной кавычки.
Примеры форматирования
Используйте следующие примеры, чтобы узнать, как правильно форматировать YAML в распространенных сценариях.
Указать имя столбца
В следующей таблице показано, как форматировать имена столбцов в зависимости от содержащихся в них символов.
| Случай | Имя исходного столбца | Ссылочные выражения | Примечания |
|---|---|---|---|
| Пробелы отсутствуют | revenue |
expr: "revenue"expr: 'revenue'expr: revenue |
Используйте двойные кавычки, одинарные кавычки или без кавычек вокруг имени столбца. |
| Пробелы | First Name |
expr: "`First Name`" |
Используйте обратные апострофы для экранирования пробелов. Заключите все выражение в двойные кавычки. |
| Имя столбца с пробелами в выражении SQL |
First Name и Last Name. |
expr: CONCAT(`First Name`, , `Last Name`) |
Если выражение не начинается с обратных кавычек, двойные кавычки не требуются. |
| Имя исходного столбца содержит кавычки | "name" |
expr: '`"name"`' |
Используйте обратные апострофы, чтобы экранировать двойные кавычки в имени столбца. Заключите это выражение в одинарные кавычки в определении YAML. |
Использование выражений с двоеточиями
| Случай | Expression | Примечания |
|---|---|---|
| Выражения с двоеточиями | expr: "CASE WHEN `Customer Tier` = 'Enterprise: Premium' THEN 1 ELSE 0 END" |
Поместите всё выражение в двойные кавычки для правильной интерпретации |
Замечание
YAML интерпретирует неквотированные двоеточия как разделители "ключ-значение". Всегда используйте двойные кавычки вокруг выражений, включающих двоеточия.
Многострочная индентация
| Случай | Expression | Примечания |
|---|---|---|
| Многострочная индентация | expr: \| CASE WHEN revenue > 100 THEN 'High' ELSE 'Low' END |
Отступите выражение под первой строкой |
Замечание
| Используйте блочный скаляр после expr: для многостроковых выражений. Все строки должны быть отступлены не менее чем на два пробела после ключа expr для правильного разбора.
Обновление YAML до версии 1.1
Обновление представления метрик до спецификации YAML версии 1.1 требует заботы, так как комментарии обрабатываются иначе, чем в более ранних версиях.
Типы комментариев
- Примечания YAML (#): встроенные или однострочные комментарии, написанные непосредственно в файле YAML с помощью символа #.
- Комментарии каталога Unity: комментарии, хранящиеся в каталоге Unity для представления метрик или его столбцов (измерения и меры). Это отдельно от комментариев YAML.
Рекомендации по обновлению
Выберите путь обновления, соответствующий способу обработки комментариев в представлении метрик. В следующих параметрах описаны доступные подходы и приведены примеры.
Вариант 1. Сохранение комментариев YAML с помощью записных книжек или редактора SQL
Если представление метрик содержит примечания YAML (#), которые вы хотите сохранить, выполните следующие действия.
-
ALTER VIEWИспользуйте команду в записной книжке или редакторе SQL. - Скопируйте исходное определение YAML в
$$..$$раздел послеAS. Измените значение атрибутаversionна1.1. - Сохраните представление метрик.
ALTER VIEW metric_view_name AS
$$
# The notebook preserves inline comments
version: 1.1
source: samples.tpch.orders
dimensions:
- name: order_date # The notebook preserves inline comments
expr: o_orderdate
measures:
# The notebook preserves commented out definitions
# - name: total_orders
# expr: COUNT(o_orderid)
- name: total_revenue
expr: SUM(o_totalprice)
$$
Предупреждение
При выполнении ALTER VIEW удаляются комментарии каталога Unity, если они явно не включены в comment поля определения YAML. Сведения о сохранении комментариев, отображаемых в каталоге Unity, см. в разделе "Вариант 2".
Вариант 2. Сохранение комментариев каталога Unity
Замечание
Следующее руководство применяется только при использовании ALTER VIEW команды в записной книжке или редакторе SQL. При обновлении представления метрик до версии 1.1 с помощью пользовательского интерфейса редактора YAML пользовательский интерфейс редактора YAML автоматически сохраняет комментарии каталога Unity.
- Скопируйте все комментарии каталога Unity в соответствующие
commentполя в определении YAML. Измените значение атрибутаversionна1.1. - Сохраните представление метрик.
ALTER VIEW metric_view_name AS
$$
version: 1.1
source: samples.tpch.orders
comment: "Metric view of order (Updated comment)"
dimensions:
- name: order_date
expr: o_orderdate
comment: "Date of order - Copied from Unity Catalog"
measures:
- name: total_revenue
expr: SUM(o_totalprice)
comment: "Total revenue"
$$
Сведения о журнале версий спецификации YAML и минимальных требованиях к среде выполнения для каждой функции см. в разделе "Доступность функций представления метрик".