Running queries or builds with SQL warehousing in Foundry consumes compute resources, measured in compute-seconds. This page explains how compute is used by the SQL warehouse and how usage is attributed to Foundry resources for reporting. Usage can be viewed from the Resource management application.
The below table lays out Foundry compute used in SQL warehouse queries by query type and links to relevant detailed documentation.
| Query engine | Query type | Supported resources | Compute rate | Usage attribution |
|---|---|---|---|---|
| Furnace | Direct read | Datasets, Iceberg tables, virtual tables, restricted views | Free | Not applicable |
| Furnace | Other reads (SELECT) | Datasets, Iceberg tables, virtual tables, restricted views | Furnace SQL | Split evenly across resources queried |
| Furnace | Writes (CREATE, INSERT, UPDATE, DELETE) | Datasets, Iceberg tables | Furnace SQL | Split evenly across resources written to |
| Legacy direct read engine | Direct read | Datasets | Not applicable | Not applicable |
| Legacy Spark engine | Other reads (SELECT) | Datasets, Iceberg tables, virtual tables, restricted views, objects (via materializations) | Contour | Split evenly across resources queried |
| Ontology SQL | Read (SELECT) | Object types, many-to-many links | Foundry Ontology | The saved application executing the query, or split evenly across resources queried if no saved application is present |
Direct reads let you preview or export existing data without incurring Furnace SQL compute charges. A direct read selects all columns or a subset of columns from a single resource, optionally using LIMIT to restrict the number of rows returned. You can also rename columns with AS.
Queries that filter rows, sort results, join resources, aggregate values, remove duplicates with DISTINCT, or calculate new values are not direct reads. Subqueries and common table expressions (WITH) are also excluded.
For example, the following direct read returns up to 100 rows from a dataset without transforming the data:
Copied!1SELECT * FROM `/path/to/dataset` LIMIT 100;