SELECTSELECT

SELECT

Snowflake Cortex Analyst: panoramica, prezzi e monitoraggio dei costi

By Jeff SkoldbergOct 9, 20257 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

Che cos'è Cortex Analyst?

Cortex Analyst è il servizio text-to-SQL completamente gestito di Snowflake che permette agli utenti business di porre domande in linguaggio naturale e ottenere risposte basate su SQL senza scrivere una singola query. È possibile interagire con il servizio in due modi: tramite Snowflake Intelligence (l'interfaccia AI agent integrata in Snowflake) oppure tramite l'API REST da integrare nelle proprie applicazioni (ad esempio app Streamlit, bot Slack, Microsoft Teams, interfacce di chat web personalizzate o qualunque altro strumento aziendale già in uso). Il servizio è basato su large language model — i principali sono Claude Sonnet, Mistral Large e Llama — e utilizza modelli semantici per comprendere il contesto di business.

In questa guida troverà una panoramica generale dell'utilizzo di Cortex Analyst e vedremo come monitorarne e controllarne i costi.

Come funziona Cortex Analyst?

Cortex Analyst converte le domande in linguaggio naturale in query SQL accurate combinando large language model e modelli semantici. Il modello semantico colma il divario tra la terminologia di business e gli schemi di database, fornendo all'LLM il contesto necessario per generare SQL corretto.

Creazione dei modelli semantici

Ha a disposizione due opzioni per creare i modelli semantici:

  1. Procedura guidata di Snowsight: in Snowsight vada in AI & ML " Cortex Analyst e segua la configurazione guidata per creare una vista semantica. La procedura la accompagna nella selezione delle tabelle, nella definizione di dimensioni e metriche e nell'aggiunta di domande di esempio. È il modo più semplice per iniziare.
  2. Caricamento di un file YAML in uno stage: se preferisce definire il modello semantico come codice, può creare un file YAML seguendo la specifica del modello semantico e caricarlo in uno stage Snowflake.

Entrambi gli approcci funzionano con Cortex Analyst. La procedura guidata crea una vista semantica (un oggetto a livello di schema), mentre l'approccio YAML salva il file del modello in uno stage.

Utilizzo di Cortex Analyst

Una volta pronto il modello semantico, conceda l'accesso agli utenti:

-- Concede il ruolo CORTEX_USER agli utenti che necessitano dell'accesso
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE analyst_role;

Quindi, nell'applicazione, richiami l'API di Cortex Analyst passando una domanda in linguaggio naturale:

1import requests

2import json

3

4response = requests.post(

5    f"https://{account}.snowflakecomputing.com/api/v2/cortex/analyst/message",

6    headers={

7        "Authorization": f"Bearer {token}",

8        "Content-Type": "application/json"

9    },

10    json={

11        "messages": [{\
\
12            "role": "user",\
\
13            "content": [{\
\
14                "type": "text",\
\
15                "text": "What were our top 5 products by revenue last quarter?"\
```\
\
Expand Code\
\
Cortex Analyst supporta conversazioni multi-turno e consente agli utenti di porre domande di approfondimento che si appoggiano alle query precedenti.\
\
Se desidera utilizzare Cortex Analyst all'interno di Snowflake Intelligence, dovrà creare anche un agent. L'argomento è trattato [qui](/blog/snowflake-intelligence-overview-pricing-cost-monitoring).\
\

Come funziona il pricing di Cortex Analyst?\


Cortex Analyst adotta una tariffazione a messaggio, non a token. Solo le risposte HTTP 200 andate a buon fine sono fatturabili e il costo resta invariato a prescindere dal numero di token contenuti in ciascun messaggio. Secondo la Snowflake Service Consumption Table, ogni messaggio ha un costo fisso in crediti. Attualmente, sono 6,7 crediti ogni 100 messaggi.

I due principali fattori di costo:
\

  1. Ogni query in linguaggio naturale = 1 messaggio: chiedere "Qual è il mio fatturato?" equivale a un messaggio fatturabile.\
  2. A 3 $ per credito, 10 domande costano 2 $. Sembrerebbe una cifra che può lievitare in fretta, ma occorre soppesarla rispetto al valore di business che si ottiene. L'obiettivo non è sempre minimizzare la spesa Snowflake, bensì massimizzare il valore di business.\
  3. Costi del warehouse per l'esecuzione SQL: il costo del messaggio copre solo la generazione AI text-to-SQL. All'esecuzione dell'SQL generato si aggiungono i costi di compute del warehouse.
    \

Come monitorare l'utilizzo di Cortex Analyst\


Snowflake mette a disposizione una vista principale per tracciare i costi di Cortex Analyst:

CORTEX_ANALYST_USAGE_HISTORY: i dati sono aggregati su base oraria e pertanto non contengono l'ID della query.

La vista mostra il consumo di crediti di Cortex Analyst, aggregato in intervalli di un'ora. Include il numero di messaggi e i crediti consumati per ciascun utente.
\

1-- Utilizzo giornaliero di Cortex Analyst per utente negli ultimi 30 giorni\
\
2SELECT\
\
3    DATE_TRUNC('day', START_TIME) AS usage_date,\
\
4    USERNAME,\
\
5    SUM(REQUEST_COUNT) AS total_messages,\
\
6    SUM(CREDITS) AS total_credits\
\
7FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_ANALYST_USAGE_HISTORY\
8WHERE START_TIME >= DATEADD('day', -30, CURRENT_TIMESTAMP())\
\
9GROUP BY 1, 2\
\
10ORDER BY total_credits DESC;\
```\
\
La vista include START\_TIME, END\_TIME, REQUEST\_COUNT (numero di messaggi), CREDITS consumati e USERNAME. In questo modo ottiene visibilità per singolo utente su chi sta generando i costi di Cortex Analyst. La vista METERING\_HISTORY si può filtrare con `WHERE SERVICE_TYPE = 'AI_SERVICES'`, ma in tal caso potrebbe rilevare anche costi diversi da quelli di Cortex Analyst.\
\
### Monitorare i costi del warehouse legati all'esecuzione SQL\
\
Qui ha diverse opzioni: utilizzare un warehouse, un utente o un ruolo dedicato, oppure taggare le query avviate dall'app Cortex Analyst. L'approccio è lo stesso che adotterebbe abitualmente per l'attribuzione delle query, scegliendo ciò che meglio si adatta alla sua organizzazione.\
\

Best practice e raccomandazioni per l'uso di Cortex Analyst\

\

Imposti alert, non solo dashboard\


Le query di monitoraggio viste sopra non servono a nulla se nessuno le esegue. Per qualsiasi metrica che voglia tenere sotto controllo in Snowflake, può incapsulare l'SQL in un task pianificato con una Notification Integration per creare un monitor personalizzato che invii alert su Slack o Teams. Se cerca una funzionalità di monitoraggio davvero semplice da usare, dia un'occhiata ai monitor di SELECT.
\

Controlli l'accesso tramite i ruoli\


Per impostazione predefinita, il ruolo CORTEX_USER è assegnato al ruolo PUBLIC, il che significa che tutti gli utenti hanno accesso. Se non desidera un accesso universale, lo revochi a PUBLIC e lo conceda a ruoli specifici:

-- Limita Cortex Analyst a team specifici

USE ROLE ACCOUNTADMIN;

REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_USER FROM ROLE PUBLIC;

GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE data_analysts;

GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE finance_team;

Questa semplice modifica evita una diffusione incontrollata in tutta l'organizzazione.
\

Ottimizzi i modelli semantici\


Un modello semantico ben costruito riduce il numero di tentativi e di query fallite. Si concentri su un'area tematica specifica anziché esporre interi database. Includa query verificate per le domande più frequenti per migliorare l'accuratezza. In questo modo riduce le chiamate API sprecate e migliora l'esperienza utente.

Aggiunga repository di query verificate. Si tratta di domande di esempio con SQL validato che migliorano sensibilmente l'accuratezza. Quando gli utenti pongono domande simili, Cortex Analyst può fare riferimento a questi esempi:
\

1verified_queries:\
\
2  - name: "total revenue last quarter"\
\
3    question: "What was total revenue in Q4?"\
\
4    sql: |\
\
5      SELECT SUM(revenue_amount)\
\
6      FROM fact_sales\
\
7      WHERE sale_date >= '2024-10-01'\
\
8        AND sale_date < '2025-01-01'\
\
9    verified_result: 1250000.00\
```\
\
**Usi nomi descrittivi e aggiunga sinonimi**. Se la sua tabella si chiama `dim_product_category_master`, la definisca con nomi business-friendly:\
\
```yaml\
1dimensions:\
\
2  - name: product_category\
\
3    synonyms: ["category", "product type", "product class"]\
\
4    description: "High-level product grouping (Electronics, Clothing, etc.)"\
```\
\
### Definisca il metodo di attribuzione dei costi del warehouse\
\
Come anticipato, dovrà decidere come attribuire i costi dell'SQL generato da Cortex Analyst. Alcuni clienti optano per un warehouse dedicato, altri attribuiscono i costi per ruolo.\
\
### Utilizzi la dimensione di default del warehouse più piccola possibile\
\
La maggior parte delle query di Cortex Analyst sono aggregazioni relativamente semplici. Con tutta probabilità non le serve un warehouse XL.\
\
### Formi i suoi utenti\
\
La principale leva sui costi è il comportamento degli utenti. Quando comprendono che:\
\
- 10 domande costano un paio di dollari\
- Le domande complesse possono richiedere più tentativi\
- Le domande troppo ampie attivano query su warehouse più grandi\
\
...diventano naturalmente più attenti nell'uso. Crei una documentazione interna con esempi di costo e best practice per formulare le domande.\
\

Conclusioni\


Cortex Analyst è uno strumento potente per democratizzare l'accesso ai dati, ma come tutti i servizi AI può riservare sorprese sgradite sui costi se non viene monitorato.

Utilizzi CORTEX_ANALYST_USAGE_HISTORY per un tracciamento granulare, implementi controlli di accesso basati sui ruoli e formi gli utenti su modalità di utilizzo economicamente sostenibili. Con queste pratiche in atto, può adottare Cortex Analyst in tutta l'organizzazione senza ansie di budget.

Ricordi: il vero ROI di Cortex Analyst non sta solo nel ridurre la scrittura di SQL, ma nel fornire risposte più rapide agli utenti business per consentire loro di prendere decisioni migliori. Qualche credito in più speso per dare autonomia al team vale spesso molto di più del costo di insight tardivi o di risorse analitiche mal allocate.

Si goda le conversazioni con i suoi dati. E, come sempre, ci scriva per raccontarci i suoi successi con Cortex Analyst!



Jeff è un consulente Data & Analytics con oltre 15 anni di esperienza nell'automazione degli insight e nell'uso dei dati per governare i processi di business. Sul fronte tecnologico è specializzato in Snowflake + dbt + Tableau. Per quanto riguarda i settori, ha esperienza in Public Utility, Clinical Trials, Editoria, CPG e Manifattura. Lo contatti pure in qualsiasi momento: [email protected].\