Utilizzo
view: view_name {
derived_analytic_model: {
sql: analytic_model_definition ;;
}
}
|
Gerarchia
derived_analytic_model |
Valore predefinito
Nessuno
Regole speciali
I modelli analitici sono supportati solo per le connessioni BigQuery e Snowflake.
|
Definizione
Per le connessioni BigQuery e Snowflake, il parametro derived_analytic_model definisce un modello analitico in-database (un grafico BigQuery o una visualizzazione semantica in Snowflake) gestito da Looker. In questo scenario, Looker genera il modello analitico all'interno del database eseguendo le istruzioni SQL Data Definition Language (DDL) appropriate specificate nella definizione del parametro LookML derived_analytic_model. La sintassi SQL definita nel parametro derived_analytic_model deve essere supportata dal database.
A differenza delle tabelle derivate, gli oggetti del modello analitico gestito da Looker non conservano i dati all'interno del database e non vengono aggiornati in modo incrementale. Rappresentano invece modelli semantici che definiscono relazioni e misure direttamente nel database.
Per definire un modello analitico, utilizza uno dei seguenti sottoparametri del parametro derived_analytic_model:
Inoltre, se definisci la visualizzazione analitica con il sottoparametro sql, puoi utilizzare il sottoparametro publish_as_db_analytic_model del parametro derived_analytic_model per creare un modello analitico stabile su cui è possibile eseguire query al di fuori di Looker.
Dopo aver definito il modello analitico all'interno del parametro derived_analytic_model, puoi definire dimensioni e misure LookML che vengono mappate al modello analitico. Per alcuni esempi, consulta la sezione Esempi.
sql
Utilizza il parametro sql se vuoi fornire il codice SQL solo per la definizione del modello analitico e lasciare che Looker gestisca la creazione del modello analitico. Quando utilizzi il sottoparametro sql, non includere un'istruzione CREATE o CREATE OR REPLACE, perché Looker genererà automaticamente l'istruzione DDL per creare il modello analitico sul lato database.
Consulta la sezione Creazione di un modello analitico derivato con sql per un esempio di utilizzo del parametro sql per creare un modello analitico nel tuo database.
sql_create
Utilizza il parametro sql_create per definire un'istruzione SQL completa per creare un modello analitico. Quando utilizzi il parametro sql_create, devi includere un'istruzione CREATE OR REPLACE (o un'istruzione CREATE, se il dialetto non supporta CREATE OR REPLACE).
Tieni presente quanto segue quando utilizzi il sottoparametro sql_create:
- Per le connessioni BigQuery, utilizza un'istruzione
CREATE OR REPLACEper creare il modello analitico. - Utilizza
${SQL_TABLE_NAME}per sostituire il nome calcolato del modello analitico in fase di creazione. In questo modo, l'istruzione SQL includerà correttamente il nome del modello analitico che fornisci nel parametro LookMLview.
Consulta la sezione Creazione di un modello analitico derivato con sql_create per un esempio di utilizzo del parametro sql_create per creare un modello analitico nel tuo database.
create_process
Utilizza il parametro create_process quando devi definire più istruzioni SQL sequenziali per definire il modello analitico. Nel parametro create_process, utilizza il sottoparametro sql_step per specificare le singole istruzioni SQL. Il database eseguirà le istruzioni sql_step una alla volta, nell'ordine in cui le hai specificate. Looker esegue le istruzioni SQL nei sottoparametri sql_step così come le definisci, senza wrapper, il che significa che devi includere un passaggio con un'istruzione CREATE OR REPLACE (o un'istruzione CREATE, se il dialetto non supporta CREATE OR REPLACE).
Consulta la sezione Creazione di un modello analitico derivato con create_process per un esempio di utilizzo del parametro create_process per creare un modello analitico nel tuo database.
publish_as_db_analytic_model
Per i modelli analitici derivati creati con il parametro sql, puoi definire il modello analitico derivato con publish_as_db_analytic_model: yes per chiedere a Looker di creare un modello analitico stabile su cui è possibile eseguire query al di fuori di Looker.
Il modello analitico stabile verrà pubblicato (creato) nel ciclo successivo del rigeneratore Looker dopo che il LookML del modello analitico derivato è stato implementato in produzione con publish_as_db_analytic_model: yes.
Consulta la sezione Accesso al modello analitico stabile per informazioni su come ottenere il nome del modello analitico stabile in modo da poterlo utilizzare per eseguire query al di fuori di Looker.
Creare dimensioni e misure LookML in base alla visualizzazione analitica
Dopo aver definito il modello analitico, nello stesso file di vista puoi definire le dimensioni e le misure LookML basate sul modello analitico.
Consulta la documentazione del tuo dialetto per informazioni sulla sintassi corretta da utilizzare per definire il modello analitico e per fare riferimento agli elementi del modello analitico. Ad esempio, per creare una dimensione LookML da un'entità BigQuery Graph, devi utilizzare i trattini bassi per separare gli elementi durante la definizione dell'ambito. Ad esempio, per BigQuery Graph, questa dimensione LookML si basa sulla proprietà location_id nella tabella dei nodi Stores:
dimension: location_id {
type: number
sql: Stores_location_id ;;
}
Tuttavia, per creare una dimensione LookML basata su una vista semantica Snowflake, devi utilizzare il nome non qualificato di una metrica o di una dimensione.
Esempi
Le sezioni seguenti forniscono esempi di creazione di una visualizzazione analitica utilizzando i diversi sottoparametri di derived_analytic_model:
- Creazione di un modello analitico derivato con
sql - Creazione di un modello analitico derivato con
create_process - Creazione di un modello analitico derivato con
sql_create
Creazione di un modello analitico derivato con sql
Di seguito è riportato un esempio di file di visualizzazione LookML che definisce un modello analitico basato su SQL per un database BigQuery utilizzando il parametro secondario sql di derived_analytic_model. Looker creerà il modello analitico all'interno del database eseguendo i comandi DDL SQL forniti nel parametro sql.
Nell'esempio, nota quanto segue:
- Il sottoparametro
sqlcontiene solo la definizione del modello analitico stesso. Non è presente alcuna istruzioneCREATEperché consqlLooker gestisce automaticamente i comandiCREATEper il modello analitico. - Il modello analitico è definito con
publish_as_db_analytic_model: yes, quindi Looker creerà un modello analitico stabile su cui è possibile eseguire query al di fuori di 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 ;;
}
}
Creazione di un modello analitico derivato con create_process
Di seguito è riportato un esempio di file di vista LookML che definisce un modello analitico basato su SQL per un database BigQuery utilizzando il sottoparametro create_process di derived_analytic_model. In questo esempio, devi definire più istruzioni SQL sequenziali per definire il modello analitico. Il primo passaggio elimina il modello analitico, se esiste già, mentre il secondo passaggio lo crea.
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 ;;
}
...
}
Creazione di un modello analitico derivato con sql_create
Di seguito è riportato un esempio di file di vista LookML che definisce un modello analitico basato su SQL per un database BigQuery utilizzando il sottoparametro sql_create di derived_analytic_model. In questo esempio, il parametro sql_create definisce l'intera istruzione CREATE OR REPLACE da eseguire per creare il modello analitico in un unico passaggio.
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 ;;
}
...
}
Accesso al modello analitico stabile
Se hai creato il modello analitico derivato utilizzando il sottoparametro sql e hai incluso l'istruzione publish_as_db_analytic_model: yes nel parametro derived_analytic_model, Looker pubblicherà (creerà) il modello analitico stabile nel ciclo successivo del rigeneratore di Looker dopo che il LookML del modello analitico derivato è stato implementato in produzione con publish_as_db_analytic_model: yes.
Quando il modello analitico stabile viene pubblicato, puoi interrogarlo direttamente utilizzando il suo nome stabile. Puoi determinare il nome stabile dalle informazioni incluse nella scheda SQL della sezione Dati di una query di esplorazione del modello analitico. Per ottenere il nome stabile di un modello analitico:
Apri Esplora per la visualizzazione del modello analitico.
In Esplora, seleziona le dimensioni o le misure dal selettore campi.
Fai clic sulla scheda SQL della sezione Dati.
Nella scheda SQL, individua una delle seguenti istruzioni SQL:
- Per BigQuery Graph:
CREATE PROPERTY GRAPHSELECT ... FROM GRAPH_EXPAND('PROPERTY_GRAPH_NAME')
- Per la visualizzazione semantica di Snowflake:
CREATE SEMANTIC VIEWSELECT ... FROM SEMANTIC_VIEW_NAME
- Per BigQuery Graph:
Il nome stabile è una vista che Looker crea nello schema temporaneo e che punta alla tabella offuscata effettiva mostrata nella scheda SQL. Per ottenere il nome stabile della visualizzazione analitica, compila le seguenti informazioni dall'istruzione SQL:
SCRATCH_SCHEMA_NAME.CONNECTION_REGISTRATION_KEY_MODEL_NAME_VIEW_NAME- SCRATCH_SCHEMA_NAME: il nome dello schema temporaneo è l'inizio della stringa dopo l'istruzione
CREATEoSELECT, prima di "." - CONNECTION_REGISTRATION_KEY: la chiave di registrazione della connessione è composta da due caratteri; a seconda del dialetto del database, seguirà un segno del dollaro o il primo trattino basso nel nome della tabella nell'istruzione
CREATEoSELECT. - MODEL_NAME: il nome del modello LookML.
- VIEW_NAME: il nome della vista in cui è definito il modello analitico.
- SCRATCH_SCHEMA_NAME: il nome dello schema temporaneo è l'inizio della stringa dopo l'istruzione
Ad esempio, ecco il testo della scheda SQL di una query di esplorazione per una connessione BigQuery. Il modello analitico è definito nella vista denominata sales_analytic_model e il nome del modello LookML è thelook. In questo caso, Looker ha già creato il modello analitico, quindi non è presente alcuna istruzione CREATE. Tuttavia, l'istruzione SELECT ... FROM GRAPH_EXPAND contiene le informazioni sul nome della tabella:
-- 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
Di seguito sono riportati i valori necessari per derivare il nome stabile del modello analitico:
- SCRATCH_SCHEMA_NAME è
looker-test-db.looker_scratch - CONNECTION_REGISTRATION_KEY è
J7 - MODEL_NAME è
thelook - VIEW_NAME è
sales_analytic_model
Pertanto, il nome stabile del modello analitico è il seguente:
looker-test-db.looker_scratch.J7_thelook_sales_analytic_model
Una volta ottenuto il nome stabile del modello analitico, puoi eseguire query direttamente sul modello.
Aspetti da considerare
Quando utilizzi modelli di analisi in-database, tieni presente le seguenti considerazioni e limitazioni:
Tipi di dati:con i modelli analitici sono supportati solo i seguenti tipi di dati per dimensioni e metriche:
- Supportato per dimensioni e misure:
stringnumberdateyesno
- Supportato solo per le dimensioni:
timedate_time
- Supportato per dimensioni e misure:
Misure:
- Le misure di base devono essere predefinite:le misure di base devono essere predefinite nel modello analitico del database sottostante. Looker non può definire una nuova misura di base eseguendo un'aggregazione (ad esempio
type: sumotype: count) su una dimensione di un modello analitico. Sono supportate le misure basate su altre misure:puoi utilizzare il parametro
sqldi una misura LookML per eseguire calcoli non aggregati che utilizzano misure di base predefinite del modello analitico. Quando crei una misura basata su altre misure, non puoi definirla come tipo di misura aggregata, ad esempiosumocount. Devi definire la nuova metrica come tipo di metrica non aggregata, ad esempiostring,number,dateoyesno. Vedi il seguente esempio:measure: average_order_amount { type: number sql: ROUND(${total_order_amount} / NULLIF(${count_orders}, 0), 2) ;; }
- Le misure di base devono essere predefinite:le misure di base devono essere predefinite nel modello analitico del database sottostante. Looker non può definire una nuova misura di base eseguendo un'aggregazione (ad esempio
Join:un'esplorazione la cui visualizzazione di base si basa su un modello analitico non può includere join. Allo stesso modo, una vista basata su un modello analitico non può essere unita a un'esplorazione con una vista di base LookML standard.
Join impliciti:le funzionalità che si basano su join impliciti non sono supportate per i modelli analitici. Alcuni esempi di funzionalità che si basano sui join impliciti sono i calendari personalizzati e i campi definiti con
type: location,type: distanceotype: zipcode.Le seguenti funzionalità non sono supportate con i modelli analitici: