snowflake

package
v0.5.0-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 20, 2025 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetObjectNameFromFqn added in v0.4.19

func GetObjectNameFromFqn(fqn string) string

func ParseCreateStatementsPerObject added in v0.4.19

func ParseCreateStatementsPerObject(ctx context.Context, ddls string) (map[string]string, error)

func QuoteLiteral

func QuoteLiteral(literal string) string

func UnQuote added in v0.4.19

func UnQuote(key string) string

Types

type DatabaseAndSchema added in v0.4.19

type DatabaseAndSchema struct {
	DatabaseName string
	SchemaName   string
}

type DbDesc

type DbDesc struct {
	Name    string `db:"name"    json:"name"`
	Origin  string `db:"origin"  json:"origin"`
	Owner   string `db:"owner"   json:"owner"`
	Comment string `db:"comment" json:"comment"`
	Kind    string `db:"kind"    json:"kind"`
}

func (*DbDesc) String

func (d *DbDesc) String() string

type ShareDesc

type ShareDesc struct {
	Name              string         `db:"name"                json:"name"`
	Kind              string         `db:"kind"                json:"kind"`
	OwnerAccount      string         `db:"owner_account"       json:"owner_account"`
	DatabaseName      string         `db:"database_name"       json:"database_name"`
	To                string         `db:"to"                  json:"to"`
	Owner             string         `db:"owner"               json:"owner"`
	Comment           string         `db:"comment"             json:"comment"`
	ListingGlobalName string         `db:"listing_global_name" json:"listing_global_name"`
	Objects           []*ShareObject `                         json:"objects"`
}

func (*ShareDesc) String

func (d *ShareDesc) String() string

type ShareObject

type ShareObject struct {
	Kind     string    `db:"kind"      json:"kind"`
	Name     string    `db:"name"      json:"name"`
	SharedOn time.Time `db:"shared_on" json:"shared_on"`
}

type ShowStreamsRow added in v0.4.12

type ShowStreamsRow struct {
	// CreatedOn is the timestamp when the stream was created
	CreatedOn string `db:"created_on"`
	// Name is the name of the stream
	Name string `db:"name"`
	// DatabaseName is the database containing the stream
	DatabaseName string `db:"database_name"`
	// SchemaName is the schema containing the stream
	SchemaName string `db:"schema_name"`
	// Owner is the owner of the stream
	Owner string `db:"owner"`
	// Comment is the comment/description for the stream
	Comment string `db:"comment"`
	// TableName is the name of the source table the stream tracks
	TableName string `db:"table_name"`
	// SourceType is the type of source object (Table, View, etc.)
	SourceType string `db:"source_type"`
	// BaseTables lists the base tables the stream tracks
	BaseTables string `db:"base_tables"`
	// Type is the stream type (DELTA, etc.)
	Type string `db:"type"`
	// Stale indicates whether the stream is stale (true/false)
	Stale string `db:"stale"`
	// Mode is the stream mode: DEFAULT (standard/delta), APPEND_ONLY, or INSERT_ONLY
	Mode string `db:"mode"`
	// StaleAfter is the timestamp when the stream becomes stale
	StaleAfter string `db:"stale_after"`
	// InvalidReason provides the reason if the stream is invalid
	InvalidReason string `db:"invalid_reason"`
	// OwnerRoleType is the type of owner role
	OwnerRoleType string `db:"owner_role_type"`
}

ShowStreamsRow represents the structure of a row returned by SHOW STREAMS command

type SnowflakeQueryLogSchema

