Uso
view: view_name {
derived_analytic_model: {
sql: analytic_model_definition ;;
}
}
|
Jerarquía
derived_analytic_model |
Valor predeterminado
Ninguno
Reglas especiales
Los modelos de análisis solo son compatibles con las conexiones de BigQuery y Snowflake.
|
Definición
Para las conexiones de BigQuery y Snowflake, el parámetro derived_analytic_model define un modelo de análisis en la base de datos (un BigQuery Graph o una vista semántica en Snowflake) que Looker administra. En esta situación, Looker genera el modelo de análisis dentro de tu base de datos mediante la ejecución de las instrucciones de lenguaje de definición de datos (DDL) de SQL adecuadas que especificas en la definición del parámetro de LookML derived_analytic_model. Tu base de datos debe admitir la sintaxis de SQL que definas en el parámetro derived_analytic_model.
A diferencia de las tablas derivadas, los objetos de modelo de análisis administrados por Looker no conservan ningún dato dentro de la base de datos y no se actualizan de forma incremental. En cambio, representan modelos semánticos que definen relaciones y mediciones directamente en la base de datos.
Para definir un modelo de análisis, usa uno de los siguientes subparámetros del parámetro derived_analytic_model:
Además, si defines tu vista de análisis con el subparámetro sql, puedes usar el subparámetro publish_as_db_analytic_model del parámetro derived_analytic_model para crear un modelo de análisis estable que se pueda consultar fuera de Looker.
Después de definir el modelo de análisis dentro del parámetro derived_analytic_model, puedes definir dimensiones y mediciones de LookML que se asignen a tu modelo de análisis. Consulta la sección Ejemplos para ver ejemplos.
sql
Usa el parámetro sql si deseas proporcionar el SQL solo para la definición del modelo de análisis y que Looker administre la creación del modelo de análisis. Cuando usas el subparámetro sql, no incluyas una instrucción CREATE ni CREATE OR REPLACE, ya que Looker generará automáticamente la instrucción DDL para crear el modelo de análisis en el lado de la base de datos.
Consulta Cómo crear un modelo de análisis derivado con sql para ver un ejemplo del uso del parámetro sql para crear un modelo de análisis en tu base de datos.
sql_create
Usa el parámetro sql_create para definir una instrucción de SQL completa para crear un modelo de análisis. Cuando usas el parámetro sql_create, debes incluir una instrucción CREATE OR REPLACE (o una instrucción CREATE, si tu dialecto no admite CREATE OR REPLACE).
Ten en cuenta lo siguiente cuando uses el subparámetro sql_create:
- Para las conexiones de BigQuery, usa una instrucción
CREATE OR REPLACEpara crear el modelo de análisis. - Usa
${SQL_TABLE_NAME}para sustituir el nombre calculado del modelo de análisis que se está creando. Esto garantiza que la instrucción de SQL incluya correctamente el nombre del modelo de análisis que proporcionas en el parámetroviewde LookML.
Consulta Cómo crear un modelo de análisis derivado con sql_create para ver un ejemplo del uso del parámetro sql_create para crear un modelo de análisis en tu base de datos.
create_process
Usa el parámetro create_process cuando necesites definir varias instrucciones de SQL secuenciales para definir el modelo de análisis. En el parámetro create_process, usa el subparámetro sql_step para especificar las instrucciones de SQL individuales. Tu base de datos ejecutará las instrucciones sql_step de una en una, en el orden en que las especificaste. Looker emite las instrucciones de SQL en los subparámetros sql_step a medida que las defines, sin wrapper, lo que significa que debes incluir un paso con una instrucción CREATE OR REPLACE (o una instrucción CREATE, si tu dialecto no admite CREATE OR REPLACE).
Consulta Cómo crear un modelo de análisis derivado con create_process para ver un ejemplo del uso del parámetro create_process para crear un modelo de análisis en tu base de datos.
publish_as_db_analytic_model
Para los modelos de análisis derivados que se crean con el parámetro sql, puedes definir tu modelo de análisis derivado con publish_as_db_analytic_model: yes para solicitar a Looker que cree un modelo de análisis estable que se pueda consultar fuera de Looker.
El modelo de análisis estable se publicará (creará) en el siguiente ciclo del regenerador de Looker después de que el LookML del modelo de análisis derivado se implemente en producción con publish_as_db_analytic_model: yes.
Consulta la sección Cómo acceder al modelo de análisis estable para obtener información sobre cómo obtener el nombre del modelo de análisis estable para que puedas usarlo para consultar el modelo de análisis estable fuera de Looker.
Crea dimensiones y mediciones de LookML basadas en tu vista de análisis
Después de definir tu modelo de análisis, en el mismo archivo de vista, puedes definir dimensiones y mediciones de LookML basadas en el modelo de análisis.
Consulta la documentación de tu dialecto para obtener información sobre la sintaxis adecuada que se debe usar para definir tu modelo de análisis y para hacer referencia a los elementos de tu modelo de análisis. Por ejemplo, para crear una dimensión de LookML a partir de una entidad de BigQuery Graph, debes usar guiones bajos para separar los elementos cuando definas el alcance. Por ejemplo, para BigQuery Graph, esta dimensión de LookML se basa en la propiedad location_id de la tabla de nodos Stores:
dimension: location_id {
type: number
sql: Stores_location_id ;;
}
Sin embargo, para crear una dimensión de LookML basada en una vista semántica de Snowflake, debes usar el nombre no calificado de una métrica o dimensión.
Ejemplos
En las siguientes secciones, se proporcionan ejemplos de cómo crear una vista de análisis con los diferentes subparámetros de derived_analytic_model:
- Cómo crear un modelo de análisis derivado con
sql - Cómo crear un modelo de análisis derivado con
create_process - Cómo crear un modelo de análisis derivado con
sql_create
Cómo crear un modelo de análisis derivado con sql
El siguiente es un ejemplo de un archivo de vista de LookML que define un modelo de análisis basado en SQL para una base de datos de BigQuery con el subparámetro sql de derived_analytic_model. Looker creará el modelo de análisis dentro de la base de datos mediante la ejecución de los comandos DDL de SQL que se proporcionan en el parámetro sql.
Ten en cuenta lo siguiente en el ejemplo:
- El subparámetro
sqlsolo contiene la definición del modelo de análisis. No hay ninguna instrucciónCREATE, ya que, consql, Looker controla automáticamente los comandosCREATEpara el modelo de análisis. - El modelo de análisis se define con
publish_as_db_analytic_model: yes, por lo que Looker creará un modelo de análisis estable que se pueda consultar fuera de Looker.
view: MyWarehouseOrdersView {
derived_analytic_model: {
publish_as_db_analytic_model: yes
# Defining the analytic model
sql:
NODE TABLES (
Customers
KEY(customer_id)
PROPERTIES(
country_code,
concat(first_name, ' ', last_name) AS name,
age,
MEASURE(AVG(age)) AS AvgAge
),
Orders
KEY(order_id)
PROPERTIES (
customer_id,
employee_id,
date,
discount,
MEASURE(AVG(discount)) AS AvgDiscount
)
EDGE TABLES (
-- Relationship: Orders -> Customers
looker_test.orders AS orders_to_users
KEY(id)
SOURCE KEY (order_id) REFERENCES orders (order_id)
DESTINATION KEY (customer_id) REFERENCES Customers (customer_id)
NO PROPERTIES
) ;;
}
# Mapping dimensions/measures to the dimensions/measures
# provided by the analytic model
dimension: customer_id {
type: number
sql: Customers_customer_id ;;
}
dimension: customer_age {
type: number
sql: Customers_age ;;
}
measure: orders_avg_discount {
type: number
sql: Orders_AvgDiscount ;;
}
}
Cómo crear un modelo de análisis derivado con create_process
El siguiente es un ejemplo de un archivo de vista de LookML que define un modelo de análisis basado en SQL para una base de datos de BigQuery con el subparámetro create_process de derived_analytic_model. En este ejemplo, debes definir varias instrucciones de SQL secuenciales para definir el modelo de análisis. En el primer paso, se quita el modelo de análisis si ya existe, y en el segundo paso, se crea el modelo de análisis.
view: university_statistics {
derived_analytic_model: {
create_process: {
sql_step:
DROP PROPERTY GRAPH IF EXISTS ${SQL_TABLE_NAME} ;;
sql_step:
CREATE PROPERTY GRAPH ${SQL_TABLE_NAME}
NODE TABLES (
university.College
KEY(college_id)
PROPERTIES(college_id, college_name),
university.Department
KEY(dept_id)
PROPERTIES(dept_id, dept_name, college_id,
budget OPTIONS(description="Department budget in USD"),
MEASURE(SUM(budget)) AS total_budget),
university.Course
KEY(course_id)
PROPERTIES(
course_id,
course_name,
credits,
dept_id,
MEASURE(AVG(credits)) AS avg_credits,
MEASURE(SUM(credits)) AS total_credits,
MEASURE(COUNT(course_id)) AS course_count)
)
EDGE TABLES (
university.Department AS CollegeDept
SOURCE KEY (college_id) REFERENCES College (college_id)
DESTINATION KEY (dept_id) REFERENCES Department (dept_id),
university.Course AS DeptCourse
SOURCE KEY (dept_id) REFERENCES Department (dept_id)
DESTINATION KEY (course_id) REFERENCES Course (course_id)
);;
}
}
# Mapping dimensions/measures to the dimensions/measures
# provided by the analytic model
dimension: college_id {
type: number
sql: College_college_id ;;
}
dimension: course_name {
type: string
sql: Course_course_name ;;
}
...
}
Cómo crear un modelo de análisis derivado con sql_create
El siguiente es un ejemplo de un archivo de vista de LookML que define un modelo de análisis basado en SQL para una base de datos de BigQuery con el subparámetro sql_create de derived_analytic_model. En este ejemplo, el parámetro sql_create define la instrucción CREATE OR REPLACE completa que se ejecutará para crear el modelo de análisis en un solo paso.
view: MyWarehouseOrdersView {
derived_analytic_model: {
sql_create:
CREATE OR REPLACE PROPERTY GRAPH ${SQL_TABLE_NAME}
NODE TABLES(
accounting.Loan AS Loan
KEY(loanId)
LABEL Loan PROPERTIES(
loanId,
loanAmount,
balance,
createTime,
interestRate,
accountId,
balance + 100 AS derived_balance,
CASE WHEN balance > 1000 THEN "High" ELSE "Low" END AS risk_level,
CONCAT("ID-", CAST(loanId AS STRING)) AS full_id,
DATE(2024, 1, 1) AS fixed_date,
MEASURE(AVG(interestRate)) AS avg_interest_rate
),
accounting.AccountView AS Account
KEY(accountId)
LABEL Account PROPERTIES(
accountId,
createTime,
isBlocked,
accountType,
amount,
ownerId,
MEASURE(MIN(createTime)) AS oldest_account_create_time,
MEASURE(MAX(createTime)) AS newest_account_create_time,
MEASURE(AVG(amount)) AS avg_account_amount,
MEASURE(SUM(amount)) AS total_account_amount,
MEASURE(COUNT(DISTINCT accountType)) AS account_type_count
),
accounting.PersonMV AS Person
KEY(personId)
LABEL Person PROPERTIES(
personId,
personName,
age,
age_tier,
MEASURE(AVG(age)) AS avg_age,
MEASURE(COUNT(DISTINCT age_tier)) AS age_tier_count
)
)
EDGE TABLES(
accounting.Loan AS Account_Repay_Loan
KEY(loanId)
SOURCE KEY(loanId) REFERENCES Loan(loanId)
DESTINATION KEY(accountId) REFERENCES Account(accountId)
LABEL Repay NO PROPERTIES,
accounting.Account AS Person_Own_Account
KEY(accountId)
SOURCE KEY(accountId) REFERENCES Account(accountId)
DESTINATION KEY(ownerId) REFERENCES Person(personId)
LABEL Own NO PROPERTIES
);;
}
# Mapping dimensions/measures to the dimensions/measures
# provided by the analytic model
dimension: loan_id {
type: number
sql: Loan_loanId ;;
}
dimension: account_ID {
type: number
sql: Account_accountID ;;
}
...
}
Cómo acceder al modelo de análisis estable
Si creaste tu modelo de análisis derivado con el subparámetro sql y, además, incluiste la instrucción publish_as_db_analytic_model: yes en el parámetro derived_analytic_model, Looker publicará (creará) el modelo de análisis estable en el siguiente ciclo del regenerador de Looker después de que el LookML del modelo de análisis derivado se implemente en producción con publish_as_db_analytic_model: yes.
Cuando se publique el modelo de análisis estable, podrás consultarlo directamente con su nombre estable. Puedes determinar el nombre estable a partir de la información que se incluye en la pestaña SQL de la sección Datos de una consulta de exploración del modelo de análisis. Sigue estos pasos para obtener el nombre estable de un modelo de análisis:
Abre la exploración de la vista de tu modelo de análisis.
En la exploración, selecciona cualquier dimensión o medición del selector de campos.
Haz clic en la pestaña SQL de la sección Datos.
En la pestaña SQL, busca una de las siguientes instrucciones de SQL:
- Para BigQuery Graph:
CREATE PROPERTY GRAPHSELECT ... FROM GRAPH_EXPAND('PROPERTY_GRAPH_NAME')
- Para la vista semántica de Snowflake:
CREATE SEMANTIC VIEWSELECT ... FROM SEMANTIC_VIEW_NAME
- Para BigQuery Graph:
El nombre estable es una vista que Looker crea en el esquema de borrador, que apunta a la tabla ofuscada real que se muestra en la pestaña SQL. Para obtener el nombre estable de la vista de análisis, completa la siguiente información de la instrucción de SQL:
SCRATCH_SCHEMA_NAME.CONNECTION_REGISTRATION_KEY_MODEL_NAME_VIEW_NAME- SCRATCH_SCHEMA_NAME: El nombre del esquema de borrador es el comienzo de la cadena después de la instrucción
CREATEoSELECT, antes de "." - CONNECTION_REGISTRATION_KEY: La clave de registro de conexión tiene dos caracteres; según el dialecto de tu base de datos, seguirá un signo de dólar o el primer guion bajo en el nombre de la tabla en la instrucción
CREATEoSELECT. - MODEL_NAME: El nombre del modelo de LookML.
- VIEW_NAME: El nombre de la vista en la que se define el modelo de análisis.
- SCRATCH_SCHEMA_NAME: El nombre del esquema de borrador es el comienzo de la cadena después de la instrucción
Por ejemplo, este es el texto de la pestaña SQL de una consulta de exploración para una conexión de BigQuery. El modelo de análisis se define en la vista llamada sales_analytic_model, y el nombre del modelo de LookML es thelook. En este caso, Looker ya creó el modelo de análisis, por lo que no hay ninguna instrucción CREATE. Sin embargo, la instrucción SELECT ... FROM GRAPH_EXPAND contiene la información del nombre de la tabla:
-- use existing sales_analytic_model in `looker-test-db.looker_scratch.LG_J7LSZ1778710001008_sales_analytic_model`
SELECT
sales_analytic_model.orders_id AS sales_analytic_model_orders_id,
AGG(sales_analytic_model.orders_count_orders ) AS sales_analytic_model_count_orders
FROM GRAPH_EXPAND("looker-test-db.looker_scratch.LG_J7LSZ1778710001008_sales_analytic_model") AS sales_analytic_model
GROUP BY
1
ORDER BY
2 DESC
LIMIT 500
Estos son los valores que necesitas para derivar el nombre estable del modelo de análisis:
- SCRATCH_SCHEMA_NAME es
looker-test-db.looker_scratch - CONNECTION_REGISTRATION_KEY es
J7 - MODEL_NAME es
thelook - VIEW_NAME es
sales_analytic_model
Por lo tanto, el nombre estable del modelo de análisis es el siguiente:
looker-test-db.looker_scratch.J7_thelook_sales_analytic_model
Una vez que tengas el nombre estable del modelo de análisis, podrás consultarlo directamente.
Aspectos para tener en cuenta
Cuando uses modelos de análisis en la base de datos, ten en cuenta las siguientes consideraciones y limitaciones:
Tipos de datos: Los modelos de análisis solo admiten los siguientes tipos de datos para dimensiones y mediciones:
- Admitidos para dimensiones y mediciones:
stringnumberdateyesno
- Admitidos solo para dimensiones:
timedate_time
- Admitidos para dimensiones y mediciones:
Mediciones:
- Las mediciones base deben estar predefinidas: Las mediciones base deben estar predefinidas en el modelo de análisis de la base de datos subyacente. Looker no puede definir una nueva medición base realizando una agregación (como
type: sumotype: count) en una dimensión de un modelo de análisis. Se admiten las mediciones basadas en otras mediciones: Puedes usar el parámetro
sqlde una medición de LookML para realizar cálculos no agregados que usen mediciones base predefinidas del modelo de análisis. Cuando creas una medición basada en otras mediciones, no puedes definir la nueva medición como un tipo de medición agregada, comosumocount. Debes definir la nueva medición como un tipo de medición no agregada, comostring,number,dateoyesno. Consulta el siguiente ejemplo:measure: average_order_amount { type: number sql: ROUND(${total_order_amount} / NULLIF(${count_orders}, 0), 2) ;; }
- Las mediciones base deben estar predefinidas: Las mediciones base deben estar predefinidas en el modelo de análisis de la base de datos subyacente. Looker no puede definir una nueva medición base realizando una agregación (como
Uniones: Una exploración cuya vista base se basa en un modelo de análisis no puede incluir ninguna unión. Del mismo modo, una vista basada en un modelo de análisis no se puede unir a una exploración que tenga una vista base de LookML estándar.
Uniones implícitas: Las funciones que dependen de uniones implícitas no son compatibles con los modelos de análisis. Algunos ejemplos de funciones que dependen de uniones implícitas son los calendarios personalizados y los campos definidos con
type: location,type: distanceotype: zipcode.Las siguientes funciones no son compatibles con los modelos de análisis: