Snowflake: Go (gosnowflake v2)
database/sql with the Snowflake driver.
The only change
Section titled “The only change”# host / account URL myorg-myaccount.snowflakecomputing.com warehouse.internal (MachWarehouse Snowflake REST endpoint, HTTPS 443)# account myorg-myaccount the MachWarehouse account name (any label; kept for drivers that require it)# user / password, role, warehouse, database, schema Snowflake values MachWarehouse values (warehouse = compute pool)# SNOWFLAKE_DSN Before After app:secret@myorg-myaccount/DEMO/PUBLIC?warehouse=BI&role=ANALYST app:secret@warehouse.internal:443/DEMO/PUBLIC?account=demo&protocol=https&warehouse=BI&role=ANALYSTgo mod tidySNOWFLAKE_DSN='app:secret@warehouse.internal:443/DEMO/PUBLIC?account=demo&protocol=https&warehouse=BI' go run .Library: github.com/snowflakedb/gosnowflake/v2 v2.3.0 (Go 1.27).
Source
Section titled “Source”The program as it is kept and tested in the Mach Database Warehouse repository; highlighted lines read the connection setting.
// Command snowflake-go prints revenue per country through database/sql and// gosnowflake. Plain Snowflake driver code: the DSN host form is the driver's// own syntax for private links and proxies.package main
import ( "database/sql" "fmt" "log" "os"
_ "github.com/snowflakedb/gosnowflake/v2")
func main() { // Before: app:secret@myorg-myaccount/DEMO/PUBLIC?warehouse=BI&role=ANALYST // After: app:secret@warehouse.internal:443/DEMO/PUBLIC?account=demo&protocol=https&warehouse=BI&role=ANALYST db, err := sql.Open("snowflake", os.Getenv("SNOWFLAKE_DSN")) if err != nil { log.Fatal(err) } defer db.Close()
rows, err := db.Query("SELECT country, COUNT(*) AS events, TO_VARCHAR(SUM(revenue)) AS revenue FROM events GROUP BY country ORDER BY SUM(revenue) DESC") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var country, revenue string var events int64 if err := rows.Scan(&country, &events, &revenue); err != nil { log.Fatal(err) } fmt.Printf("%s\t%d\t%s\n", country, events, revenue) } if err := rows.Err(); err != nil { log.Fatal(err) }}module example.com/machwarehouse/snowflake-go
go 1.27
require github.com/snowflakedb/gosnowflake/v2 v2.3.0