type SnowflakeQueryLogSchema struct {
	QueryID                                string    `db:"QUERY_ID"`
	QueryText                              string    `db:"QUERY_TEXT"`
	DatabaseID                             *int64    `db:"DATABASE_ID"`
	DatabaseName                           *string   `db:"DATABASE_NAME"`
	SchemaID                               *int64    `db:"SCHEMA_ID"`
	SchemaName                             *string   `db:"SCHEMA_NAME"`
	QueryType                              string    `db:"QUERY_TYPE"`
	SessionID                              int64     `db:"SESSION_ID"`
	UserName                               string    `db:"USER_NAME"`
	RoleName                               *string   `db:"ROLE_NAME"`
	WarehouseID                            *int64    `db:"WAREHOUSE_ID"`
	WarehouseName                          *string   `db:"WAREHOUSE_NAME"`
	WarehouseSize                          *string   `db:"WAREHOUSE_SIZE"`
	WarehouseType                          *string   `db:"WAREHOUSE_TYPE"`
	ClusterNumber                          *int32    `db:"CLUSTER_NUMBER"`
	QueryTag                               string    `db:"QUERY_TAG"`
	ExecutionStatus                        string    `db:"EXECUTION_STATUS"`
	ErrorCode                              *int32    `db:"ERROR_CODE"`
	ErrorMessage                           *string   `db:"ERROR_MESSAGE"`
	StartTime                              time.Time `db:"START_TIME"`
	EndTime                                time.Time `db:"END_TIME"`
	TotalElapsedTime                       int64     `db:"TOTAL_ELAPSED_TIME"`
	BytesScanned                           int64     `db:"BYTES_SCANNED"`
	PercentageScannedFromCache             float64   `db:"PERCENTAGE_SCANNED_FROM_CACHE"`
	BytesWritten                           int64     `db:"BYTES_WRITTEN"`
	BytesWrittenToResult                   int64     `db:"BYTES_WRITTEN_TO_RESULT"`
	BytesReadFromResult                    int64     `db:"BYTES_READ_FROM_RESULT"`
	RowsProduced                           *int64    `db:"ROWS_PRODUCED"`
	RowsInserted                           int64     `db:"ROWS_INSERTED"`
	RowsUpdated                            int64     `db:"ROWS_UPDATED"`
	RowsDeleted                            int64     `db:"ROWS_DELETED"`
	RowsUnloaded                           int64     `db:"ROWS_UNLOADED"`
	BytesDeleted                           int64     `db:"BYTES_DELETED"`
	PartitionsScanned                      int64     `db:"PARTITIONS_SCANNED"`
	PartitionsTotal                        int64     `db:"PARTITIONS_TOTAL"`
	BytesSpilledToLocalStorage             int64     `db:"BYTES_SPILLED_TO_LOCAL_STORAGE"`
	BytesSpilledToRemoteStorage            int64     `db:"BYTES_SPILLED_TO_REMOTE_STORAGE"`
	BytesSentOverTheNetwork                int64     `db:"BYTES_SENT_OVER_THE_NETWORK"`
	CompilationTime                        int64     `db:"COMPILATION_TIME"`
	ExecutionTime                          int64     `db:"EXECUTION_TIME"`
	QueuedProvisioningTime                 int64     `db:"QUEUED_PROVISIONING_TIME"`
	QueuedRepairTime                       int64     `db:"QUEUED_REPAIR_TIME"`
	QueuedOverloadTime                     int64     `db:"QUEUED_OVERLOAD_TIME"`
	TransactionBlockedTime                 int64     `db:"TRANSACTION_BLOCKED_TIME"`
	OutboundDataTransferCloud              *string   `db:"OUTBOUND_DATA_TRANSFER_CLOUD"`
	OutboundDataTransferRegion             *string   `db:"OUTBOUND_DATA_TRANSFER_REGION"`
	OutboundDataTransferBytes              *int64    `db:"OUTBOUND_DATA_TRANSFER_BYTES"`
	InboundDataTransferCloud               *string   `db:"INBOUND_DATA_TRANSFER_CLOUD"`
	InboundDataTransferRegion              *string   `db:"INBOUND_DATA_TRANSFER_REGION"`
	InboundDataTransferBytes               *int64    `db:"INBOUND_DATA_TRANSFER_BYTES"`
	ListExternalFilesTime                  int64     `db:"LIST_EXTERNAL_FILES_TIME"`
	CreditsUsedCloudServices               float64   `db:"CREDITS_USED_CLOUD_SERVICES"`
	ReleaseVersion                         string    `db:"RELEASE_VERSION"`
	ExternalFunctionTotalInvocations       int64     `db:"EXTERNAL_FUNCTION_TOTAL_INVOCATIONS"`
	ExternalFunctionTotalSentRows          int64     `db:"EXTERNAL_FUNCTION_TOTAL_SENT_ROWS"`
	ExternalFunctionTotalReceivedRows      int64     `db:"EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS"`
	ExternalFunctionTotalSentBytes         int64     `db:"EXTERNAL_FUNCTION_TOTAL_SENT_BYTES"`
	ExternalFunctionTotalReceivedBytes     int64     `db:"EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES"`
	QueryLoadPercent                       *int64    `db:"QUERY_LOAD_PERCENT"`
	IsClientGeneratedStatement             bool      `db:"IS_CLIENT_GENERATED_STATEMENT"`
	QueryAccelerationBytesScanned          int64     `db:"QUERY_ACCELERATION_BYTES_SCANNED"`
	QueryAccelerationPartitionsScanned     int64     `db:"QUERY_ACCELERATION_PARTITIONS_SCANNED"`
	QueryAccelerationUpperLimitScaleFactor int64     `db:"QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR"`
	ChildQueriesWaitTime                   int64     `db:"CHILD_QUERIES_WAIT_TIME"`
	TransactionID                          int64     `db:"TRANSACTION_ID"`
	RoleType                               *string   `db:"ROLE_TYPE"`
	QueryHash                              *string   `db:"QUERY_HASH"`
	QueryHashVersion                       *int64    `db:"QUERY_HASH_VERSION"`
	QueryParameterizedHash                 *string   `db:"QUERY_PARAMETERIZED_HASH"`
	QueryParameterizedHashVersion          *int64    `db:"QUERY_PARAMETERIZED_HASH_VERSION"`
}

