Documentation ¶
Index ¶
- Constants
- Variables
- func EvaluateBoolExpression(expr string) (bool, error)
- func InitEmpty(ctx context.Context, repo drivers.RepoStore, instanceID, title string) error
- func IsInit(ctx context.Context, repo drivers.RepoStore, instanceID string) bool
- func ParseDotEnv(ctx context.Context, repo drivers.RepoStore, instanceID string) (map[string]string, error)
- func ResolveTemplate(tmpl string, data TemplateData) (string, error)
- type APIYAML
- type AlertYAML
- type AvailableComparisonOffset
- type AvailableTimeRange
- type ComponentYAML
- type Connector
- type ConnectorDef
- type DashboardYAML
- type DataYAML
- type Diff
- type MetricsViewYAML
- type MigrationYAML
- type ModelYAML
- type Node
- type Parser
- type ReportYAML
- type Resource
- type ResourceKind
- type ResourceName
- type RillYAML
- type ScheduleYAML
- type SourceYAML
- type TemplateData
- type TemplateMetadata
- type TemplateResource
- type ThemeYAML
- type VariableDef
Constants ¶
const Version = "rillv1"
Version identifier for this compiler
Variables ¶
var ErrRillYAMLNotFound = errors.New("rill.yaml not found")
Functions ¶
func EvaluateBoolExpression ¶ added in v0.33.0
func ParseDotEnv ¶ added in v0.45.0
func ParseDotEnv(ctx context.Context, repo drivers.RepoStore, instanceID string) (map[string]string, error)
ParseDotEnv parses only the .env file present in project's root.
func ResolveTemplate ¶
func ResolveTemplate(tmpl string, data TemplateData) (string, error)
ResolveTemplate resolves a template to a string using the given data.
Types ¶
type APIYAML ¶ added in v0.42.0
type APIYAML struct {
DataYAML `yaml:",inline" mapstructure:",squash"`
}
APIYAML is the raw structure of a API resource defined in YAML (does not include common fields)
type AlertYAML ¶ added in v0.41.0
type AlertYAML struct { Title string `yaml:"title"` Refresh *ScheduleYAML `yaml:"refresh"` Watermark string `yaml:"watermark"` // options: "trigger_time", "inherit" Intervals struct { Duration string `yaml:"duration"` Limit uint `yaml:"limit"` CheckUnclosed bool `yaml:"check_unclosed"` } `yaml:"intervals"` Timeout string `yaml:"timeout"` Query struct { Name string `yaml:"name"` Args map[string]any `yaml:"args"` ArgsJSON string `yaml:"args_json"` For struct { UserID string `yaml:"user_id"` UserEmail string `yaml:"user_email"` Attributes map[string]any `yaml:"attributes"` } `yaml:"for"` } `yaml:"query"` OnRecover *bool `yaml:"on_recover"` OnFail *bool `yaml:"on_fail"` OnError *bool `yaml:"on_error"` Renotify *bool `yaml:"renotify"` RenotifyAfter string `yaml:"renotify_after"` Notify struct { Email struct { Recipients []string `yaml:"recipients"` } `yaml:"email"` Slack struct { Users []string `yaml:"users"` Channels []string `yaml:"channels"` Webhooks []string `yaml:"webhooks"` } `yaml:"slack"` } `yaml:"notify"` Annotations map[string]string `yaml:"annotations"` // Backwards compatibility Email struct { Recipients []string `yaml:"recipients"` OnRecover *bool `yaml:"on_recover"` OnFail *bool `yaml:"on_fail"` OnError *bool `yaml:"on_error"` Renotify *bool `yaml:"renotify"` RenotifyAfter string `yaml:"renotify_after"` } `yaml:"email"` // contains filtered or unexported fields }
AlertYAML is the raw structure of an Alert resource defined in YAML (does not include common fields)
type AvailableComparisonOffset ¶ added in v0.38.0
func (*AvailableComparisonOffset) UnmarshalYAML ¶ added in v0.38.0
func (o *AvailableComparisonOffset) UnmarshalYAML(v *yaml.Node) error
type AvailableTimeRange ¶ added in v0.38.0
type AvailableTimeRange struct { Range string ComparisonOffsets []AvailableComparisonOffset }
func (*AvailableTimeRange) UnmarshalYAML ¶ added in v0.38.0
func (t *AvailableTimeRange) UnmarshalYAML(v *yaml.Node) error
type ComponentYAML ¶ added in v0.44.0
type Connector ¶
type Connector struct { Name string Driver string Spec drivers.Spec DefaultConfig map[string]string Resources []*Resource AnonymousAccess bool }
Connector contains metadata about a connector used in a Rill project
type ConnectorDef ¶
ConnectorDef is a subtype of RillYAML, defining connectors required by the project
type DashboardYAML ¶ added in v0.42.0
type DashboardYAML struct { Title string `yaml:"title"` Columns uint32 `yaml:"columns"` Gap uint32 `yaml:"gap"` Items []*struct { Component yaml.Node `yaml:"component"` // Can be a name (string) or inline component definition (map) X *uint32 `yaml:"x"` Y *uint32 `yaml:"y"` Width *uint32 `yaml:"width"` Height *uint32 `yaml:"height"` FontSize uint32 `yaml:"font_size"` } `yaml:"items"` // contains filtered or unexported fields }
type DataYAML ¶ added in v0.42.0
type DataYAML struct { Connector string `yaml:"connector"` SQL string `yaml:"sql"` MetricsSQL string `yaml:"metrics_sql"` API string `yaml:"api"` Args map[string]any `yaml:"args"` }
DataYAML is the raw YAML structure of a sub-property for defining a data resolver and properties. It is used across multiple resources, usually under "data:", but inlined for APIs.
type Diff ¶
type Diff struct { Reloaded bool Skipped bool Added []ResourceName Modified []ResourceName ModifiedDotEnv bool Deleted []ResourceName }
Diff shows changes to Parser.Resources following an incremental reparse.
type MetricsViewYAML ¶ added in v0.37.0
type MetricsViewYAML struct { Title string `yaml:"title"` DisplayName string `yaml:"display_name"` // Backwards compatibility Description string `yaml:"description"` Model string `yaml:"model"` Database string `yaml:"database"` DatabaseSchema string `yaml:"database_schema"` Table string `yaml:"table"` TimeDimension string `yaml:"timeseries"` Watermark string `yaml:"watermark"` SmallestTimeGrain string `yaml:"smallest_time_grain"` DefaultTimeRange string `yaml:"default_time_range"` AvailableTimeZones []string `yaml:"available_time_zones"` FirstDayOfWeek uint32 `yaml:"first_day_of_week"` FirstMonthOfYear uint32 `yaml:"first_month_of_year"` DefaultTheme string `yaml:"default_theme"` Dimensions []*struct { Name string Label string Column string Expression string Property string // For backwards compatibility Description string Ignore bool `yaml:"ignore"` Unnest bool } DefaultDimensions []string `yaml:"default_dimensions"` Measures []*struct { Name string Label string Expression string Description string FormatPreset string `yaml:"format_preset"` FormatD3 string `yaml:"format_d3"` Ignore bool `yaml:"ignore"` ValidPercentOfTotal bool `yaml:"valid_percent_of_total"` } DefaultMeasures []string `yaml:"default_measures"` Security *struct { Access string `yaml:"access"` RowFilter string `yaml:"row_filter"` Include []*struct { Names []string Condition string `yaml:"if"` } Exclude []*struct { Names []string Condition string `yaml:"if"` } } DefaultComparison struct { Mode string `yaml:"mode"` Dimension string `yaml:"dimension"` } `yaml:"default_comparison"` AvailableTimeRanges []AvailableTimeRange `yaml:"available_time_ranges"` // contains filtered or unexported fields }
MetricsViewYAML is the raw structure of a MetricsView resource defined in YAML
type MigrationYAML ¶ added in v0.37.0
type MigrationYAML struct {
Version uint `yaml:"version" mapstructure:"version"`
}
MigrationYAML is the raw structure of a Migration resource defined in YAML (does not include common fields)
type ModelYAML ¶ added in v0.37.0
type ModelYAML struct { Refresh *ScheduleYAML `yaml:"refresh"` Timeout string `yaml:"timeout"` Incremental bool `yaml:"incremental"` State *DataYAML `yaml:"state"` InputProperties map[string]any `yaml:",inline" mapstructure:",remain"` Output struct { Connector string `yaml:"connector"` Properties map[string]any `yaml:",inline" mapstructure:",remain"` } `yaml:"output"` Materialize *bool `yaml:"materialize"` // contains filtered or unexported fields }
ModelYAML is the raw structure of a Model resource defined in YAML (does not include common fields)
type Node ¶
type Node struct { Kind ResourceKind Name string Refs []ResourceName Paths []string YAML *yaml.Node YAMLOverride *yaml.Node YAMLRaw string YAMLPath string Connector string ConnectorInferred bool SQL string SQLPath string SQLAnnotations map[string]any SQLUsesTemplating bool }
Node represents one path stem in the project. It contains data derived from a YAML and/or SQL file (e.g. "/path/to/file.yaml" for "/path/to/file.sql").
type Parser ¶
type Parser struct { // Options Repo drivers.RepoStore InstanceID string Environment string DefaultOLAPConnector string // Output RillYAML *RillYAML DotEnv map[string]string Resources map[ResourceName]*Resource Errors []*runtimev1.ParseError // contains filtered or unexported fields }
Parser parses a Rill project directory into a set of resources. After the initial parse, the parser can be used to incrementally reparse a subset of files. Parser is not concurrency safe.
func Parse ¶
func Parse(ctx context.Context, repo drivers.RepoStore, instanceID, environment, defaultOLAPConnector string) (*Parser, error)
Parse creates a new parser and parses the entire project.
func (*Parser) AnalyzeConnectors ¶
AnalyzeConnectors extracts connector metadata from a Rill project
func (*Parser) IsSkippable ¶ added in v0.44.0
IsSkippable returns true if the path will be skipped by Reparse. It's useful for callers to avoid triggering a reparse when they know the path is not relevant.
func (*Parser) Reparse ¶
Reparse re-parses the indicated file paths, updating the Parser's state. If rill.yaml has previously errored, or if rill.yaml is included in paths, it will reload the entire project. If a previous call to Reparse has returned an error, the Parser may not be accessed or called again.
func (*Parser) TrackedPathsInDir ¶ added in v0.44.0
TrackedPathsInDir returns the paths under the given directory that the parser currently has cached results for.
type ReportYAML ¶ added in v0.37.0
type ReportYAML struct { Title string `yaml:"title"` Refresh *ScheduleYAML `yaml:"refresh"` Watermark string `yaml:"watermark"` // options: "trigger_time", "inherit" Intervals struct { Duration string `yaml:"duration"` Limit uint `yaml:"limit"` CheckUnclosed bool `yaml:"check_unclosed"` } `yaml:"intervals"` Timeout string `yaml:"timeout"` Query struct { Name string `yaml:"name"` Args map[string]any `yaml:"args"` ArgsJSON string `yaml:"args_json"` } `yaml:"query"` Export struct { Format string `yaml:"format"` Limit uint `yaml:"limit"` } `yaml:"export"` Email struct { Recipients []string `yaml:"recipients"` } `yaml:"email"` Notify struct { Email struct { Recipients []string `yaml:"recipients"` } `yaml:"email"` Slack struct { Users []string `yaml:"users"` Channels []string `yaml:"channels"` Webhooks []string `yaml:"webhooks"` } `yaml:"slack"` } `yaml:"notify"` Annotations map[string]string `yaml:"annotations"` // contains filtered or unexported fields }
ReportYAML is the raw structure of a Report resource defined in YAML (does not include common fields)
type Resource ¶
type Resource struct { // Metadata Name ResourceName Paths []string Refs []ResourceName // Derived from rawRefs after parsing (can't contain ResourceKindUnspecified). Always sorted. // Only one of these will be non-nil SourceSpec *runtimev1.SourceSpec ModelSpec *runtimev1.ModelSpec MetricsViewSpec *runtimev1.MetricsViewSpec MigrationSpec *runtimev1.MigrationSpec ReportSpec *runtimev1.ReportSpec AlertSpec *runtimev1.AlertSpec ThemeSpec *runtimev1.ThemeSpec ComponentSpec *runtimev1.ComponentSpec DashboardSpec *runtimev1.DashboardSpec APISpec *runtimev1.APISpec // contains filtered or unexported fields }
Resource parsed from code files. One file may output multiple resources and multiple files may contribute config to one resource.
type ResourceKind ¶
type ResourceKind int
ResourceKind identifies a resource type supported by the parser
const ( ResourceKindUnspecified ResourceKind = iota ResourceKindSource ResourceKindModel ResourceKindMetricsView ResourceKindMigration ResourceKindReport ResourceKindAlert ResourceKindTheme ResourceKindComponent ResourceKindDashboard ResourceKindAPI )
func ParseResourceKind ¶
func ParseResourceKind(kind string) (ResourceKind, error)
ParseResourceKind maps a string to a ResourceKind. Note: The empty string is considered a valid kind (unspecified).
func (ResourceKind) String ¶
func (k ResourceKind) String() string
type ResourceName ¶
type ResourceName struct { Kind ResourceKind Name string }
ResourceName is a unique identifier for a resource
func (ResourceName) Normalized ¶
func (n ResourceName) Normalized() ResourceName
func (ResourceName) String ¶
func (n ResourceName) String() string
type RillYAML ¶
type RillYAML struct { Title string Description string OLAPConnector string Connectors []*ConnectorDef Variables []*VariableDef Defaults map[ResourceKind]yaml.Node FeatureFlags map[string]bool }
RillYAML is the parsed contents of rill.yaml
type ScheduleYAML ¶ added in v0.37.0
type ScheduleYAML struct { RefUpdate *bool `yaml:"ref_update" mapstructure:"ref_update"` Cron string `yaml:"cron" mapstructure:"cron"` Every string `yaml:"every" mapstructure:"every"` TimeZone string `yaml:"time_zone" mapstructure:"time_zone"` Disable bool `yaml:"disable" mapstructure:"disable"` }
ScheduleYAML is the raw structure of a refresh schedule clause defined in YAML. This does not represent a stand-alone YAML file, just a partial used in other structs.
type SourceYAML ¶ added in v0.37.0
type SourceYAML struct { Timeout string `yaml:"timeout"` Refresh *ScheduleYAML `yaml:"refresh"` Properties map[string]any `yaml:",inline" mapstructure:",remain"` // contains filtered or unexported fields }
SourceYAML is the raw structure of a Source resource defined in YAML (does not include common fields)
type TemplateData ¶
type TemplateData struct { Environment string User map[string]any Variables map[string]string State map[string]any ExtraProps map[string]any Self TemplateResource Resolve func(ref ResourceName) (string, error) Lookup func(name ResourceName) (TemplateResource, error) }
TemplateData contains data for resolving a template.
type TemplateMetadata ¶
type TemplateMetadata struct { Refs []ResourceName Config map[string]any Variables []string UsesTemplating bool ResolvedWithPlaceholders string }
TemplateMetadata contains metadata extracted from a template.
func AnalyzeTemplate ¶
func AnalyzeTemplate(tmpl string) (*TemplateMetadata, error)
AnalyzeTemplate parses a template and extracts metadata.
type TemplateResource ¶
type TemplateResource struct { Meta *runtimev1.ResourceMeta Spec any State any }
TemplateResource contains data for a resource for injection into a template.
type ThemeYAML ¶ added in v0.38.0
type ThemeYAML struct { Colors struct { Primary string `yaml:"primary"` Secondary string `yaml:"secondary"` } `yaml:"colors"` // contains filtered or unexported fields }
ThemeYAML is the raw structure of a Theme for the UI in YAML (does not include common fields)
type VariableDef ¶
VariableDef is a subtype of RillYAML, defining defaults for project variables