CustomSQL - AWS Glue

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

CustomSQL

Questo tipo di regola è stato esteso per supportare due casi d'uso:

  • Esegui un'istruzione SQL personalizzata su un set di dati e controlla il valore restituito rispetto a una determinata espressione.

  • Esegui un'istruzione SQL personalizzata specificando un nome di colonna nell'istruzione SELECT in base alla quale eseguire un confronto con alcune condizioni per ottenere risultati a livello di riga.

Sintassi

CustomSql <SQL_STATEMENT> <EXPRESSION>
  • SQL_STATEMENT: un'istruzione SQL che restituisce un singolo valore numerico, racchiuso tra virgolette doppie.

  • EXPRESSION: un'espressione da eseguire sulla risposta del tipo di regola per produrre un valore booleano. Per ulteriori informazioni, consulta Espressioni.

Esempio: SQL personalizzato per recuperare il risultato di una regola generale

Questa regola di esempio utilizza un'istruzione SQL per recuperare il numero di record per un set di dati. La regola verifica quindi che il conteggio dei record sia compreso tra 10 e 20.

CustomSql "select count(*) from primary" between 10 and 20

Esempio: SQL personalizzato per recuperare i risultati a livello di riga

Questa regola di esempio utilizza un'istruzione SQL personalizzata specificando un nome di colonna nell'istruzione SELECT in base alla quale eseguire un confronto con alcune condizioni per ottenere risultati a livello di riga. Un'espressione di condizione di soglia definisce una soglia di quanti record devono avere esito negativo perché l'intera regola abbia esito negativo. Tieni presente che una regola non può contenere contemporaneamente una condizione e una parola chiave.

CustomSql "select Name from primary where Age > 18"

oppure

CustomSql "select Name from primary where Age > 18" with threshold > 3
Importante

L'alias primary sostituisce il nome del set di dati che si desidera valutare. Quando lavori con job ETL visivi sulla console, primary rappresenta sempre il DynamicFrame passato alla trasformazione EvaluateDataQuality.apply(). Quando si utilizza il AWS Glue Data Catalog per eseguire attività di qualità dei dati su una tabella, primary rappresenta la tabella.

Se ti trovi in AWS Glue Data Catalog, puoi anche utilizzare i nomi effettivi delle tabelle:

CustomSql "select count(*) from database.table" between 10 and 20

È inoltre possibile effettuare il join di più tabelle per confrontare diversi elementi di dati:

CustomSql "select count(*) from database.table inner join database.table2 on id1 = id2" between 10 and 20

In AWS Glue ETL, CustomSQL è in grado di identificare i record che non hanno superato i controlli di qualità dei dati. Affinché ciò funzioni, è necessario restituire i record che fanno parte della tabella principale per la quale si sta valutando la qualità dei dati. I record restituiti come parte della query sono considerati riusciti, mentre i record che non vengono restituiti sono considerati non riusciti. Ciò funziona unendo il risultato della query CustomSQL con il set di dati originale. Potrebbero esserci implicazioni sulle prestazioni in base alla complessità della query SQL.

Per farlo:

  • È necessario selezionare almeno 1 colonna dalla tabella principale.

    • select count(*) from primaryè una query valida per la regola OVERALL CustomSQL DQ ma non per Row Level Custom SQL.

    • Questa regola genererà un errore durante la valutazione: The output from CustomSQL must contain at least one column that matches the input dataset for AWS Glue Data Quality to provide row level results. The SQL query is a valid query but the columns from the SQL result are not present in the Input Dataset. Ensure that matching columns are returned from the SQL.

  • Nella tua query SQL, seleziona una `Chiave primaria` dalla tabella o seleziona un set di colonne che formano una chiave composita. In caso contrario, si potrebbero ottenere risultati incoerenti a causa della corrispondenza di righe duplicate e di prestazioni ridotte.

  • Seleziona le chiavi SOLO dalla tabella principale e non dalle tabelle di riferimento.

La regola seguente garantirà che i record con età < 100 vengano identificati come riusciti e i record al di sopra vengano contrassegnati come non riusciti.

CustomSql "select id from primary where age < 100"

Questa regola CustomSQL sarà soddisfatta quando il 50% dei record hanno un'età > 10 e identificherà anche i record che non soddisfano la regola. I record restituiti da questa regola CustomSQL verranno considerati superati, mentre quelli non restituiti verranno considerati non superati.

CustomSQL "select ID, CustomerID from primary where age > 10" with threshold > 0.5

Nota: la regola CustomSQL avrà esito negativo se si restituiscono record che non sono disponibili nel set di dati.