SnowflakeQueryLogSchema represents Snowflake's ACCOUNT_USAGE.QUERY_HISTORY schema Source: https://docs.snowflake.com/en/sql-reference/account-usage/query_history

type SnowflakeScrapper

type SnowflakeScrapper struct {
	// contains filtered or unexported fields
}

func NewSnowflakeScrapper

func NewSnowflakeScrapper(ctx context.Context, conf *SnowflakeScrapperConf) (*SnowflakeScrapper, error)

func (*SnowflakeScrapper) Close

func (e *SnowflakeScrapper) Close() error

func (*SnowflakeScrapper) DialectType added in v0.1.8

func (e *SnowflakeScrapper) DialectType() string

func (*SnowflakeScrapper) Executor

func (*SnowflakeScrapper) FetchQueryLogs

func (s *SnowflakeScrapper) FetchQueryLogs(ctx context.Context, from, to time.Time, obfuscator querylogs.QueryObfuscator) (querylogs.QueryLogIterator, error)

func (*SnowflakeScrapper) GetExistingDbs

func (e *SnowflakeScrapper) GetExistingDbs(ctx context.Context) ([]*DbDesc, error)

func (*SnowflakeScrapper) IsPermissionError added in v0.1.1

func (e *SnowflakeScrapper) IsPermissionError(err error) bool

func (*SnowflakeScrapper) QueryCatalog

func (e *SnowflakeScrapper) QueryCatalog(origCtx context.Context) ([]*scrapper.CatalogColumnRow, error)

func (*SnowflakeScrapper) QueryCustomMetrics

func (e *SnowflakeScrapper) QueryCustomMetrics(ctx context.Context, sql string, args ...any) ([]*scrapper.CustomMetricsRow, error)

func (*SnowflakeScrapper) QueryDatabases

func (e *SnowflakeScrapper) QueryDatabases(ctx context.Context) ([]*scrapper.DatabaseRow, error)

func (*SnowflakeScrapper) QuerySegments

func (e *SnowflakeScrapper) QuerySegments(ctx context.Context, sql string, args ...any) ([]*scrapper.SegmentRow, error)

func (*SnowflakeScrapper) QuerySqlDefinitions

func (e *SnowflakeScrapper) QuerySqlDefinitions(origCtx context.Context) ([]*scrapper.SqlDefinitionRow, error)

func (*SnowflakeScrapper) QueryTableMetrics

func (e *SnowflakeScrapper) QueryTableMetrics(origCtx context.Context, lastMetricsFetchTime time.Time) ([]*scrapper.TableMetricsRow, error)

func (*SnowflakeScrapper) QueryTables

func (e *SnowflakeScrapper) QueryTables(origCtx context.Context) ([]*scrapper.TableRow, error)

func (*SnowflakeScrapper) SqlDialect added in v0.1.8

func (e *SnowflakeScrapper) SqlDialect() sqldialect.Dialect

func (*SnowflakeScrapper) ValidateConfiguration

func (e *SnowflakeScrapper) ValidateConfiguration(ctx context.Context) ([]string, error)

type SnowflakeScrapperConf

type SnowflakeScrapperConf struct {
	dwhexecsnowflake.SnowflakeConf
	NoGetDll           bool
	AccountUsageDb     *string
	QueryLogsDatabases []string
}

func (*SnowflakeScrapperConf) UpperDatabasesLiteral

func (c *SnowflakeScrapperConf) UpperDatabasesLiteral() string

FIXME: I couldn't make it work with `foo IN (?)` binding, so I'm using this

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL