test

Utilizzo

test::"
Gerarchia
test

- oppure -

test

- oppure -

test
Valore predefinito
Nessuna

Accetta
L'identificatore del test dei dati, oltre ai sottoparametri che definiscono le asserzioni e la query di test.

Definizione

Per ulteriori suggerimenti e informazioni sui test dei dati, consulta l'argomento della community Looker in Test dei dati LookML: consigli e best practice.

Looker dispone dello strumento di convalida LookML per verificare che il codice LookML sia sintatticamente valido e dello Strumento di convalida dei contenuti per verificare i riferimenti agli oggetti tra i tuoi contenuti e il tuo modello.

Oltre agli strumenti di convalida, il parametro test consente di convalidare la logica del modello. Per ogni test dei dati, crei una query e un'istruzione yesno. Il test dei dati esegue la query di prova e verifica che l'asserzione sia vera per ogni riga della query di test. Se la dichiarazione dell'asserzione restituisce yes per ogni riga della query di test, il test di dati supera l'istruzione.

Se le impostazioni del progetto sono configurate in modo da richiedere che i test dei dati vengano superati prima del deployment in produzione, l'IDE presenterà il pulsante Esegui test dopo il commit delle modifiche al progetto. Gli sviluppatori LookML devono eseguire i test dei dati prima di eseguire il deployment delle modifiche in produzione.

Indipendentemente dal fatto che il tuo progetto richieda test dei dati prima del deployment in produzione, uno sviluppatore LookML in modalità di sviluppo può eseguire test dei dati in qualsiasi momento per verificare la logica del modello.

Puoi creare test dei dati in file modello, visualizzare file o in file di test dati dedicati. Quando utilizzi un file dedicato per ospitare i test dei dati, ricorda di include il file di test dei dati in qualsiasi file modello o file di vista in cui vuoi eseguire i test.

Un test di dati non può avere lo stesso nome e explore_source di un altro test di dati nello stesso progetto. Se utilizzi lo stesso explore_source per più test dei dati nel progetto, assicurati che i nomi dei test dei dati siano tutti univoci.

Il parametro test ha i seguenti sottoparametri:

  • explore_source: definisce la query da utilizzare nel test dei dati.
  • assert: definisce un'espressione di Looker che viene eseguita su ogni riga della query di prova per verificare i dati.

Una volta definito il LookML per il tuo test, puoi eseguirlo per verificare che funzioni correttamente e per controllare se la logica del modello supera il test (devi essere in modalità di sviluppo per eseguire i test sui dati).

Esistono diversi modi per avviare i test di dati per un progetto:

  1. Se le impostazioni del progetto sono configurate in modo da richiedere che i test dei dati vengano superati prima del deployment dei file in produzione, l'IDE presenterà il pulsante Esegui test dopo la esecuzione del commit delle modifiche al progetto. In questo modo verranno eseguiti tutti i test per il tuo progetto, indipendentemente dal file che definisce il test. Devi superare i test dei dati prima di poter eseguire il deployment delle modifiche in produzione.
  2. Fai clic sul pulsante Esegui test dei dati nel riquadro Stato progetto. Verranno eseguiti tutti i test di dati nel progetto, indipendentemente dal file che definisce il test.
  3. Seleziona l'opzione Run LookML Tests (Esegui test LookML) dal menu del file. Verranno eseguiti solo i test definiti nel file corrente.

Una volta eseguiti i test dei dati, il riquadro Stato progetto ne mostrerà l'avanzamento e i risultati:

Puoi fare clic sul link Esplora query per aprire un'esplorazione con la query definita nel test dati.

explore_source

Il parametro explore_source in un test dei dati utilizza la stessa sintassi e logica del parametro explore_source di una tabella derivata. L'unica differenza è che il explore_source del test di dati non supporta i sottoparametri derived_column, bind_filters e bind_all_filters.

