Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las definiciones de vista de métricas usan la sintaxis YAML estándar para declarar el origen, las combinaciones, los campos, las medidas, los filtros, las medidas de ventana y la materialización. En las secciones siguientes se documenta la gramática completa para cada una.
Para conocer los requisitos mínimos de la versión de la especificación en tiempo de ejecución y YAML para cada característica, consulte Disponibilidad de características de la vista de métricas.
Consulte la documentación de YAML Specification 1.2.2 para obtener más información sobre las especificaciones de YAML.
Edición de YAML en el editor de vistas de métricas
Puede escribir y editar el CÓDIGO YAML descrito en esta página directamente en el editor de vistas de métricas. En el Explorador de catálogos, abra una vista de métricas y haga clic en el <> botón para editar la definición. Para generar YAML a partir de una descripción del lenguaje natural en su lugar, abra Genie Code desde el editor. Para ver el tutorial completo del editor, consulte Creación de una vista de métricas.
Campos YAML de nivel superior
La definición de YAML para una vista de métrica incluye los siguientes campos de nivel superior:
| Campo | Tipo | Description |
|---|---|---|
version |
String | Required. Versión de la especificación YAML de la vista de métricas que usa la definición, como 1.1. Esta es la versión del formato de especificación, no un número de revisión que asigne a su propia definición. Use una de las versiones de especificación admitidas. Consulte versiones de especificación de YAML. |
comment |
String | Optional. Descripción de la vista de métricas. |
source |
String | Required. Datos de origen de la vista de métricas. Puede ser cualquier recurso de catálogo de Unity similar a tabla, incluida una vista de métricas o una consulta SQL. Consulte Origen. |
parameters |
Array | Optional. Valores con nombre que los llamadores pasan cuando consultan la vista de métrica como una función con valores de tabla. Consulte Parámetros. |
filter |
String | Optional. Expresión booleana sql que se aplica a todas las consultas. Consulte Filtro. |
joins |
Array | Optional. Esquema de estrella y combinaciones de esquema de copo de nieve. Consulte Combinaciones. |
fields |
Array | Condicional. Definiciones de campo, incluidos el nombre, la expresión y los metadatos semánticos opcionales. Obligatorio si no se especifica ninguno measures . Consulte Campos. La dimensions palabra clave se acepta como sinónimo de compatibilidad con versiones anteriores. |
measures |
Array | Condicional. Definiciones de medida, como el nombre, la expresión de agregado y los metadatos semánticos opcionales. Obligatorio si no se especifica ninguno fields . Consulte Medidas. |
materialization |
Objeto | Optional. Configuración para acelerar las consultas con vistas materializadas. Incluye la programación de actualización y las definiciones de vista materializadas. Consulte Materialización. |
Source
El source campo especifica el origen de datos para la vista de métricas. Entre los orígenes admitidos se incluyen tablas, vistas, vistas de métricas y consultas SQL. La capacidad de redacción se aplica en las vistas de métricas. Al usar una vista de métrica como origen, puede hacer referencia a sus campos y medidas en la nueva vista de métricas. Consulte Composabilidad.
Origen de recursos similares a tabla
Haga referencia a un recurso similar a una tabla con su nombre de tres partes:
source: catalog.schema.source_table
Origen de consulta SQL
Para usar una consulta SQL, escriba el texto de la consulta directamente en YAML:
source: SELECT * FROM samples.tpch.orders o
LEFT JOIN samples.tpch.customer c
ON o.o_custkey = c.c_custkey
Note
Cuando se usa una consulta SQL como origen con una JOIN cláusula , establezca restricciones de clave principal y externa en las tablas subyacentes y use la RELY opción para obtener un rendimiento óptimo de las consultas. Para obtener más información, consulte Declarar restricciones principales, clave externa y optimización de consultasmediante la clave principal y restricciones únicas.
Parámetros
El parameters bloque define los valores con nombre que los autores de llamada pasan cuando consultan la vista de métrica como una función con valores de tabla. Para saber cuándo y cómo usar parámetros, incluida la consulta de una vista de métrica con parámetros, consulte Uso de parámetros con vistas de métricas.
Cada definición de parámetro incluye los siguientes campos:
| Campo | Tipo | Description |
|---|---|---|
name |
String | Required. Nombre del parámetro. Haga referencia al parámetro por este nombre en las expresiones de campo y medida y páselo como argumento con nombre al consultar la vista de métricas. |
data_type |
String | Required. El tipo de datos SQL del parámetro, como double, int, stringo date. |
default |
Varía | Optional. Valor utilizado cuando un autor de la llamada no pasa el parámetro . El valor predeterminado debe convertirse a y no puede hacer referencia a data_typeotro parámetro ni contener una subconsulta. Si establece un valor predeterminado para un parámetro, todos los parámetros siguientes también deben tener un valor predeterminado. |
En el ejemplo siguiente se define un discount parámetro y se hace referencia a él en una expresión de medida:
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)
Filtrar
Un filtro de la definición de YAML se aplica a todas las consultas que hacen referencia a la vista de métricas. Escribir filtros como expresiones booleanas de 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
Las combinaciones en vistas de métricas admiten combinaciones directas de una tabla de hechos a tablas de dimensiones (esquema de estrella) y combinaciones de varios saltos entre tablas de dimensiones normalizadas (esquemas de copo de nieve). También puede unirse a una consulta SQL mediante una SELECT instrucción . Consulte Uso de una consulta SQL como origen.
Note
Las tablas combinadas no pueden incluir MAP columnas de tipo. Para desempaquetar valores de columnas de MAP tipo, vea Explotar elementos anidados de una asignación o matriz.
Cada definición de combinación incluye los siguientes campos:
| Campo | Tipo | Description |
|---|---|---|
name |
String | Required. Alias de la tabla combinada o consulta SQL. Use este alias al hacer referencia a columnas de la tabla combinada en campos o medidas. |
source |
String | Required. Nombre de tres partes de la tabla que se va a combinar. También puede ser una consulta SQL. |
on |
String | Condicional. Expresión booleana que define la condición de combinación. Es obligatorio si using no se especifica. |
using |
Array | Condicional. Lista de nombres de columna presentes tanto en la tabla primaria como en la tabla combinada. Es obligatorio si on no se especifica. |
cardinality |
String | Optional. Tiene como valor predeterminado many_to_one. Relación entre el origen y la tabla combinada. Establézcalo one_to_many en para agregar una tabla que tenga varias filas coincidentes por fila de origen como origen de hechos independiente. Consulte Combinaciones de uno a varios. |
joins |
Array | Optional. Lista de definiciones de combinación anidadas para el modelado de esquemas de copo de nieve. Consulte Disponibilidad de características de la vista de métricas para conocer los requisitos mínimos del entorno de ejecución. |
rely |
Map | Optional. Promete la combinación en la que el analizador puede confiar para generar planes de consulta más eficaces. Consulte Optimización de combinaciones con rely. |
Combinaciones de esquema de estrella
En un esquema de estrella, source es la tabla de hechos y combina con una o varias tablas de dimensiones mediante .LEFT OUTER JOIN Las vistas de métricas unen las tablas de hechos y dimensiones necesarias para la consulta específica, en función de las columnas seleccionadas.
Especifique las columnas de combinación mediante una ON cláusula o una USING cláusula :
-
ONcláusula: usa una expresión booleana para definir la condición de combinación. -
USINGcláusula: enumera las columnas con el mismo nombre en la tabla primaria y en la tabla combinada.
La unión debe basarse en una relación de varios a uno. En los casos de muchos a muchos, se selecciona la primera fila coincidente de la tabla de dimensión combinada.
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
El source espacio de nombres hace referencia a columnas del origen de la vista de métricas, mientras que las de una combinación name hacen referencia a columnas de esa tabla combinada. Por ejemplo, en source.l_orderkey = orders.o_orderkey, source hace referencia a lineitem y orders hace referencia a la tabla combinada. Si no se proporciona ningún prefijo en una on cláusula , la referencia tiene como valor predeterminado la tabla combinada.
Combinaciones de esquema de Snowflake
Un esquema de copo de nieve extiende un esquema de estrella normalizando las tablas de dimensiones y conectándolas a subdimensiones. Esto crea una estructura de combinación de varios niveles. Consulte Disponibilidad de características de la vista de métricas para conocer los requisitos mínimos del entorno de ejecución.
Para definir un esquema de copo de nieve, anida joins dentro de una definición de combinación primaria:
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
Combinaciones de uno a varios
El cardinality campo establece la relación entre el origen y una tabla combinada. El valor predeterminado, many_to_one, trata la tabla combinada como una búsqueda de dimensiones. Se establece cardinality: one_to_many para tratar la tabla combinada como un origen de hechos que el motor agrega de forma independiente en el grano de origen, lo que permite que una sola fila de origen coincida con varias filas de la tabla combinada. Las combinaciones de uno a varios requieren Databricks Runtime 18.1 o posterior y la especificación YAML versión 1.1. Consulte Disponibilidad de características de la vista métrica.
Las reglas siguientes se aplican a combinaciones de uno a varios:
- Una columna de uno a varios no se puede usar en una
fieldsdefinición, ya que un campo debe resolverse en un valor único por fila de origen. - Una sola función de agregación debe hacer referencia a columnas de un origen. Puede aplicar aritmética en los resultados de agregaciones independientes, como
count(orders.order_id) / count(*). - Todos los descendientes de una combinación uno a varios también deben ser
one_to_many. Las combinaciones del mismo nivel de nivel superior pueden mezclar cardinalidades. - Haga referencia a una columna de una combinación anidada con su ruta de acceso de punto completa a través de los nombres de combinación, como
orders.order_items.item_id.
Note
Cuando una vista de métrica usa una one_to_many combinación, sus materializaciones solo califican para coincidencia exacta. La coincidencia de acumulación no está disponible. Consulte Coincidencia de acumulación.
En el orders ejemplo siguiente se combina con un customers origen con cardinality: one_to_many para que las medidas de pedido se agreguen sin duplicar las filas del cliente:
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)
Para obtener detalles conceptuales y ejemplos de combinación anidada y del mismo nivel, consulte Join cardinality(Cardinalidad de unión).
Optimización de combinaciones con rely
Use el rely campo de una combinación para declarar garantías sobre la relación que usa el analizador de consultas al planear las consultas. Estas garantías permiten al motor planear consultas de forma más eficaz y reducir los datos examinados, especialmente cuando se hace referencia a campos de la tabla combinada en filtros.
El rely mapa admite los siguientes campos:
| Campo | Tipo | Description |
|---|---|---|
at_most_one_match |
Boolean | Optional. Tiene como valor predeterminado false. Cuando true, declara que, como máximo, una fila de la tabla combinada coincide con cada fila del origen (una relación de varios a uno que no se ramificada). |
Advertencia
Establezca at_most_one_match: true solo cuando la combinación sea de varios a uno. Esta relación no se valida en tiempo de ejecución. Si varias filas de la tabla combinada coinciden con una sola fila de origen, las medidas (como SUM y COUNT) devuelven resultados incorrectos.
En el ejemplo siguiente se habilita at_most_one_match una combinación de varios a uno de orders a customer. Las consultas que filtran o agrupan por atributos de cliente se benefician más:
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)
Campos
Note
fields y dimensions son palabras clave equivalentes en una definición de vista de métrica.
fields es el término preferido y se usa en toda esta documentación. El editor de código bajo del Explorador de catálogos etiqueta estas columnas Campos, pero yaml que genera usa la dimensions palabra clave . Las vistas de métricas existentes que usan dimensions siguen funcionando y ambas palabras clave se aceptan en definiciones nuevas o actualizadas.
Los campos son columnas de vista de métricas usadas en SELECTlas cláusulas , WHEREy GROUP BY en el momento de la consulta. Cada expresión debe devolver un valor escalar. Los campos pueden hacer referencia a columnas de los datos de origen o a campos definidos anteriormente en la vista de métricas.
Un campo puede ser:
- Una columna de categoría o agrupación, como una región, un estado o un departamento.
- Columna numérica no agregado, como una antigüedad, un precio o una cantidad. Los campos numéricos se pueden agregar en tiempo de consulta mediante funciones SQL como
SUMoAVG.
Cada definición de campo incluye las siguientes propiedades:
| Property | Tipo | Description |
|---|---|---|
name |
String | Obligatorio para expresiones de columna explícitas. Alias de columna para el campo. Omita para las expresiones con caracteres comodín, donde Azure Databricks deriva nombres del origen. Consulte Importación masiva de campos y medidas con caracteres comodín. |
expr |
String | Required. Expresión SQL que puede hacer referencia a columnas de los datos de origen o a un campo definido previamente. Puede ser un carácter comodín para importar todas las columnas desde el origen o una tabla combinada. Consulte Importación masiva de campos y medidas con caracteres comodín. |
comment |
String | Optional. Descripción del campo. Aparece en el catálogo de Unity y en las herramientas de documentación. |
display_name |
String | Optional. Etiqueta que aparece en las herramientas de visualización. Tiene un límite de 255 caracteres. Requiere la especificación YAML 1.1. Consulte Disponibilidad de características de la vista métrica. |
format |
Map | Optional. Especificación de formato para cómo se muestran los valores. Requiere la especificación YAML 1.1. Consulte Especificaciones de formato. |
synonyms |
Array | Optional. Nombres alternativos para las herramientas de INTELIGENCIA ARTIFICIAL y BI para detectar el campo. Hasta 10 sinónimos, cada uno limitado a 255 caracteres. Requiere la especificación YAML 1.1. Consulte Sinónimos. |
Advertencia
Los campos de vista de métricas de tipo cadena son siempre STRING, incluso cuando la columna de origen es CHAR o VARCHAR. Dado que CHAR(n) se pierde el espaciado, las comparaciones pueden devolver resultados diferentes. Por ejemplo, column = 'COLLEGE' coincide con CHAR(10) valor en la tabla de origen (que está rellenada con espacios), pero no en el campo de la vista de métricas.
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']
Medidas
Las medidas son expresiones que generan resultados sin un nivel de agregación determinado previamente. Deben expresarse mediante funciones de agregado. Para hacer referencia a una medida en una consulta, use la MEASURE función . Las medidas pueden hacer referencia a columnas base en los datos de origen, los campos definidos anteriormente o las medidas definidas anteriormente.
Cada definición de medida incluye los siguientes campos:
| Campo | Tipo | Description |
|---|---|---|
name |
String | Necesario para expresiones de medida explícitas. Alias de la medida. Omita para las expresiones con caracteres comodín, donde Azure Databricks deriva nombres del origen. Consulte Importación masiva de campos y medidas con caracteres comodín. |
expr |
String | Required. Expresión SQL que contiene una o varias funciones de agregado. Puede ser un carácter comodín para importar todas las medidas desde un origen de vista de métricas. Consulte Importación masiva de campos y medidas con caracteres comodín. |
comment |
String | Optional. Descripción de la medida. Aparece en el catálogo de Unity y en las herramientas de documentación. |
display_name |
String | Optional. Etiqueta que aparece en las herramientas de visualización. Tiene un límite de 255 caracteres. Requiere la especificación YAML 1.1. Consulte Disponibilidad de características de la vista métrica. |
format |
Map | Optional. Especificación de formato para cómo se muestran los valores. Requiere la especificación YAML 1.1. Consulte Especificaciones de formato. |
synonyms |
Array | Optional. Nombres alternativos para las herramientas de INTELIGENCIA ARTIFICIAL y BI para detectar la medida. Hasta 10 sinónimos, cada uno limitado a 255 caracteres. Requiere la especificación YAML 1.1. Consulte Disponibilidad de características de la vista métrica. |
window |
Array | Optional. Especificaciones de ventana para agregaciones de ventana, acumulativas o semiaditivas. Cuando no se especifica, la medida se comporta como un agregado estándar. Consulte Medidas de ventana. |
Consulte Funciones de agregado para obtener una lista de funciones de agregado.
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']
Importación masiva de campos y medidas con caracteres comodín
Se aplica a: Databricks Runtime 18.2 y versiones posteriores con la especificación YAML 1.1
En una fields definición o measures , puede usar un carácter comodín (*) en el expr campo para importar todas las columnas del origen o una tabla combinada sin enumerar cada una de ellas. Esto resulta útil cuando desea que una vista de métrica exponga cada columna de un recurso ascendente, similar a SELECT * en una vista estándar. Azure Databricks expande el carácter comodín a columnas concretas al crear o reemplazar la vista de métricas y deriva cada nombre de columna del nombre de columna de origen.
Al igual que las definiciones de columna explícitas, las expresiones comodín se expanden al crear la vista de métricas. Para recoger columnas agregadas al origen más adelante, vuelva a crear la vista de métricas con CREATE OR REPLACE o ALTER.
Los caracteres comodín admiten los siguientes formatos:
| Sintaxis | Description |
|---|---|
source.* |
Importe todas las columnas desde el origen de la vista de métricas. |
<join>.* |
Importe todas las columnas de una tabla combinada, a las que hace referencia su nombre de combinación. Las combinaciones anidadas usan la ruta de acceso de punto completa, como customer.nation.*. |
<target>.* EXCEPT (col1, col2, ...) |
Importe todas las columnas del destino excepto las enumeradas. |
<target>.<struct>.* |
Expanda los campos de una STRUCT columna en columnas independientes. |
Las reglas siguientes se aplican a expresiones comodín:
- Omita el
namecampo. Azure Databricks deriva nombres de columna del origen, por lo quenameno se permite en una expresión comodín. - No se permiten metadatos semánticos en una expresión comodín. No establezca
comment,display_name,formatosynonymsen un carácter comodín. Para agregar metadatos a una columna específica, excluya del carácter comodín conEXCEPTy defina explícitamente. - En una
measuresdefinición, un carácter comodín importa solo desde un origen de vista de métricas. Las tablas base no tienen medidas, por lo que un carácter comodín se expande a ninguna medida cuando el origen es una tabla base. - No se puede hacer referencia a una columna importada por caracteres comodín por su nombre derivado en una expresión o
fieldsposteriormeasures. Haga referencia a la columna de origen con su ruta de acceso completa en su lugar.
Resolución de colisiones de nombres
Al importar columnas de más de un origen con un carácter comodín, las columnas que comparten un nombre (como id o date) colisionan y provocan un error al guardar la definición. Para resolver una colisión, excluya la columna de cada carácter comodín con EXCEPTy defina explícitamente con un nombre único:
fields:
- expr: source.* EXCEPT (id)
- expr: customer.* EXCEPT (id)
- name: source_id
expr: source.id
- name: customer_id
expr: customer.id
Ejemplo de caracteres comodín
La siguiente definición importa todas las columnas del origen y de una tabla combinada, excluye dos columnas y define una columna explícitamente para agregar metadatos:
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'
Medidas de Windows
El window campo define agregaciones de ventanas, acumulativas o semiaditivas para las medidas. Para obtener información detallada sobre las medidas de ventana y los casos de uso, vea Medidas de ventana.
Cada especificación de ventana incluye los siguientes campos:
| Campo | Tipo | Description |
|---|---|---|
order |
String | Required. Campo que determina la ordenación de la ventana. (1) |
range |
String | Required. Extensión de la ventana. Consulte Valores admitidosrange. El valor numérico en un trailing rango de o leading puede ser un parámetro entero en lugar de un literal, de modo que un llamador pasa el tamaño de la ventana en el momento de la consulta. Véase Pasar un tamaño de ventana como parámetro. |
semiadditive |
String | Required. Método de agregación. Valores admitidos: first o last. |
offset |
String | Optional. Requiere Databricks Runtime 18.1 y la especificación YAML versión 1.1 o posterior. Desplaza el marco de ventana hacia atrás o hacia delante a lo largo del order campo por un intervalo fijo. El valor es del formato <n> <period>, donde n es un entero con signo (el aspecto negativo se ve hacia atrás, el aspecto positivo hacia delante) y period es uno de day, days, month, months, yearo years. Ejemplos: -12 month, 1 year, -3 days, 7 day. El order campo debe ser una columna de fecha o marca de tiempo.
offset no tiene ningún efecto en range: all. Si el marco desplazado está fuera de los datos disponibles, la medida se evalúa como NULL. El entero con signo puede ser un parámetro entero en lugar de un literal, por lo que un llamador pasa el desplazamiento en el momento de la consulta. El signo debe formar parte del valor del parámetro, no estar escrito antes del nombre del parámetro. Véase Pasar un tamaño de ventana como parámetro. Para ver ejemplos de uso y trabajos, vea Cómo offset cambia el marco de la ventana. |
(1) El campo al que se hace referencia debe ser determinista. Las expresiones no deterministas, como rand(), uuid()o current_timestamp() generan un orden de ventana impredecible y pueden dar lugar a resultados de agregación incorrectos.
Valores de range admitidos
-
current: filas donde el valor de ordenación de ventanas es igual al valor de la fila de anclaje. -
cumulative: todas las filas en las que el valor de ordenación de ventanas es menor o igual que el valor de la fila de anclaje. -
trailing <value> <unit> [inclusive | exclusive]: filas de la fila de anclaje que va hacia atrás por las unidades de tiempo especificadas, por ejemplotrailing 7 day. El modificador oinclusiveopcionalexclusiverequiere Databricks Runtime 18.1 y la especificación YAML versión 1.1 o posterior, y controla si la fila de anclaje está incluida en la ventana. El valor predeterminado esexclusive. Consulte Incluir o excluir la fila de anclaje. -
leading <value> <unit> [inclusive | exclusive]: filas de la fila de delimitador en adelante por las unidades de tiempo especificadas, por ejemploleading 3 month. El modificador oinclusiveopcionalexclusiverequiere Databricks Runtime 18.1 y la especificación YAML versión 1.1 o posterior, y controla si la fila de anclaje está incluida en la ventana. El valor predeterminado esexclusive. Consulte Incluir o excluir la fila de anclaje. -
all: todas las filas independientemente del valor de ordenación de ventanas.
Ejemplo de medida de ventana
En el ejemplo siguiente se calcula un recuento gradual de 7 días de clientes únicos:
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
Pasar un tamaño de ventana como parámetro
En lugar de codificar el valor numérico en un trailing o leadingrange o en un offset, puedes referenciar un parámetro, de modo que un llamador pasa el tamaño de la ventana cuando consulta la vista de la métrica. Esto requiere un almacén SQL u otro recurso de cómputo que ejecute Databricks Runtime 18.2 o superior.
Las siguientes reglas se aplican a un parámetro utilizado como tamaño de ventana:
- Los parámetros
data_typedeben ser integrales, comoint,smallint, obigint. - El valor debe ser un nombre de parámetro básico, no una expresión. Por ejemplo, use
trailing window_size day, notrailing window_size + 1 day. Tampoco puedes escribir un signo antes del nombre del parámetro, como-window_sizeen unoffset. Para pasar un desplazamiento negativo, coloca el signo dentro del valor del parámetro. - El parámetro no puede nombrarse según una palabra clave de ventana, como un tipo de rango (
trailing,leading), un punto (day,month,year), una palabra clave de inclusión (inclusive,exclusive), ooffset. - La unidad sigue siendo literal. Solo puedes parametrizar la magnitud numérica, no el periodo.
El siguiente ejemplo define un window_size parámetro y lo referencia en un trailing rango, de modo que cada llamante elija el número de días en la ventana móvil:
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
Para consultar una vista métrica que define parámetros, véase Consulta una vista métrica con parámetros.
Materialización
El materialization campo configura la aceleración automática de consultas mediante vistas materializadas. Para obtener información detallada sobre cómo funciona la materialización, los requisitos y los procedimientos recomendados, consulte Materialización para vistas de métricas.
Note
No se puede materializar una vista de métrica que defina parámetros.
El materialization campo incluye los siguientes campos de nivel superior:
| Campo | Tipo | Description |
|---|---|---|
schedule |
String | Optional. Programación de actualización. Usa la misma sintaxis que la cláusula schedule en las vistas materializadas. Si se omite, las materializaciones solo se actualizan manualmente. Para desencadenar una actualización manual, consulte Actualización manual. La cláusula TRIGGER ON UPDATE no se admite. |
mode |
String | Required. Debe establecerse en relaxed. |
materialized_views |
Array | Required. Lista de vistas materializadas para materializar. Cada entrada requiere los campos descritos a continuación. |
Cada entrada de materialized_views incluye los siguientes campos:
| Campo | Tipo | Description |
|---|---|---|
name |
String | Required. Nombre de la materialización. |
type |
String | Required. Tipo de materialización. Valores admitidos: aggregated (requiere dimensions, measureso ambos) o unaggregated. Solo se permite una unaggregated entrada por vista de métrica. Las entradas no agregados no usan los dimensions campos o measures . |
dimensions |
Array | Condicional. Lista de nombres de campo para materializar, mediante la dimensions palabra clave incluso si la definición de nivel superior usa fields. Obligatorio si type es aggregated y no se especifica.measures |
measures |
Array | Condicional. Lista de nombres de medida que se van a materializar. Obligatorio si type es aggregated y no se especifica.dimensions |
cluster_by |
Objeto | Optional. Agrupación en clústeres de columnas para la materialización, equivalente a la CLUSTER BY cláusula en una vista materializada. Especifique cols con una lista de nombres de columna o establezca auto: true para permitir que Databricks elija automáticamente las columnas de agrupación en clústeres. |
partition_by |
Array | Optional. Lista de columnas para particionar la materialización, equivalente a la PARTITION BY cláusula en una vista materializada. |
Note
El bloque de materialización usa la dimensions: palabra clave en lugar de fields:. Use dimensions: al enumerar campos para materializar, incluso si la definición de nivel superior usa fields:.
Ejemplo de materialización
En el ejemplo siguiente se define una vista de métrica con varias materializaciones:
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
Referencias de nombre de columna
Al hacer referencia a nombres de columna que contienen espacios o caracteres especiales en expresiones YAML, encierra el nombre de columna en acentos inversas. Si la expresión comienza con un acento grave y se usa directamente como un valor YAML, incluya toda la expresión entre comillas dobles. Los valores válidos de YAML no pueden comenzar con un acento grave.
Ejemplos de formato
Use los ejemplos siguientes para aprender a dar formato a YAML correctamente en escenarios comunes.
Hacer referencia a un nombre de columna
En los ejemplos siguientes se muestra cómo dar formato a las referencias de columna en función de los caracteres que contienen.
Sin espacios
Columna de origen: revenue
expr: "revenue"
expr: 'revenue'
expr: revenue
Use comillas dobles, comillas simples o sin comillas alrededor del nombre de columna.
Nombre de columna con espacios
Columna de origen: `First Name`
expr: '`First Name`'
Use acentos graves para escapar espacios. Incluya toda la expresión entre comillas dobles.
Nombres de columna con espacios en una expresión SQL
Columnas de origen: `First Name`, `Last Name`
expr: CONCAT(`First Name`, ' ', `Last Name`)
Si la expresión no comienza con un verso, no se requieren comillas dobles.
Nombre de columna que contiene comillas
Columna de origen: "name"
expr: '`"name"`'
Use las comillas inversas para escapar las comillas dobles en el nombre de la columna. Incluya la expresión entre comillas simples.
Expresiones con dos puntos
expr: "CASE WHEN `Customer Tier` = 'Enterprise: Premium' THEN 1 ELSE 0 END"
Note
YAML interpreta dos puntos sin comillas como separadores de clave-valor. Use siempre comillas dobles alrededor de expresiones que incluyan dos puntos.
Expresiones de varias líneas
expr: |
CASE WHEN
revenue > 100 THEN 'High'
ELSE 'Low'
END
Note
Use el | bloque escalar después expr: de para expresiones de varias líneas. Todas las líneas deben tener una sangría de al menos dos espacios más allá de la tecla expr para que el análisis sea correcto.
Actualización a YAML 1.1
La actualización de una vista de métrica a la versión 1.1 de la especificación YAML requiere cuidado, ya que los comentarios se controlan de forma diferente a en versiones anteriores.
Tipos de comentarios
-
Comentarios de YAML (
#):comentarios insertados o de una sola línea escritos directamente en el archivo YAML. - Comentarios del catálogo de Unity: comentarios almacenados en el Catálogo de Unity para la vista de métricas o sus columnas. Estos son independientes de los comentarios de YAML.
Consideraciones de actualización
Seleccione la ruta de actualización que coincida con la forma en que desea controlar los comentarios en la vista de métricas.
Opción 1: Conservar los comentarios de YAML mediante cuadernos o el editor de SQL
Si la vista de métrica contiene comentarios de YAML (#) que desea conservar, siga estos pasos:
- Use el
ALTER VIEWcomando en un cuaderno o en un editor de SQL. - Copie la definición de YAML original en la sección después
$$..$$deAS. Cambie el valor deversiona1.1. - Guarde la vista de métricas.
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)
$$
Advertencia
Al ejecutar ALTER VIEW , se quitan los comentarios del catálogo de Unity a menos que se incluyan explícitamente en los comment campos de la definición de YAML. Para conservar los comentarios que se muestran en el catálogo de Unity, consulte la opción 2.
Opción 2: Conservar los comentarios del catálogo de Unity
Note
Las instrucciones siguientes solo se aplican cuando se usa el ALTER VIEW comando en un cuaderno o en un editor de SQL. Si actualiza la vista de métrica a la versión 1.1 mediante la interfaz de usuario del editor de YAML, la interfaz de usuario del editor de YAML conserva automáticamente los comentarios del catálogo de Unity.
- Copie todos los comentarios del catálogo de Unity en los campos
commentadecuados de su definición de YAML. Cambie el valor deversiona1.1. - Guarde la vista de métricas.
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"
$$
Para ver el historial de versiones de especificación de YAML y los requisitos mínimos de tiempo de ejecución para cada característica, consulte Disponibilidad de características de la vista de métricas.