Snowctl is a focused administration text user interface (TUI) for exploring snowflake. It is aimed at making administrator's lives easier. It allows you to quickly navigate through snowflake objects and perform actions.
I've found that many tools for Snowflake are aimed at Data Scientists and directly interacting with SQL. While administering and developing Native Applications within a Snowflake account I was wanting a tool similar to k9s that allowed me to explore the account and quickly perform actions. Snowflake Compute Pools are essentially an abstraction around Kubernetes so I thought that the k9s model would work quite well here.
snowctl
uses the snowsql and snowflake odbc driver configuration files. See the formats for these connections:
- snowsql configuration file format and also uses environment variables
- snowflake standard confguration format and also uses environment variables
GoReleaser is used for snowctl
releases.
- Visit the GitHub releases page
- Download the tarball or zip for your platform
- Extract the archive and move the binary to directory within your path
We use the Snowflake go odbc driver which supports most forms of authentication. Additionally we internally use the Snowflake terraform provider snowflae sdk. Currently we have had to shim much of the sdk since it does not support many interesting PuPr and PrPr features.
go run cmd/snowctl/main.go
Users can easily switch between accounts when using snowctl
Not all snowflake objects are supported. A best effort has been made to keep these checklists up to date.
Symbols:
X
fully supportedO
partially supported-
not relevant
Object | SHOW | DROP | ALTER |
---|---|---|---|
Account Operations | - | - | - |
ACCOUNTS | |||
CONNECTIONS | |||
GLOBAL ACCOUNTS | |||
ORGANIZATION ACCOUNTS | |||
PARAMETERS | |||
REGIONS | |||
RELEASE DIRECTIVES | X | ||
REPLICATION ACCOUNTS | |||
VERSIONS | X | ||
Session | - | - | - |
LOCKS | |||
PARAMETERS | |||
TRANSACTIONS | |||
VARIABLES | |||
Account | |||
APPLICATIONS | X | ||
APPLICATION PACKAGES | X | ||
AUTHENTICATION POLICIES | |||
CATALOG INTEGRATIONS | |||
COMPUTE POOLS | X | X | X |
DATABASE ROLES | |||
DATABASES | X | X | |
EXTERNAL VOLUMES | |||
FAILOVER GROUPS | |||
INTEGRATIONS | X | ||
FUNCTIONS | |||
GRANTS | X | ||
NETWORK POLICIES | X | ||
PARAMETERS | |||
REPLICATION DATABASES | |||
REPLICATION GROUPS | |||
RESOURCE MONITORS | |||
ROLES | X | ||
SHARES | |||
USERS | X | ||
WAREHOUSES | X | X | |
Database Objects | - | - | - |
AGGREGATION POLICIES | |||
ALERTS | |||
AUTHENTICATION POLICIES | |||
DATA METRIC FUNCTIONS | |||
CHANNELS | |||
CLASSES | |||
COLUMNS | |||
CORTEX SEARCH SERVICES | |||
DYNAMIC TABLES | |||
EVENT TABLES | |||
EXTERNAL FUNCTIONS | |||
EXTERNAL TABLES | |||
FILE FORMATS | |||
FUNCTIONS | |||
GIT BRANCHES | |||
GIT REPOSITORIES | |||
GIT TAGS | |||
HYBRID TABLES | |||
ICEBERG TABLES | |||
INDEXES | |||
IMAGE REPOSITORIES | X | ||
LISTINGS | X | ||
MATERIALIZED VIEWS | |||
MASKING POLICIES | |||
MODELS | |||
NETWORK RULES | X | ||
NOTEBOOKS | |||
OBJECTS | |||
PACKAGES POLICIES | |||
PASSWORD POLICIES | |||
PIPES | |||
PROCEDURES | X | ||
PROJECTION POLICIES | |||
ROW ACCESS POLICIES | |||
SCHEMAS | X | X | |
SECRETS | X | X | |
SERVICES | X | X | |
SESSION POLICIES | |||
SEQUENCES | |||
SNAPSHOTS | X | X | |
STAGES | X | X | |
STREAMS | |||
STREAMLITS | X | ||
TABLES | X | X | |
TAGS | |||
TASKS | |||
USER FUNCTIONS | |||
VERSIONS IN MODEL | |||
VIEWS | X | ||
Classes | - | - | - |
SNOWFLAKE.ML.ANOMALY_DETECTION | |||
BUDGET | |||
SNOWFLAKE.ML.CLASSIFICATION | |||
CUSTOM_CLASSIFIER | |||
SNOWFLAKE.ML.FORECAST |