Suggerimento manuale: un modo semplice per ottenere il LookML explore_source è utilizzare un Explore esistente per creare la query, quindi selezionare Get LookML dal menu a forma di ingranaggio di Explore e fare clic sulla scheda Tabella derivata per ottenere il LookML per la query. Per ulteriori informazioni, consulta la nostra documentazione sulla creazione di tabelle derivate native.

Tieni presente quanto segue per l'explore_source di un test dei dati:

  • Una query explore_source di un test di dati è una query Looker standard, il che significa che la query explore_source del test ha un limite di 5000 righe. Assicurati che la tua query non superi le 5000 righe in modo da ottenere un set di risultati completo da testare. Puoi incorporare filtri o ordinamenti in explore_source per ridurre il numero di righe nella query o inserire le righe pertinenti nella parte superiore della query.

  • Un explore con extension: required non può essere utilizzato come explore_source per un test di dati. Lo strumento di convalida LookML genera un errore che indica che non è stato possibile trovare explore_source.

assert

Il sottoparametro assert definisce i criteri in base ai quali il risultato della query explore_source è considerato valido. Il sottoparametro expression accetta un'espressione di Looker che dà come risultato un yesno (booleano). Dopo l'esecuzione della query explore_source, l'espressione dell'asserzione viene valutata per ogni riga del set di risultati della query. Se è presente una risposta no per qualsiasi riga della query, il test dei dati non riesce. Se la query contiene errori, anche il test ha esito negativo.

Un test può avere più dichiarazioni assert. Per superare il test, ogni asserzione deve essere vera per ogni riga della query explore_source.

Suggerimento pratico: puoi utilizzare la finestra di dialogo calcoli tabella per testare la sintassi dell'espressione di Looker da utilizzare nel parametro expression del test.

Per poter essere utilizzati nei test dei dati, i campi dell'espressione di Looker devono avere un ambito completo, ovvero sono specificati nel formato view_name.field_name. Ad esempio, l'espressione seguente dichiara il campo come aircraft_engine_types.aircraft_engine_type_id:

assert: engine_type_id_not_null {
  expression: NOT is_null(${aircraft_engine_types.aircraft_engine_type_id}) ;;
}

Esempi

Assicurare che una chiave primaria sia univoca

Il seguente test dei dati crea una query da Esplora di orders e definisce un expression per verificare che gli ID ordine siano univoci nel set di risultati. La query explore_source crea un conteggio di righe associate a ciascun ID nel database. Se l'ID è univoco, il database deve avere una sola riga per ogni ID. Inoltre, ordina sul conteggio e limita il risultato impostato a una riga, quindi la risposta alla query sarà l'ID con il conteggio più alto. Se un ID ha un conteggio maggiore di 1, sappiamo che ci sono più righe per questo ID, pertanto l'ID non è univoco. In questo caso, il test dei dati non andrà a buon fine.

test: order_id_is_unique {
  explore_source: orders {
    column: id {}
    column: count {}
    sorts: [orders.count: desc]
    limit: 1
  }
  assert: order_id_is_unique {
    expression: ${orders.count} = 1 ;;
  }

Verificare un valore noto

Il prossimo test dei dati verifica che il valore delle entrate del 2017 sia sempre pari a 626.000 $. In questo set di dati è un valore noto che non dovrebbe mai cambiare.

test: historic_revenue_is_accurate {
  explore_source: orders {
    column: total_revenue {
      field: orders.total_revenue
    }
    filters: [orders.created_date: "2017"]
  }
  assert: revenue_is_expected_value {
    expression: ${orders.total_revenue} = 626000 ;;
  }
}

Conferma che non sono presenti valori nulli

Il prossimo test dei dati verifica che non siano presenti valori nulli. explore_source utilizza un sort per assicurarsi che vengano restituiti valori null nella parte superiore della query. L'ordinamento per null può variare in base al dialetto. Il test riportato di seguito utilizza desc: yes come esempio.


test: status_is_not_null {
  explore_source: orders {
    column: status {}
    sorts: [orders.status: desc]
    limit: 1
  }
  assert: status_is_not_null {
    expression: NOT is_null(${orders.status}) ;;
  }
}