Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Определения представлений метрик используют стандартный синтаксис YAML для объявления источника, соединений, полей, мер, фильтров, мер окна и материализации. В следующих разделах описана полная грамматика для каждого из них.
Минимальные требования к версии среды выполнения и спецификации YAML для каждой функции см. в разделе "Доступность функций представления метрик".
См. документацию YAML Specification 1.2.2, чтобы узнать больше о спецификациях YAML.
Изменение YAML в редакторе представления метрик
Вы можете написать и изменить YAML, описанный на этой странице, непосредственно в редакторе представления метрик. В обозревателе каталогов откройте представление метрик и нажмите <> кнопку, чтобы изменить определение. Чтобы создать YAML из описания естественного языка, откройте Genie Code из редактора. Полное пошаговое руководство по редактору см. в разделе "Создание представления метрик".
Поля YAML верхнего уровня
Определение YAML для представления метрик включает следующие поля верхнего уровня:
| Поле | Тип | Description |
|---|---|---|
version |
String | Обязательно. Версия спецификации YAML представления метрик, используемой определением, например 1.1. Это версия формата спецификации, а не номер редакции, назначенный вашему определению. Используйте одну из поддерживаемых версий спецификаций. См. сведения о версиях спецификации YAML. |
comment |
String | Optional. Описание представления метрик. |
source |
String | Обязательно. Исходные данные для представления метрик. Может быть любым ресурсом каталога Unity, включая представление метрик или SQL-запрос. См . источник. |
parameters |
Массив | Optional. Именованные значения, которые вызывающие передаются при запросе представления метрик в качестве табличной функции. См. параметры. |
filter |
String | Optional. Логическое выражение SQL, которое применяется ко всем запросам. См . фильтр. |
joins |
Массив | Optional. Схема "Звезда" и соединения схемы snowflake. См. статью "Соединения". |
fields |
Массив | Условный. Определения полей, включая имя, выражение и необязательные семантические метаданные. Требуется, если нет measures указанных. См. поля. Ключевое dimensions слово принимается в качестве синонима для обратной совместимости. |
measures |
Массив | Условный. Определения мер, включая имя, агрегатное выражение и необязательные семантические метаданные. Требуется, если нет fields указанных. См. меры. |
materialization |
Объект | Optional. Конфигурация для ускорения запросов с материализованными представлениями. Включает определения расписания обновления и материализованного представления. См. материализацию. |
Исходный материал
Поле 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
Note
При использовании SQL-запроса в качестве источника с JOIN предложением задайте ограничения первичного и внешнего ключа в базовых таблицах и используйте RELY опцию для оптимальной производительности запросов. Дополнительные сведения см. в разделе "Объявление первичного ключа", внешнего ключа и уникальных ограничений и оптимизации запросов с помощью первичных и уникальных ограничений.
Параметры
Блок parameters определяет именованные значения, которые вызывающие передаются при запросе представления метрик в качестве табличной функции. Сведения о том, когда и как использовать параметры, включая запросы к параметризованному представлению метрик, см. в разделе "Использование параметров с представлениями метрик".
Каждое определение параметра включает следующие поля:
| Поле | Тип | Description |
|---|---|---|
name |
String | Обязательно. Имя параметра. Ссылайте параметр по этому имени в выражениях полей и мер и передаете его в качестве именованного аргумента при запросе представления метрик. |
data_type |
String | Обязательно. Тип данных SQL параметра, например double, , intstringили date. |
default |
Меняется | Optional. Значение, используемое, когда вызывающий объект не передает параметр. Значение по умолчанию должно быть приведение data_typeк, и оно не может ссылаться на другой параметр или содержать вложенный запрос. Если для одного параметра задано значение по умолчанию, каждый следующий параметр также должен иметь значение по умолчанию. |
В следующем примере определяется discount параметр и ссылается на него в выражении меры:
version: 1.1
source: main.default.sales
parameters:
- name: discount
data_type: double
default: 0
fields:
- name: product
expr: product
measures:
- name: discountedSales
expr: SUM((1 - discount) * amount)
Filter
Фильтр в определении 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'
Joins
Соединения в представлениях метрик поддерживают прямые объединения из таблицы фактов с таблицами измерений (схема звезды) и многошаговые объединения через нормализованные таблицы измерений (схемы снежинки). Вы также можете присоединиться к SQL-запросу с помощью инструкции SELECT . См. раздел "Использование SQL-запроса в качестве источника".
Note
Присоединенные таблицы не могут содержать MAP столбцы типов. См. раздел о распаковке значений из столбцов типа MAP в статье «Извлечение вложенных элементов из карты или массива».
Каждое определение соединения включает следующие поля:
| Поле | Тип | Description |
|---|---|---|
name |
String | Обязательно. Псевдоним для присоединенной таблицы или SQL-запроса. Используйте этот псевдоним при ссылке на столбцы из присоединенной таблицы в полях или мерах. |
source |
String | Обязательно. Трехкомпонентное имя таблицы для присоединения. Также может быть SQL-запросом. |
on |
String | Условный. Логическое выражение, определяющее условие соединения. Обязательно, если using не указано. |
using |
Массив | Условный. Список имен столбцов, присутствующих как в родительской таблице, так и в присоединенной таблице. Обязательно, если on не указано. |
cardinality |
String | Optional. По умолчанию — many_to_one. Связь между источником и присоединенной таблицей. Задайте для one_to_many агрегирования таблицы с несколькими соответствующими строками для каждой исходной строки в качестве отдельного источника фактов. См. соединения "один ко многим". |
joins |
Массив | Optional. Список определений вложенных соединений для моделирования схемы snowflake. См. сведения о доступности функций представления метрик для минимальных требований к среде выполнения. |
rely |
Карта | Optional. Обещает присоединиться к тому, что анализатор может полагаться на создание более эффективных планов запросов. См. Оптимизация соединений с rely. |
Соединения схемы "Звезда"
В звездной схеме 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
fields:
- 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)
Note
Пространство source имен ссылается на столбцы из источника представления метрик, а соединение name ссылается на столбцы из этой присоединенной таблицы. Например, в source.l_orderkey = orders.o_orderkeysource этом случае ссылается lineitem на присоединенную таблицу и orders ссылается на нее. Если префикс не указан в on предложении, ссылка по умолчанию используется для присоединенной таблицы.
Соединения схемы 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
fields:
- name: customer_nation
expr: customer.nation.n_name
Соединения "один ко многим"
Поле cardinality задает связь между источником и присоединенной таблицей. Значение по умолчанию many_to_oneобрабатывает присоединенную таблицу как подстановку измерения. Установите cardinality: one_to_many для обработки присоединенной таблицы как источника фактов, который подсистема агрегирует независимо в исходном зерне, что позволяет одной исходной строке совпадать с несколькими строками в присоединенной таблице. Для соединений с одним ко многим требуется Databricks Runtime 18.1 или более поздней версии и спецификация YAML версии 1.1. См. сведения о доступности функций представления метрик.
Следующие правила применяются к соединениям "один ко многим":
- Столбец "один ко многим" нельзя использовать в
fieldsопределении, так как поле должно разрешаться в одно значение для каждой исходной строки. - Одна функция агрегирования должна ссылаться на столбцы из одного источника. Вы можете применить арифметику в результатах отдельных агрегатов, например
count(orders.order_id) / count(*). - Все потомки соединения "один ко многим" также должны быть
one_to_many. Соединения с братьями верхнего уровня могут смешивать кратности. - Ссылка на столбец в вложенном соединении со своим полным точечным путем через имена соединения, например
orders.order_items.item_id.
Note
Если представление метрик использует one_to_many соединение, его материализации соответствуют только точному совпадению. Совпадение с накопительным пакетом недоступно. См . совпадение с накопительным пакетом.
В следующем примере выполняется присоединение orders к источнику customers таким cardinality: one_to_many образом, чтобы меры заказа меры агрегированы без дублирования строк клиента:
version: 1.1
source: main.sales.customers
joins:
- name: orders
source: main.sales.orders
on: orders.customer_id = source.customer_id
cardinality: one_to_many
fields:
- name: customer_name
expr: customer_name
measures:
- name: customer_count
expr: count(*)
- name: order_count
expr: count(orders.order_id)
- name: total_order_revenue
expr: sum(orders.amount)
Общие сведения и примеры соединения с вложенными элементами см. в разделе "Кратность соединения".
Оптимизация соединений с помощью rely
rely Используйте поле в соединении, чтобы объявить гарантии о связи, используемой анализатором запросов при планировании запросов. Эти гарантии позволяют подсистеме планировать запросы более эффективно и уменьшать сканирование данных, особенно если поля из присоединенной таблицы ссылаются в фильтрах.
Карта rely поддерживает следующие поля:
| Поле | Тип | Description |
|---|---|---|
at_most_one_match |
Boolean | Optional. По умолчанию — false. Когда trueобъявляется, что по крайней мере одна строка в присоединенной таблице соответствует каждой строке в источнике (связь "многие к одному", которая не раздувается). |
Предупреждение
Устанавливается at_most_one_match: true только в том случае, если соединение имеет значение "многие к одному". Эта связь не проверяется во время выполнения. Если несколько строк в присоединенной таблице соответствуют одной исходной строке, меры (например SUM , и COUNT) возвращают неверные результаты.
В следующем примере включено at_most_one_match соединение "многие к одному".orderscustomer Запросы, которые фильтруют или группировать по атрибутам клиента, наиболее эффективно:
version: 1.1
source: samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
on: source.o_custkey = customer.c_custkey
rely:
at_most_one_match: true
fields:
- name: Customer name
expr: customer.c_name
- name: Customer market segment
expr: customer.c_mktsegment
measures:
- name: Total revenue
expr: SUM(o_totalprice)
Поля
Note
fields и dimensions являются эквивалентными ключевыми словами в определении представления метрик.
fields является предпочтительным термином и используется в этой документации. Редактор редактора с низким кодом каталога метки этих столбцов , но YAML, который создает ключевое слово, использует ключевое dimensions слово. Существующие представления метрик, которые продолжают dimensions работать, и оба ключевых слова принимаются в новых или обновленных определениях.
Поля — это столбцы представления метрик, используемые в SELECT, WHEREи GROUP BY предложения во время запроса. Каждое выражение должно возвращать скалярное значение. Поля могут ссылаться на столбцы из исходных данных или более ранних полей в представлении метрик.
Поле может быть следующим:
- Категориальный столбец или столбец группировки, например регион, состояние или отдел.
- Неуверенный числовый столбец, например возраст, цена или количество. Числовые поля можно агрегировать во время запроса с помощью таких функций SQL, как
SUMилиAVG.
Каждое определение поля содержит следующие свойства:
| Property | Тип | Description |
|---|---|---|
name |
String | Требуется для явных выражений столбцов. Псевдоним столбца для поля. Опустите его для выражений подстановочных знаков, где Azure Databricks получает имена из источника. См. поля массового импорта и меры с подстановочными знаками. |
expr |
String | Обязательно. Выражение SQL, которое может ссылаться на столбцы из исходных данных или ранее определенного поля. Может быть подстановочным знаком для импорта всех столбцов из источника или присоединенной таблицы. См. поля массового импорта и меры с подстановочными знаками. |
comment |
String | Optional. Описание поля. Отображается в каталоге Unity и средствах документации. |
display_name |
String | Optional. Метка, которая отображается в средствах визуализации. Ограничено 255 символами. Требуется спецификация YAML 1.1. См. сведения о доступности функций представления метрик. |
format |
Карта | Optional. Спецификация формата для отображения значений. Требуется спецификация YAML 1.1. См. спецификации формата. |
synonyms |
Массив | Optional. Альтернативные имена средств ИИ и бизнес-аналитики для обнаружения поля. До 10 синонимов, каждый из которых ограничен 255 символами. Требуется спецификация YAML 1.1. См. синонимы. |
Предупреждение
Поля представления метрик, подобные строке, всегда всегда STRING, даже если исходный столбец имеет CHAR или VARCHAR. Поскольку CHAR(n) пробелы потеряны, сравнения могут возвращать разные результаты. Например, column = 'COLLEGE' соответствует значению в исходной CHAR(10) таблице (которая является пробелами), но не в поле представления метрик.
Example:
fields:
# Basic field
- name: order_date
expr: o_orderdate
comment: 'Date the order was placed'
display_name: 'Order Date'
# Field with SQL expression
- name: order_month
expr: DATE_TRUNC('MONTH', o_orderdate)
display_name: 'Order Month'
# Field 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 . Показатели могут ссылаться на базовые столбцы в исходных данных, ранее определённые поля или ранее определённые показатели.
Каждое определение меры включает следующие поля:
| Поле | Тип | Description |
|---|---|---|
name |
String | Требуется для явных выражений мер. Псевдоним для меры. Опустите его для выражений подстановочных знаков, где Azure Databricks получает имена из источника. См. поля массового импорта и меры с подстановочными знаками. |
expr |
String | Обязательно. Выражение SQL, содержащее одну или несколько агрегатных функций. Может быть подстановочным знаком для импорта всех мер из источника представления метрик. См. поля массового импорта и меры с подстановочными знаками. |
comment |
String | Optional. Описание меры. Отображается в каталоге Unity и средствах документации. |
display_name |
String | Optional. Метка, которая отображается в средствах визуализации. Ограничено 255 символами. Требуется спецификация YAML 1.1. См. сведения о доступности функций представления метрик. |
format |
Карта | Optional. Спецификация формата для отображения значений. Требуется спецификация YAML 1.1. См. спецификации формата. |
synonyms |
Массив | Optional. Альтернативные имена средств искусственного интеллекта и бизнес-аналитики для обнаружения меры. До 10 синонимов, каждый из которых ограничен 255 символами. Требуется спецификация YAML 1.1. См. сведения о доступности функций представления метрик. |
window |
Массив | Optional. Спецификации окон для оконных, накопительных или полуаддитивных агрегатов. Если этот параметр не указан, мера ведет себя как стандартная агрегатная. См. размеры окна. |
См. раздел "Агрегатные функции " для списка агрегатных функций.
Example:
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']
Поля и меры массового импорта с подстановочными знаками
Применимо к: Databricks Runtime 18.2 и более поздних версий с спецификацией YAML 1.1
fields В определении measures можно использовать подстановочный знак (*) в expr поле для импорта всех столбцов из источника или присоединенной таблицы без перечисления каждой из них. Это полезно, если требуется представление метрик для предоставления каждого столбца из вышестоящего ресурса, аналогичного SELECT * стандартному представлению. Azure Databricks расширяет подстановочный знак к конкретным столбцам при создании или замене представления метрик и наследует каждое имя столбца из имени исходного столбца.
Как и явные определения столбцов, выражения подстановочных знаков расширяются при создании представления метрик. Чтобы получить столбцы, добавленные в источник позже, повторно создайте представление метрик с CREATE OR REPLACE или ALTER.
Подстановочные знаки поддерживают следующие формы:
| Синтаксис | Description |
|---|---|
source.* |
Импортируйте все столбцы из источника представления метрик. |
<join>.* |
Импортируйте все столбцы из присоединенной таблицы, на которую ссылается его имя соединения. Вложенные соединения используют полный точечный путь, например customer.nation.*. |
<target>.* EXCEPT (col1, col2, ...) |
Импортируйте все столбцы из целевого объекта, кроме перечисленных. |
<target>.<struct>.* |
Разверните поля столбца STRUCT в отдельные столбцы. |
Следующие правила применяются к выражениям подстановочных знаков:
- Опустите
nameполе. Azure Databricks наследует имена столбцов из источника, поэтомуnameне допускается для выражения подстановочного знака. - Семантические метаданные не допускаются в выражении подстановочного знака. Не устанавливайте
commentподстановочныйdisplay_nameformatзнак, илиsynonymsподстановочный знак. Чтобы добавить метаданные в определенный столбец, исключите его из подстановочного знакаEXCEPTи явно определите его. -
measuresВ определении подстановочный знак импортирует меры только из источника представления метрик. Базовые таблицы не имеют мер, поэтому подстановочный знак не расширяется до никаких мер, когда источник является базовой таблицей. - Вы не можете ссылаться на подстановочный знак импортируемого столбца по его производном имени в дальнейшем
fieldsилиmeasuresвыражении. Вместо этого указать исходный столбец с полным путем.
Устранение конфликтов имен
При импорте столбцов из нескольких источников с подстановочным знаком столбцы, которые совместно используют имя (например id , или date) и вызывают ошибку при сохранении определения. Чтобы устранить столкновение, исключите столбец из каждого подстановочного знака EXCEPT, а затем определите его явным образом с уникальным именем:
fields:
- expr: source.* EXCEPT (id)
- expr: customer.* EXCEPT (id)
- name: source_id
expr: source.id
- name: customer_id
expr: customer.id
Пример подстановочного знака
Следующее определение импортирует все столбцы из источника и из присоединенной таблицы, исключает два столбца и явно определяет один столбец для добавления метаданных:
version: 1.1
source: samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
on: source.o_custkey = customer.c_custkey
joins:
- name: nation
source: samples.tpch.nation
on: customer.c_nationkey = nation.n_nationkey
fields:
# Import all columns from the source
- expr: source.*
# Import all columns from a joined table, excluding two
- expr: customer.nation.* EXCEPT (n_name, n_comment)
# Define a specific column explicitly to add metadata
- name: nation_name
expr: customer.nation.n_name
comment: "Customer's nation"
display_name: 'Nation Name'
Размеры окна
Поле window определяет меры в виде оконных, накопительных или полуаддитивных агрегатов. Подробные сведения о мерах и вариантах использования окон см. в разделе "Меры окна".
Каждая спецификация окна включает следующие поля:
| Поле | Тип | Description |
|---|---|---|
order |
String | Обязательно. Поле, определяющее порядок окна. (1) |
range |
String | Обязательно. Экстент окна. См. поддерживаемые range значения. Числовое значение в диапазоне trailing или leading может быть целочисленным параметром, а не литералом, поэтому вызывающий передаёт размер окна во время запроса. См. параметр «Передай размер окна». |
semiadditive |
String | Обязательно. Метод агрегирования. Поддерживаемые значения: first или last. |
offset |
String | Optional. Требуется спецификация Databricks Runtime 18.1 и YAML версии 1.1 или более поздней. Сдвиг кадра окна назад или вперед вдоль order поля на фиксированный интервал. Значение имеет форму<n> <period>, где n является целое число со знаком (отрицательный внешний вид назад, положительный взгляд вперед) и period является одним из day, , days, month, monthsyearили years. Примеры: -12 month, 1 year, -3 days, 7 day. Поле order должно быть столбцом даты или метки времени.
offset не влияет на range: all. Если смещенный кадр выходит за пределы доступных данных, мера оценивается NULL. Знаковое целое число может быть целочисленным параметром, а не литералом, поэтому вызывающий передаёт смещение в момент запроса. Знак должен быть частью значения параметра, а не записываться перед именем параметра. См. параметр «Передай размер окна». Примеры использования и работы см. в статье о offset смене фрейма окна. |
(1) Указанное поле должно быть детерминированным. Недетерминированные выражения, такие как rand(), uuid()или current_timestamp() непредсказуемое упорядочивание окон и могут привести к неправильным результатам агрегирования.
Поддерживаемые значения range
-
current: строки, в которых значение порядка окна равно значению строки привязки. -
cumulative: все строки, в которых значение порядка окна меньше или равно значению строки привязки. -
trailing <value> <unit> [inclusive | exclusive]: строки из строки привязки, идут назад по указанным единицам времени, напримерtrailing 7 day. Необязательныйinclusiveилиexclusiveмодификатор требует Databricks Runtime 18.1 и спецификации YAML версии 1.1 или более поздней, а также определяет, включена ли строка привязки в окно. Значение по умолчанию —exclusive. См. раздел "Включить или исключить строку привязки". -
leading <value> <unit> [inclusive | exclusive]: строки из строки привязки, исходя из указанной единицы времени, напримерleading 3 month. Необязательныйinclusiveилиexclusiveмодификатор требует Databricks Runtime 18.1 и спецификации YAML версии 1.1 или более поздней, а также определяет, включена ли строка привязки в окно. Значение по умолчанию —exclusive. См. раздел "Включить или исключить строку привязки". -
all: все строки независимо от значения упорядочения окна.
Пример меры окна
В следующем примере вычисляется скользящей 7-дневной счетчик уникальных клиентов:
version: 1.1
source: samples.tpch.orders
fields:
- 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
Передайте параметр размера окна
Вместо того чтобы жёстко кодировать числовое значение в a trailing или leadingrange или в offset, вы можете ссылаться на параметр, поэтому вызывающий передаёт размер окна при запросе к метрическому представлению. Для этого требуется SQL-хранилище или другой вычислительный ресурс с Databricks Runtime 18.2 и выше.
К параметру, используемому в качестве размера окна, применяются следующие правила:
- Параметры
data_typeдолжны быть интегралными, такимиintкак ,smallint, илиbigint. - Значение должно быть чистым именем параметра, а не выражением. Например, используйте
trailing window_size day, а неtrailing window_size + 1 day. Также нельзя записать знак перед именем параметра, например-window_size, вoffset. Чтобы пройти отрицательный смещение, поместите знак внутрь значения параметра. - Параметр нельзя называть по ключевому слову окна, например, по типу диапазона (
trailing,leading), периоду (day,month,year), ключевому слову инклюзивности (inclusive,exclusive) илиoffset. - Единица остаётся буквальной. Вы можете параметризировать только числовую величину, а не период.
Следующий пример определяет window_size параметр и ссылается на него в определённом trailing диапазоне, поэтому каждый звонящий выбирает количество дней в скользящем окне:
version: 1.1
source: samples.tpch.orders
parameters:
- name: window_size
data_type: int
default: 7
fields:
- name: order_date
expr: o_orderdate
measures:
- name: rolling_customers
expr: COUNT(DISTINCT o_custkey)
display_name: 'Rolling Customers'
window:
- order: order_date
range: trailing window_size day
semiadditive: last
Для запроса к метрическому представлению, определяющему параметры, см. Запрос к метрическому виду с параметрами.
Материализация
Поле настраивает автоматическое materialization ускорение запросов с помощью материализованных представлений. Подробные сведения о том, как работает материализация, требования и рекомендации, см. в разделе "Материализация" для представлений метрик.
Note
Невозможно материализовать представление метрик, определяющее параметры.
Это materialization поле содержит следующие поля верхнего уровня:
| Поле | Тип | Description |
|---|---|---|
schedule |
String | Optional. Расписание обновления. Использует тот же синтаксис, что и предложение schedule для материализованных представлений. Если опущено, материализация обновляется только вручную. Чтобы активировать обновление вручную, см. статью "Обновление вручную". Условие TRIGGER ON UPDATE не поддерживается. |
mode |
String | Обязательно. Необходимо задать значение relaxed. |
materialized_views |
Массив | Обязательно. Список материализованных представлений для материализации. Для каждой записи требуются поля, описанные ниже. |
Каждая запись включает materialized_views следующие поля:
| Поле | Тип | Description |
|---|---|---|
name |
String | Обязательно. Имя материализации. |
type |
String | Обязательно. Тип материализации. Поддерживаемые значения: aggregated (требуется dimensionsили measuresоба) или unaggregated. Для представления метрик допускается только одна unaggregated запись. Нерегрегированные записи не используют dimensions поля или measures поля. |
dimensions |
Массив | Условный. Список имен полей для материализации, используя dimensions ключевое слово, даже если используется fieldsопределение верхнего уровня. Обязательный параметр, если type он не aggregatedmeasures указан. |
measures |
Массив | Условный. Список имен мер для материализации. Обязательный параметр, если type он не aggregateddimensions указан. |
cluster_by |
Объект | Optional. Кластеризация столбцов для материализации, эквивалентная CLUSTER BY предложению в материализованном представлении. Укажите cols список имен столбцов или auto: true задайте для параметра Databricks автоматически выбирать столбцы кластеризации. |
partition_by |
Массив | Optional. Список столбцов для секционирования материализации по PARTITION BY предложению в материализованном представлении. |
Note
Блок материализации использует ключевое dimensions: слово, а не fields:. Используйте dimensions: при перечислении полей для материализации, даже если используется fields:определение верхнего уровня.
Пример материализации
В следующем примере определяется представление метрик с несколькими материализациями:
version: 1.1
source: prod.operations.orders_enriched_view
filter: revenue > 0
# filter, fields, and measures can't use invoker-dependent expressions: no current_user(), is_member(), etc.
# source can't have RLS, column masking, or ABAC policies
joins:
- name: customers
source: prod.operations.customers
on: source.customer_id = customers.id
# if one-to-many, all materializations below drop to exact match only
fields:
- name: category
expr: substring(category, 5)
- name: order_date
expr: order_date
measures:
- name: total_revenue
expr: SUM(revenue)
- name: number_of_suppliers
expr: COUNT(DISTINCT supplier_id)
- name: revenue_for_open_orders
expr: SUM(revenue) FILTER (WHERE status = 'O')
- name: blended_margin
expr: SUM(revenue) - SUM(cost)
- name: rolling_7day_customers
expr: COUNT(DISTINCT customer_id)
window:
- order: order_date
range: trailing 7 day
semiadditive: last
materialization:
schedule: every 6 hours
mode: relaxed
materialized_views:
- name: baseline
type: unaggregated
# only one allowed per metric view; doesn't use dimensions or measures keys
# no benefit if source is an unfiltered direct table reference
- name: daily_status_metrics
type: aggregated
dimensions:
- order_date
- category # avoid overly granular dimensions, such as millisecond timestamps
measures:
- total_revenue # rollup-eligible
- number_of_suppliers # exact match only (non-additive)
- revenue_for_open_orders # rollup-eligible (deterministic filter)
- blended_margin # exact match only (multiple aggregates)
- rolling_7day_customers # exact match only (window measure)
cluster_by:
cols:
- order_date
- category
partition_by:
- order_date
Ссылки на названия столбцов
При ссылке на имена столбцов, содержащих пробелы или специальные символы в выражениях 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"`'
Используйте обратные знаки, чтобы экранировать двойные кавычки в имени столбца. Заключите выражение в одинарные кавычки.
Выражения с двоеточиями
expr: "CASE WHEN `Customer Tier` = 'Enterprise: Premium' THEN 1 ELSE 0 END"
Note
YAML интерпретирует неквотированные двоеточия как разделители "ключ-значение". Всегда используйте двойные кавычки вокруг выражений, включающих двоеточия.
Многострочный выражения
expr: |
CASE WHEN
revenue > 100 THEN 'High'
ELSE 'Low'
END
Note
Используйте скалярный | блок после 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
fields:
- 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
Note
Следующее руководство применяется только при использовании 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)"
fields:
- 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 и минимальных требованиях к среде выполнения для каждой функции см. в разделе "Доступность функций представления метрик".