test

Utilizzo

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 ;;
  }
}
Gerarchia
test

- o -

test

- o -

test
Valore predefinito
Nessuno

Accetta
L'identificatore del test dei dati, più i parametri secondari che definiscono le asserzioni e la query del test.

Definizione

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 contenuti e il modello.

Oltre a questi validatori, il parametro test consente di convalidare la logica del modello. Per ogni test dei dati, crei una query e un'yesnoistruzione di asserzione. Il test dei dati esegue la query di test e verifica che l'asserzione sia vera per ogni riga della query di test. Se l'istruzione di asserzione restituisce yes per ogni riga della query di test, il test dei dati viene superato.

Se le impostazioni del progetto sono configurate in modo da richiedere il superamento dei test sui dati prima del deployment in produzione e se il progetto ha uno o più parametri test, l'IDE mostrerà il pulsante Esegui test dopo il commit delle modifiche al progetto. Gli sviluppatori LookML devono eseguire i test sui dati prima di eseguire il deployment delle modifiche in produzione.

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

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

Un test dei dati non può avere lo stesso nome e lo stesso explore_source di un altro test dei dati nello stesso progetto. Se utilizzi lo stesso explore_source per più test dei dati nel tuo 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 eseguita su ogni riga della query di test per verificare i dati.

Una volta definito il LookML per il test, puoi eseguirlo per verificare che funzioni correttamente e per vedere 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 dei dati per un progetto:

  1. Se le impostazioni del progetto sono configurate in modo da richiedere il superamento dei test sui dati prima del deployment dei file in produzione, l'IDE mostrerà il pulsante Esegui test dopo che avrai commitato le modifiche al progetto. Verranno eseguiti tutti i test per il tuo progetto, indipendentemente dal file che definisce il test. Devi superare i test sui dati prima di poter eseguire il deployment delle modifiche in produzione.
  2. Nel riquadro Stato del progetto, seleziona il pulsante Esegui test dei dati. Verranno eseguiti tutti i test sui dati nel progetto, indipendentemente dal file che definisce il test.
  3. Seleziona l'opzione Esegui test LookML dal menu del file. Verranno eseguiti solo i test definiti nel file corrente.

Una volta eseguiti i test sui dati, nel riquadro Integrità del progetto verranno visualizzati l'avanzamento e i risultati.

Puoi selezionare il link Esplora query per ogni risultato del test per aprire un'esplorazione con la query definita nel test dei dati.

explore_source

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

Suggerimento utile: un modo semplice per ottenere il codice LookML explore_source è utilizzare un'esplorazione esistente per creare la query. In Esplora, seleziona Ottieni LookML dal menu a forma di ingranaggio di Esplora, quindi seleziona la scheda Tabella derivata per ottenere il codice LookML per la query. Per saperne di più, consulta la documentazione sulla creazione di tabelle derivate native.

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

  • La query explore_source di un test dei dati è una query Looker standard, il che significa che la query explore_source del test ha un limite di 5000 righe. Assicurati che la query non superi le 5000 righe in modo da ottenere un insieme completo di risultati da testare. Puoi incorporare filtri o ordinamenti nel tuo explore_source per ridurre il numero di righe nella query o per portare le righe pertinenti in cima alla query.

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

assert

Il parametro secondario assert definisce i criteri in base ai quali il risultato della query explore_source è considerato valido. Il parametro secondario expression accetta un'espressione Looker che restituisce un valore 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 per una riga della query è presente una risposta no, il test dei dati non va a buon fine. Se la query stessa presenta errori, anche il test non va a buon fine.

Un test può avere più dichiarazioni assert. Affinché il test venga superato, ogni asserzione deve essere vera per ogni riga della query explore_source.

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

Per l'utilizzo nei test sui dati, i campi nell'espressione di Looker devono essere completamente definiti, ovvero specificati utilizzando il formato view_name.field_name. Ad esempio, la seguente espressione 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

Garantire che una chiave primaria sia univoca

Il seguente test dei dati crea una query da orders Esplora e definisce un expression per verificare che gli ID ordine siano univoci nel set di risultati. La query explore_source crea un conteggio delle righe associate a ogni ID nel database. Se l'ID è univoco, il database deve avere una sola riga per un ID. Inoltre, esegue l'ordinamento in base al conteggio e limita il set di risultati a una riga, in modo che la risposta alla query sia l'ID con il conteggio più alto. Se un ID ha un conteggio superiore a 1, sappiamo che esistono più righe per quell'ID e 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 ;;
  }

Verifica di un valore noto

Il test dei dati successivo verifica che il valore delle entrate del 2017 sia sempre pari a 626.000 $. In questo set di dati, si tratta di 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 null

Il test dei dati successivo verifica che non siano presenti valori nulli nei dati. Questo explore_source utilizza un sort per assicurarsi che i valori null vengano restituiti all'inizio della query. L'ordinamento per i valori nulli può variare in base al dialetto. Il seguente test 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}) ;;
  }
}