SELECTSELECT

SELECT

Snowflake Intelligence: panoramica, prezzi e monitoraggio dei costi

By Jeff SkoldbergOct 9, 202510 min read

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

Cos'è Snowflake Intelligence?

Snowflake Intelligence è una nuova interfaccia, accessibile da ai.snowflake.com, che consente di porre domande sui propri dati in linguaggio naturale e di ottenere risposte immediate, complete di grafici, tabelle o insight testuali. È un'app a sé, pensata per gli utenti business che non vogliono scontrarsi con la complessità dell'interfaccia Snowsight. Non devono esplorare database, schemi, ruoli, cronologia delle query e così via: vogliono solo un'interfaccia di chat lineare, senza dover scrivere SQL e senza dover attendere che gli analytics engineer forniscano loro le risposte. Il tutto è alimentato da agenti AI che orchestrano dati strutturati (tramite Cortex Analyst), dati non strutturati (tramite Cortex Search) e strumenti personalizzati per offrire una visione completa del business.

Si può vedere come un ChatGPT per i dati su Snowflake, con la differenza che conosce davvero le definizioni aziendali, rispetta i controlli di accesso e riduce sensibilmente le allucinazioni grazie agli agenti e ai modelli semantici costruiti dal team interno.

Ora le persone del business possono porre domande con parole loro, ad esempio "mostrami il fatturato del Q4 per categoria di prodotto", senza sapere in quali tabelle risiedano i dati di fatturato o come siano categorizzati i prodotti. Un analista della supply chain può chiedere "quali problemi stanno segnalando i clienti sui nostri giubbotti invernali?" e ottenere insight a partire sia dai dati di vendita strutturati sia dai ticket di supporto non strutturati. È l'agente a capire quali strumenti utilizzare e come combinare i risultati.

Tutto questo richiede però un certo lavoro iniziale di configurazione, e i costi possono crescere rapidamente se non si presta attenzione. Vediamo come funziona, quanto costa e come tenere la spesa sotto controllo.

Come utilizzare Snowflake Intelligence

Snowflake Intelligence si basa sugli agenti, ovvero modelli AI collegati a una o più viste semantiche, modelli semantici, servizi Cortex Search e strumenti. Il meccanismo si articola in un flusso a due fasi: configurazione e utilizzo.

Fase 1: configurazione di infrastruttura e agenti

Per prima cosa, occorre creare la struttura di database e schemi per Intelligence:

-- Create the Intelligence database
CREATE DATABASE IF NOT EXISTS snowflake_intelligence;
GRANT USAGE ON DATABASE snowflake_intelligence TO ROLE PUBLIC;

-- Create schema for agents
CREATE SCHEMA IF NOT EXISTS snowflake_intelligence.agents;
GRANT USAGE ON SCHEMA snowflake_intelligence.agents TO ROLE PUBLIC;

-- Grant agent creation privileges
GRANT CREATE AGENT ON SCHEMA snowflake_intelligence.agents TO ROLE your_admin_role;

Per impostazione predefinita, Snowflake Intelligence utilizza il ruolo e il warehouse predefiniti dell'utente: assicuratevi quindi che gli utenti li abbiano configurati correttamente.

Fase 2: creazione delle viste semantiche per i dati strutturati

Una vista semantica mappa la terminologia di business sullo schema effettivo del database. Anziché pretendere che l'utente sappia che il fatturato risiede in fact_sales.amt_total_excl_tax, si definisce "fatturato" come concetto di business.

Le viste semantiche si possono creare tramite un wizard in Snowsight oppure caricando file YAML. Con il wizard:

  1. Andate su AI & ML → Cortex Analyst
  2. Cliccate su "Create new" → "Create new Semantic View"
  3. Selezionate tabelle e colonne
  4. Definite metriche di business e relazioni
  5. Aggiungete domande di esempio

Dietro le quinte viene generato un file YAML. Le viste semantiche colmano il divario tra il modo in cui gli utenti business descrivono i dati e il modo in cui questi sono memorizzati negli schemi del database. Ecco un esempio essenziale:

name: revenue_analysis
description: "Sales and revenue metrics by product and region"
tables:
  - name: sales
    description: "Daily sales transactions"
    base_table:
      database: analytics_db
      schema: sales
      table: fact_daily_sales
    dimensions:
      - name: product_category
        expr: product_category
        data_type: STRING
        description: "Product category"
    facts:

Expand Code

Il segreto sta nel curare descrizioni e sinonimi. Se qualcuno chiede informazioni sulle "vendite totali" ma avete definito solo il "fatturato lordo", l'agente potrebbe non capire la richiesta.

Lo YAML può essere modificato direttamente in Snowsight oppure tramite il wizard.

Fase 3: creazione dei servizi Cortex Search per i dati non strutturati

Per maggiori dettagli sull'implementazione, rimandiamo al nostro post dedicato a Cortex Search. Qui un esempio rapido.

Per documenti, ticket di supporto o altri dati testuali:

-- Create search service on your document table
CREATE CORTEX SEARCH SERVICE support_tickets_search
  ON ticket_text
  ATTRIBUTES customer_id, ticket_date, severity
  WAREHOUSE = search_warehouse
  TARGET_LAG = '1 hour'
  AS (
    SELECT
      ticket_id,
      ticket_text,
      customer_id,
      ticket_date,
      severity
    FROM support.tickets
  );

Cortex Search è utile per indicizzare e cercare contenuti ricchi di testo, come documenti, conversazioni e trascrizioni.

Fase 4: creazione e configurazione degli agenti

A questo punto si collega tutto. In Snowsight:

  1. Andate su AI & ML → Agents → Create agent
  2. Scegliete "Create this agent for Snowflake Intelligence"
  3. Assegnate un nome visibile agli utenti
  4. Aggiungete le viste semantiche come strumenti di Cortex Analyst
  5. Aggiungete i servizi Cortex Search
  6. Configurate le istruzioni di orchestrazione
  7. Impostate l'accesso basato sui ruoli

L'agente ha ora accesso a fonti di dati sia strutturate sia non strutturate e può orchestrarle tra loro. Quando un utente pone una domanda, l'agente:

  • Analizza la domanda
  • Stabilisce quali strumenti utilizzare
  • Esegue query sulle viste semantiche (generando SQL tramite Cortex Analyst)
  • Effettua ricerche sui dati non strutturati (tramite Cortex Search)
  • Combina i risultati e genera le visualizzazioni

Fase 5: utilizzo di Intelligence

Gli utenti accedono a Intelligence da ai.snowflake.com. Qui troveranno una sidebar molto essenziale con tre voci:

New Chat:

Agents:

Recent (chat recenti)

La maggior parte degli utenti partirà da "New chat". Basta scegliere un agente, una fonte dati (consigliato "auto") e porre la domanda.

Quando si pone una domanda, l'agente entra in modalità deep thinking e mostra i passaggi del proprio ragionamento man mano che procede:

Una volta formulata la risposta definitiva, l'agente nasconde di default i dettagli del ragionamento, ma è sempre possibile rivederli cliccando su "show details".

I limiti di Snowflake Intelligence

Uno dei principali punti deboli, a mio avviso, è l'impossibilità di salvare le analisi per consultarle di frequente. Manca una logica del tipo "chiedi una volta, consulta il report più volte". Altri agenti AI permettono di fissare un'analisi su una dashboard o in una cartella e di aggiornarla quando serve. Con Snowflake Intelligence, invece, se vi serve la stessa risposta ogni giorno dovete tornare in chat e chiedere all'agente di rieseguire l'analisi con i dati più recenti. Un'esperienza utente tutt'altro che ideale per i report ricorrenti.

Come funziona il pricing di Snowflake Intelligence?

I Cortex Agents — e quindi Snowflake Intelligence — non hanno voci di costo proprie oltre a quelle legate alle funzionalità sottostanti di Cortex Search e Cortex Analyst. Abbiamo dedicato articoli approfonditi a questi temi, che trovate linkati di seguito. Qui presentiamo una rapida sintesi delle singole componenti di costo.

Costi di Cortex Analyst:

Cortex Analyst gestisce le domande che richiedono query su dati strutturati e semi-strutturati: questa voce copre i costi AI per il text-to-SQL. Si aggiungono i costi del warehouse quando viene eseguito l'SQL generato da Cortex Analyst. La componente AI Services viene addebitata per richiesta, non per token. Secondo la Snowflake Service Consumption Table, Cortex Analyst consuma 6,7 crediti ogni 100 richieste per la maggior parte dei modelli.

Costi di Cortex Search (per i dati non strutturati):

Cortex Search gestisce le chat degli utenti che interrogano dati non strutturati. I servizi di ricerca consumano crediti sia in fase di indicizzazione sia in fase di ricerca. Al momento il consumo è di 8 crediti all'ora.

Come monitorare costi e utilizzo di Snowflake Intelligence

I nostri articoli su Cortex Search e Cortex Analyst approfondiscono il monitoraggio di ciascun servizio. I costi di Intelligence si distribuiscono su più tipologie di servizio, quindi servono query articolate per tracciare ogni voce. Date un'occhiata all'ultima query, che monitora tutti i servizi potenzialmente utilizzati da Snowflake Intelligence!

Tracciare l'utilizzo di Cortex Analyst

Questa query mostra chi utilizza maggiormente Cortex Analyst e quali warehouse eseguono le query generate.

-- Daily Cortex Analyst requests and costs
SELECT
  DATE_TRUNC('day', start_time) AS usage_date,
  SUM(request_count) AS total_requests,
  SUM(credits) AS analyst_credits,
  username
FROM snowflake.account_usage.cortex_analyst_usage_history
WHERE start_time >= DATEADD(day, -30, CURRENT_DATE())
GROUP BY DATE_TRUNC('day', start_time), username
ORDER BY usage_date DESC, analyst_credits DESC;

Tracciare tutti i costi degli AI Services

Questa query raggruppa in un unico punto tutti i costi legati all'AI, inclusi Cortex Search, Document AI e le funzioni AISQL.

-- AI Services consumption by service type
SELECT
  DATE_TRUNC('day', usage_date) as day,
  service_type,
  SUM(credits_used) as credits
FROM snowflake.account_usage.metering_daily_history
WHERE service_type = 'AI_SERVICES'
  AND usage_date >= DATEADD(day, -30, CURRENT_DATE())
GROUP BY DATE_TRUNC('day', usage_date), service_type
ORDER BY day DESC, credits DESC;

Monitorare i costi dei warehouse per le query di Intelligence

Purtroppo non esiste un modo davvero efficace per individuare le query generate da un agente. È possibile filtrare per Warehouse o per Role, ma non c'è alcun log specifico che identifichi separatamente questi query ID. Ecco un esempio di filtro per Warehouse. Valutate in anticipo come identificare queste query e configurate l'ambiente di conseguenza.

-- Warehouse consumption from Intelligence agent queries
-- Requires naming or tagging your Intelligence warehouses
SELECT
  DATE_TRUNC('day', start_time) as usage_date,
  warehouse_name,
  SUM(credits_used_compute) as compute_credits,
  SUM(credits_used_cloud_services) as cloud_credits,
  SUM(credits_used) as total_credits,
FROM snowflake.account_usage.warehouse_metering_history
WHERE warehouse_name IN (
  'INTELLIGENCE_WAREHOUSE',
  'ANALYST_WAREHOUSE',
  'SEARCH_WAREHOUSE'
)
  AND start_time >= DATEADD(day, -30, CURRENT_DATE())

Expand Code

Tracciare le operazioni di Cortex Search

-- Cortex Search service usage
SELECT
  DATE_TRUNC('day', start_time) AS usage_date,
  service_name,
  database_name,
  schema_name,
  SUM(credits) AS search_credits,
  SUM(credits) * 2 AS cost_usd
FROM snowflake.account_usage.cortex_search_serving_usage_history
WHERE start_time >= DATEADD(day, -30, CURRENT_DATE())
GROUP BY DATE_TRUNC('day', start_time), service_name, database_name, schema_name
ORDER BY usage_date DESC, search_credits DESC;

Vista consolidata dei costi di Intelligence

Questa query offre un quadro completo dei costi di Intelligence suddivisi per componente e permette di capire se a guidare la spesa siano il volume di query, le operazioni di ricerca o il compute dei warehouse.

-- Complete Intelligence cost rollup
WITH analyst_costs AS (
  SELECT
    DATE_TRUNC('day', start_time) AS day,
    'Cortex Analyst (AI requests)' AS component,
    SUM(credits) AS credits
  FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_ANALYST_USAGE_HISTORY
  WHERE start_time >= DATEADD(day, -30, CURRENT_DATE())
  GROUP BY 1
),
search_costs AS (
  SELECT
    usage_date AS day,
    'Cortex Search (Serving + Indexing)' AS component,
    SUM(credits) AS credits

Expand Code

Monitorare singole Semantic View in Snowsight

Nell'interfaccia Snowsight, andate su AI ML -> Cortex Analyst -> Semantic Views -> Monitoring. Qui troverete i dati di utilizzo delle singole viste semantiche.

Best practice e consigli per utilizzare Snowflake Intelligence

Impostate alert, non solo dashboard

Le query di monitoraggio viste sopra non servono a nulla se nessuno le esegue. Per qualsiasi metrica vogliate monitorare in Snowflake, potete incapsulare l'SQL in uno scheduled task con una Notification Integration per creare un monitor personalizzato che invii alert su Slack o Teams. Se cercate un monitoraggio davvero semplice da usare, date un'occhiata ai monitor di SELECT.

Dimensionate correttamente i warehouse per i workloads di Intelligence

I costi sopra indicati coprono la parte AI del text-to-SQL. A questi si aggiungono i costi del warehouse quando viene eseguito l'SQL generato da Cortex Analyst. Partite da un warehouse X-Small o Small per le query di Analyst: la generazione dell'SQL in sé è economica, ma l'esecuzione delle query può diventare costosa se i warehouse sono sovradimensionati.

Progettate le viste semantiche con criterio

Una progettazione approssimativa delle viste semantiche rende gli agenti lenti e costosi. Seguite questi principi:

Partite ristretti, espandetevi gradualmente. Iniziate con 3-5 tabelle chiave e le domande più frequenti. Un file semantico ben circoscritto garantisce maggiore precisione e accuratezza dei risultati. Potete sempre aggiungere altre tabelle in seguito.

Aggiungete repository di query verificate. Si tratta di domande di esempio con SQL validato, che migliorano drasticamente l'accuratezza. Quando gli utenti pongono domande simili, Cortex Analyst può attingere a questi esempi:

verified_queries:
  - name: "total revenue last quarter"
    question: "What was total revenue in Q4?"
    sql: |
      SELECT SUM(revenue_amount)
      FROM fact_sales
      WHERE sale_date >= '2024-10-01'
        AND sale_date < '2025-01-01'
    verified_result: 1250000.00

Usate nomi descrittivi e aggiungete sinonimi. Se la vostra tabella si chiama dim_product_category_master, definitela con nomi più vicini al linguaggio del business:

dimensions:
  - name: product_category
    synonyms: ["category", "product type", "product class"]
    description: "High-level product grouping (Electronics, Clothing, etc.)"

Implementate quote di utilizzo per utente o ruolo

Snowflake Intelligence non prevede quote per utente integrate, ma potete implementarle tramite resource monitor sui warehouse utilizzati dagli agenti:

-- Create a resource monitor for Intelligence usage
CREATE RESOURCE MONITOR intelligence_monthly_quota
  WITH CREDIT_QUOTA = 500
  FREQUENCY = MONTHLY
  START_TIMESTAMP = IMMEDIATELY
  TRIGGERS
    ON 75 PERCENT DO NOTIFY
    ON 90 PERCENT DO NOTIFY
    ON 100 PERCENT DO SUSPEND;

-- Assign to Intelligence warehouses
ALTER WAREHOUSE intelligence_warehouse
  SET RESOURCE_MONITOR = intelligence_monthly_quota;

Ottimizzate i servizi Cortex Search

I costi della ricerca dipendono in larga parte da come è configurato il servizio. Seguite queste linee guida:

Impostate target lag adeguati. Se i documenti non cambiano spesso, utilizzate intervalli di refresh più lunghi:

-- For static documentation
CREATE CORTEX SEARCH SERVICE product_docs_search
  ON document_text
  TARGET_LAG = '24 hours'  -- Instead of default 1 hour
  ...

Restringete lo scope della ricerca quando possibile. Se agli agenti servono solo i documenti recenti, applicate dei filtri:

CREATE CORTEX SEARCH SERVICE support_tickets_search
  ON ticket_text
  ATTRIBUTES customer_id, ticket_date, severity
  WHERE ticket_date >= DATEADD(year, -1, CURRENT_DATE())
  ...

In sintesi

Snowflake Intelligence rende i dati aziendali accessibili agli utenti non tecnici attraverso il linguaggio naturale, combinando in modo fluido fonti strutturate e non strutturate. La chiave per tenere sotto controllo i costi è comprenderne le componenti: Cortex Analyst per la generazione dell'SQL, i virtual warehouse per l'esecuzione delle query, Cortex Search per i dati non strutturati e l'orchestrazione LLM che tiene insieme il tutto.

Partite in piccolo, con una vista semantica mirata che copra le metriche più critiche, monitorate l'utilizzo da vicino ed espandetevi gradualmente man mano che capite cosa traina i costi. Soprattutto, configurate alert sulle query di monitoraggio, così da intercettare i picchi di spesa prima che si riflettano in bolletta.

Raccontateci come state utilizzando Snowflake Intelligence! Ci farebbe piacere ascoltare storie reali su quali casi d'uso giustifichino il costo e dove abbiate visto il ROI maggiore.

Jeff è un Data and Analytics Consultant con oltre 15 anni di esperienza nell'automazione degli insight e nell'utilizzo dei dati per governare i processi di business. Sul piano tecnologico è specializzato in Snowflake + dbt + Tableau. Sul fronte dei settori, ha esperienza in Public Utility, Clinical Trials, Publishing, CPG e Manufacturing. Per qualsiasi cosa, scrivetegli a [email protected].