La sfida di oggi è stata creata dal nostro ospite Marcel Schwarze!
Un’attività tipica durante l’ottimizzazione della performance e dei costi è identificare i modelli di query comuni ed eseguiti in modo intensivo e il tentativo di ottimizzarli in un secondo momento. Questa sfida riguarda proprio questo: identificare i modelli di query eseguiti frequentemente in combinazione con i tempi di esecuzioni associati. Le seguenti queries, che devono essere eseguite come parte del codice preparativo della sfida, forniscono un esempio di quello che è considerato come “query che seguono lo stesso modello”. Nello scenario corrente, le queries con lo stesso modello hanno lo stesso script e solo i valori dei parametri utilizzati nelle clausole WHERE possono differire (vedi gli esempi).
Il tuo compito è: completare il seguente SQL statement per identificare le query che seguono lo stesso modello (come da definizione o seguendo gli esempi menzionati). Inoltre, devi contare la frequenza di esecuzione per modello e sommare il tempo di esecuzione. Per ogni gruppo mostra una query di esempio. Segue nell’immagine il risultato atteso.
Codice di configurazione
ALTER SESSION SET query_tag = 'ff_challenge';
/* Random queries without common pattern */
SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER;
SELECT COUNT(*) FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_NATIONKEY = 15;
SELECT C_NAME FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_PHONE = '19-144-468-5416';
/* First set of queries following the same pattern. Pattern = All columns from customers with one WHERE-condition for C_MKTSEGMENT. */
SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = 'BUILDING';
SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = 'AUTOMOBILE';
SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = 'MACHINERY';
SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = 'HOUSEHOLD';
SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = 'BUILDING';
SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = 'BUILDING';
/*Second set of queries following the same pattern. Pattern= C_NAME and C_NATIONKEY from customers with two WHERE-conditions for C_MKTSEGMENT and C_NATIONKEY. */
SELECT C_NAME, C_NATIONKEY FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = 'BUILDING' AND C_NATIONKEY = 21;
SELECT C_NAME, C_NATIONKEY FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = 'MACHINERY' AND C_NATIONKEY = 9;
Ecco la query da completare:
select ...
from table(information_schema.query_history())
where query_tag = 'ff_challenge' and query_text NOT ILIKE '%information_schema%'
group by ...
order by ... ;
Il risultato atteso:
Commenta con il link di GitHub con la tua soluzione!
Lascia un commento
Devi essere connesso per inviare un commento.