SELECTSELECT

SELECT

Prezzi del trasferimento dati Snowflake ed Egress Cost Optimizer

By Jeff SkoldbergOct 21, 20256 min read

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

Il pricing di Snowflake è a consumo e si articola generalmente in 3 categorie: Storage, Compute e Cloud Services. E i costi di trasferimento dati? Rientrano nella voce "Serverless", una sottocategoria dei Cloud Services. Vediamo nel dettaglio.

Ingress vs egress: cosa viene addebitato?

L'ingress dei dati, ovvero il caricamento in Snowflake, è sempre gratuito. Naturalmente si paga il compute e lo storage utilizzati, ma il caricamento dei dati in Snowflake non comporta alcun costo di trasferimento, nemmeno cross-region. L'unica avvertenza: il suo cloud provider potrebbe addebitarle lo spostamento dei dati tra regioni, ma Snowflake non le farà mai pagare l'ingress.

È con l'egress che scattano gli addebiti. Snowflake applica una tariffa per byte quando si trasferiscono dati da un account Snowflake verso una regione diversa sulla stessa piattaforma cloud o verso una piattaforma cloud completamente diversa. I trasferimenti all'interno della stessa regione, invece, sono gratuiti. La Snowflake Pricing Guide riporta i dettagli esatti dei prezzi. Ecco uno screenshot parziale per darle un'idea:

Quali attività generano costi di trasferimento dati?

I costi di trasferimento si attivano quando si spostano dati dal proprio account Snowflake verso una regione o una piattaforma cloud diversa. Ecco le operazioni che generano questi addebiti:

Unloading dei dati: l'uso del comando COPY INTO <location> per esportare dati da Snowflake verso uno storage cloud esterno (Amazon S3, Google Cloud Storage o Microsoft Azure) in una regione o piattaforma cloud diversa comporta costi di trasferimento.

Replica del database: la replica di database tra regioni o piattaforme cloud per finalità di disaster recovery o data sharing genera costi di trasferimento. Sia la replica iniziale sia le successive sincronizzazioni trasferiscono dati tra regioni.

Cross-Cloud Auto-Fulfillment: l'utilizzo dell'auto-fulfillment per condividere data listing con consumer in altre regioni cloud tramite Snowflake Marketplace comporta costi di trasferimento dati.

External Functions: la chiamata di external functions che trasferiscono dati dal proprio account Snowflake verso servizi AWS, Microsoft Azure o Google Cloud genera addebiti di egress.

Scritture Iceberg cross-region: se si utilizza Snowflake come catalogo per tabelle Iceberg, la scrittura di nuovi dati genera costi di trasferimento quando lo storage si trova in una regione o presso un cloud provider diverso.

Eccezione importante: il recupero dei risultati delle query tramite client o driver Snowflake NON comporta addebiti di egress, nemmeno quando i risultati vengono restituiti tra regioni o piattaforme cloud diverse. Un risparmio significativo per le normali operazioni di query.

Quanto costa il trasferimento dati?

Il pricing del trasferimento dati varia notevolmente in base al cloud provider e alla regione del proprio account Snowflake. Tutti i dettagli sono nella Credit Consumption Table, ma ecco una panoramica generale:

Trasferimenti nella stessa regione: gratuiti (nessun addebito).

Cross-region (stesso cloud): in genere si va dai 20 $ per TB nelle regioni statunitensi ai 140 $ per TB in alcune regioni dell'Asia Pacifico.

Cross-cloud o internet: di norma tra i 90 e i 155 $ per TB, a seconda di origine e destinazione.

Ad esempio, trasferire da AWS US East (Northern Virginia) a internet costa circa 90 $ per TB, mentre la stessa operazione da Google Cloud (US East 4) può variare tra i 120 e i 190 $ per TB.

Egress Cost Optimizer: una svolta per il data sharing

Ad aprile 2025 Snowflake ha rilasciato l'Egress Cost Optimizer (ECO), che può ridurre drasticamente i costi di trasferimento dati per i provider che condividono dati tra più regioni.

ECO sfrutta un algoritmo intelligente per mettere in cache i dati in uno storage gestito da Snowflake dopo il primo egress, consentendo di replicare verso ulteriori regioni senza costi di egress aggiuntivi. Il risparmio può arrivare fino al 96% rispetto alla replica cross-region tradizionale.

Come utilizzare ECO:

ECO deve essere prima autorizzato a livello di organizzazione da un utente ORGADMIN tramite Provider Studio. Una volta autorizzato, viene abilitato automaticamente per tutti gli account dell'organizzazione (i singoli account possono comunque disattivarlo dalle impostazioni). Dopo l'abilitazione, ECO utilizza un routing intelligente per stabilire in autonomia quando l'uso della cache consente di risparmiare. Non userà la cache, ad esempio, se si sta replicando solo verso una o due regioni dello stesso cloud provider, perché i costi sono già ottimizzati.

Struttura dei costi:

  • Disponibile solo per Cross-Cloud Auto-Fulfillment (non per la replica manuale)
  • 16,896 $ per TB-mese per i dati in cache
  • Addebito solo per i giorni in cui la cache viene effettivamente utilizzata
  • Nessun addebito se ECO stabilisce che la cache non porterà risparmi

Considerazioni sul cloud provider

Un aspetto spesso trascurato: pur non addebitando l'ingress, Snowflake non esclude che il suo cloud storage provider di origine applichi egress fee per il trasferimento dei dati verso Snowflake. Verifichi con il proprio cloud provider (Amazon S3, Google Cloud Storage o Microsoft Azure) i relativi costi di egress quando sposta dati nel suo account Snowflake.

Monitorare e ottimizzare i costi di trasferimento dati

Per tenere sotto controllo le spese di trasferimento dati, Snowflake mette a disposizione diversi strumenti:

Dashboard Snowsight

In Snowsight si possono visualizzare rapidamente volumi e costi di trasferimento dati su intervalli temporali specifici. Acceda ad Admin → Cost Management → Consumption e filtri per Usage Type = Data Transfer.

Query sullo storico dei trasferimenti dati a livello di account

Utilizzi la view DATA_TRANSFER_HISTORY nello schema ACCOUNT_USAGE per interrogare nel dettaglio i trasferimenti del suo account negli ultimi 365 giorni:

-- View data transfer history for the last 30 days
SELECT
    DATE_TRUNC('day', START_TIME) AS transfer_date,
    SOURCE_CLOUD,
    SOURCE_REGION,
    TARGET_CLOUD,
    TARGET_REGION,
    TRANSFER_TYPE,
    SUM(BYTES_TRANSFERRED) / POWER(1024, 4) AS tb_transferred
FROM SNOWFLAKE.ACCOUNT_USAGE.DATA_TRANSFER_HISTORY
WHERE START_TIME >= DATEADD(day, -30, CURRENT_TIMESTAMP())
GROUP BY 1, 2, 3, 4, 5, 6
ORDER BY transfer_date DESC, tb_transferred DESC;

Query sui costi di trasferimento dati a livello di organizzazione

Utilizzi la view DATA_TRANSFER_DAILY_HISTORY nello schema ORGANIZATION_USAGE per una visibilità estesa a tutta l'organizzazione:

SELECT
    USAGE_DATE,
    ACCOUNT_NAME,
    SERVICE_TYPE,
    REGION,
    TB_TRANSFERED,
    ACCOUNT_LOCATOR
FROM SNOWFLAKE.ORGANIZATION_USAGE.DATA_TRANSFER_DAILY_HISTORY
WHERE USAGE_DATE >= DATEADD(day, -30, CURRENT_DATE())
ORDER BY USAGE_DATE DESC, TB_TRANSFERED DESC;

Best practice

  1. Mantenga i trasferimenti all'interno della stessa regione, quando possibile, per evitare qualsiasi addebito.
  2. Privilegi il data sharing rispetto alla replica per evitare i costi di trasferimento – la funzionalità nativa di data sharing di Snowflake consente di condividere dati con altri account Snowflake senza copiarli fisicamente. Con il data sharing, il consumer interroga i dati direttamente dallo storage del provider (senza alcuno spostamento), quindi non vi sono costi di trasferimento nemmeno in caso di condivisione cross-region. La replica, al contrario, crea una copia completa del database e comporta costi di trasferimento quando attraversa le regioni.
  3. Abiliti l'Egress Cost Optimizer se replica dati verso più regioni: il risparmio può arrivare al 90%.
  4. Pianifichi con attenzione gli unload di grandi volumi di dati e valuti se sia davvero necessario spostarli tutti.
  5. Monitori regolarmente i pattern di trasferimento con gli strumenti di cost monitoring di Snowflake.
  6. Comprima i dati prima dell'unload per ridurre il volume trasferito.

Falsi miti sul trasferimento dati

Ho parlato con diverse persone convinte che visualizzare dati in uno strumento di BI o in un'applicazione Python generi costi di trasferimento. Non è affatto vero. Le normali query SELECT non generano mai costi di trasferimento, nemmeno utilizzando uno strumento esterno all'ecosistema Snowflake.

In sintesi

Comprendere i costi di trasferimento dati è fondamentale per governare la spesa complessiva su Snowflake. Storage e compute catalizzano spesso l'attenzione, ma le egress fee possono sommarsi rapidamente, soprattutto nelle organizzazioni che operano su più regioni o piattaforme cloud, o che spostano dati da Snowflake verso altre applicazioni data-centric.

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