Settimana 70 - Intermedio

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.

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!

Previous
Previous

Settimana 70 - Amministrazione

Next
Next

Settimana 71 - Dati Semi-strutturati