Semantic Model configuration
Download JSON Schema
Example
apiVersion: leapview.dev/v1
kind: SemanticModel
metadata:
id: semantic-model:finance
name: finance
displayName: CFO Finance Model
description: Governed CFO fact constellation with conformed finance dimensions and decision-ready metrics.
spec:
datasets:
financial_performance:
model: financial_performance
defaultTimeDimension: finance_date
pnl_statement:
model: pnl_statement
defaultTimeDimension: finance_date
variance_drivers:
model: variance_drivers
defaultTimeDimension: finance_date
cash_forecast:
model: cash_forecast
defaultTimeDimension: week_start
finance_dates:
model: finance_dates
finance_segments:
model: finance_segments
finance_countries:
model: finance_countries
finance_products:
model: finance_products
finance_discount_bands:
model: finance_discount_bands
pnl_lines:
model: pnl_lines
variance_driver_dimension:
model: variance_driver_dimension
cash_weeks:
model: cash_weeks
cash_scenarios:
model: cash_scenarios
relationships:
financial_performance_date:
from: {dataset: financial_performance, entity: finance_date}
to: {dataset: finance_dates, entity: finance_date}
pnl_statement_date:
from: {dataset: pnl_statement, entity: finance_date}
to: {dataset: finance_dates, entity: finance_date}
variance_drivers_date:
from: {dataset: variance_drivers, entity: finance_date}
to: {dataset: finance_dates, entity: finance_date}
financial_performance_segment:
from: {dataset: financial_performance, entity: segment}
to: {dataset: finance_segments, entity: segment}
pnl_statement_segment:
from: {dataset: pnl_statement, entity: segment}
to: {dataset: finance_segments, entity: segment}
variance_drivers_segment:
from: {dataset: variance_drivers, entity: segment}
to: {dataset: finance_segments, entity: segment}
financial_performance_country:
from: {dataset: financial_performance, entity: country}
to: {dataset: finance_countries, entity: country}
pnl_statement_country:
from: {dataset: pnl_statement, entity: country}
to: {dataset: finance_countries, entity: country}
variance_drivers_country:
from: {dataset: variance_drivers, entity: country}
to: {dataset: finance_countries, entity: country}
financial_performance_product:
from: {dataset: financial_performance, entity: product}
to: {dataset: finance_products, entity: product}
pnl_statement_product:
from: {dataset: pnl_statement, entity: product}
to: {dataset: finance_products, entity: product}
variance_drivers_product:
from: {dataset: variance_drivers, entity: product}
to: {dataset: finance_products, entity: product}
financial_performance_discount_band:
from: {dataset: financial_performance, entity: discount_band}
to: {dataset: finance_discount_bands, entity: discount_band}
pnl_statement_line:
from: {dataset: pnl_statement, entity: pnl_line}
to: {dataset: pnl_lines, entity: pnl_line}
variance_drivers_driver:
from: {dataset: variance_drivers, entity: variance_driver}
to: {dataset: variance_driver_dimension, entity: variance_driver}
cash_forecast_week:
from: {dataset: cash_forecast, entity: cash_week}
to: {dataset: cash_weeks, entity: cash_week}
cash_forecast_scenario:
from: {dataset: cash_forecast, entity: cash_scenario}
to: {dataset: cash_scenarios, entity: cash_scenario}
dimensions:
finance_date:
datatype: Date
bindings:
financial_performance: {field: finance_dates.finance_date, path: [financial_performance_date]}
pnl_statement: {field: finance_dates.finance_date, path: [pnl_statement_date]}
variance_drivers: {field: finance_dates.finance_date, path: [variance_drivers_date]}
time:
nativeGrain: day
grains: [day, week, month, quarter, year]
calendar: iso8601
finance_month:
datatype: String
bindings:
financial_performance: {field: finance_dates.finance_month, path: [financial_performance_date]}
pnl_statement: {field: finance_dates.finance_month, path: [pnl_statement_date]}
variance_drivers: {field: finance_dates.finance_month, path: [variance_drivers_date]}
segment:
datatype: String
bindings:
financial_performance: {field: finance_segments.segment, path: [financial_performance_segment]}
pnl_statement: {field: finance_segments.segment, path: [pnl_statement_segment]}
variance_drivers: {field: finance_segments.segment, path: [variance_drivers_segment]}
country:
datatype: String
bindings:
financial_performance: {field: finance_countries.country, path: [financial_performance_country]}
pnl_statement: {field: finance_countries.country, path: [pnl_statement_country]}
variance_drivers: {field: finance_countries.country, path: [variance_drivers_country]}
product:
datatype: String
bindings:
financial_performance: {field: finance_products.product, path: [financial_performance_product]}
pnl_statement: {field: finance_products.product, path: [pnl_statement_product]}
variance_drivers: {field: finance_products.product, path: [variance_drivers_product]}
discount_band:
datatype: String
bindings:
financial_performance: {field: finance_discount_bands.discount_band, path: [financial_performance_discount_band]}
scorecard_group:
datatype: String
bindings:
financial_performance: {field: financial_performance.scorecard_group}
record_id:
datatype: String
bindings:
financial_performance: {field: financial_performance.record_id}
pnl_line:
datatype: String
bindings:
pnl_statement: {field: pnl_lines.pnl_line, path: [pnl_statement_line]}
pnl_group:
datatype: String
bindings:
pnl_statement: {field: pnl_statement.pnl_group}
line_order:
label: Line
datatype: Integer
bindings:
pnl_statement: {field: pnl_lines.line_order, path: [pnl_statement_line]}
variance_driver:
datatype: String
bindings:
variance_drivers: {field: variance_driver_dimension.driver, path: [variance_drivers_driver]}
driver_order:
datatype: Integer
bindings:
variance_drivers: {field: variance_driver_dimension.driver_order, path: [variance_drivers_driver]}
week_start:
datatype: Date
bindings:
cash_forecast: {field: cash_weeks.week_start, path: [cash_forecast_week]}
time:
nativeGrain: day
grains: [day, week, month]
calendar: iso8601
week_label:
label: Week
datatype: String
bindings:
cash_forecast: {field: cash_weeks.week_label, path: [cash_forecast_week]}
scenario:
datatype: String
bindings:
cash_forecast: {field: cash_scenarios.scenario, path: [cash_forecast_scenario]}
scenario_group:
datatype: String
bindings:
cash_forecast: {field: cash_scenarios.scenario_group, path: [cash_forecast_scenario]}
metrics:
units_sold:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.units_sold}
empty: zero
label: Units sold
format: decimal
gross_sales:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.gross_sales}
empty: zero
label: Gross sales
unit: USD
format: currency
discounts:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.discounts}
empty: zero
label: Discounts
unit: USD
format: currency
net_sales:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.net_sales}
empty: zero
label: Net revenue
unit: USD
format: currency
cogs:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.cogs}
empty: zero
label: Cost of goods sold
unit: USD
format: currency
gross_profit:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.gross_profit}
empty: zero
label: Gross profit
unit: USD
format: currency
budget_sales:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.budget_sales}
empty: zero
label: Budget revenue
unit: USD
format: currency
budget_gross_profit:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.budget_gross_profit}
empty: zero
label: Budget gross profit
unit: USD
format: currency
forecast_sales:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.forecast_sales}
empty: zero
label: Forecast revenue
unit: USD
format: currency
forecast_gross_profit:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.forecast_gross_profit}
empty: zero
label: Forecast gross profit
unit: USD
format: currency
ebitda:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.ebitda}
empty: zero
label: EBITDA
unit: USD
format: currency
budget_ebitda:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.budget_ebitda}
empty: zero
label: Budget EBITDA
unit: USD
format: currency
forecast_ebitda:
type: aggregate
dataset: financial_performance
aggregation: sum
input: {field: financial_performance.forecast_ebitda}
empty: zero
label: Forecast EBITDA
unit: USD
format: currency
gross_margin:
type: ratio
numerator: gross_profit
denominator: net_sales
label: Gross margin
format: percent
budget_gross_margin:
type: ratio
numerator: budget_gross_profit
denominator: budget_sales
label: Budget gross margin
format: percent
ebitda_margin:
type: ratio
numerator: ebitda
denominator: net_sales
label: EBITDA margin
format: percent
discount_rate:
type: ratio
numerator: discounts
denominator: gross_sales
label: Discount rate
format: percent
revenue_variance:
type: derived
expression: ${net_sales} - ${budget_sales}
label: Revenue variance
unit: USD
format: currency
revenue_variance_percent:
type: ratio
numerator: revenue_variance
denominator: budget_sales
label: Revenue variance %
format: percent
gross_profit_variance:
type: derived
expression: ${gross_profit} - ${budget_gross_profit}
label: Gross profit variance
unit: USD
format: currency
ebitda_variance:
type: derived
expression: ${ebitda} - ${budget_ebitda}
label: EBITDA variance
unit: USD
format: currency
pnl_actual:
type: aggregate
dataset: pnl_statement
aggregation: sum
input: {field: pnl_statement.actual_amount}
empty: zero
label: Actual
unit: USD
format: currency
pnl_budget:
type: aggregate
dataset: pnl_statement
aggregation: sum
input: {field: pnl_statement.budget_amount}
empty: zero
label: Budget
unit: USD
format: currency
pnl_forecast:
type: aggregate
dataset: pnl_statement
aggregation: sum
input: {field: pnl_statement.forecast_amount}
empty: zero
label: Forecast
unit: USD
format: currency
pnl_variance:
type: aggregate
dataset: pnl_statement
aggregation: sum
input: {field: pnl_statement.variance_amount}
empty: zero
label: F/(U)
unit: USD
format: currency
variance_impact:
type: aggregate
dataset: variance_drivers
aggregation: sum
input: {field: variance_drivers.impact}
empty: zero
label: EBITDA variance impact
unit: USD
format: currency
collections:
type: aggregate
dataset: cash_forecast
aggregation: sum
input: {field: cash_forecast.collections}
empty: zero
label: Collections
unit: USD
format: currency
supplier_payments:
type: aggregate
dataset: cash_forecast
aggregation: sum
input: {field: cash_forecast.supplier_payments}
empty: zero
label: Supplier payments
unit: USD
format: currency
net_cash_flow:
type: aggregate
dataset: cash_forecast
aggregation: sum
input: {field: cash_forecast.net_cash_flow}
empty: zero
label: Net cash flow
unit: USD
format: currency
base_collections:
type: aggregate
dataset: cash_forecast
aggregation: sum
input: {field: cash_forecast.base_collections}
empty: zero
label: Base collections
unit: USD
format: currency
base_supplier_payments:
type: aggregate
dataset: cash_forecast
aggregation: sum
input: {field: cash_forecast.base_supplier_payments}
empty: zero
label: Base supplier payments
unit: USD
format: currency
base_net_cash_flow:
type: aggregate
dataset: cash_forecast
aggregation: sum
input: {field: cash_forecast.base_net_cash_flow}
empty: zero
label: Base net cash flow
unit: USD
format: currency
closing_cash:
type: aggregate
dataset: cash_forecast
aggregation: sum
input: {field: cash_forecast.closing_cash}
empty: zero
label: Closing cash
unit: USD
format: currency
scenario_ending_cash:
type: aggregate
dataset: cash_forecast
aggregation: max
input: {field: cash_forecast.scenario_ending_cash}
empty: 'null'
label: Ending cash
unit: USD
format: currency
scenario_headroom:
type: aggregate
dataset: cash_forecast
aggregation: max
input: {field: cash_forecast.scenario_headroom}
empty: 'null'
label: Headroom
unit: USD
format: currency
scenario_cumulative_net_cash_flow:
type: aggregate
dataset: cash_forecast
aggregation: sum
input: {field: cash_forecast.net_cash_flow}
empty: zero
label: Net cash flow
unit: USD
format: currency
current_cash:
type: aggregate
dataset: cash_forecast
aggregation: max
input: {field: cash_forecast.current_cash}
empty: 'null'
label: Current cash
unit: USD
format: currency
base_ending_cash:
type: aggregate
dataset: cash_forecast
aggregation: max
input: {field: cash_forecast.base_ending_cash}
empty: 'null'
label: Base ending cash
unit: USD
format: currency
base_headroom:
type: aggregate
dataset: cash_forecast
aggregation: max
input: {field: cash_forecast.base_headroom}
empty: 'null'
label: Base cash headroom
unit: USD
format: currency
overdue_receivables:
type: aggregate
dataset: cash_forecast
aggregation: max
input: {field: cash_forecast.overdue_receivables}
empty: 'null'
label: Overdue receivables
unit: USD
format: currency
dso_days:
type: aggregate
dataset: cash_forecast
aggregation: max
input: {field: cash_forecast.dso_days}
empty: 'null'
label: Days sales outstanding
format: decimal
Fields
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
apiVersion |
string |
Yes |
one of leapview.dev/v1 |
kind |
SemanticModel |
Yes |
|
metadata |
SemanticModelMetadata |
Yes |
|
spec |
SemanticModelSpec |
Yes |
|
Nested definitions
AIContext
| Field |
Type |
Required |
Rules |
examples |
array of string |
No |
|
instructions |
string |
No |
|
synonyms |
array of string |
No |
|
AggregateSemanticMetric
| Field |
Type |
Required |
Rules |
aggregation |
string |
Yes |
one of sum, count, count_distinct, avg, min, max |
aiContext |
AIContext |
No |
|
dataset |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*$ |
description |
string |
No |
|
empty |
string |
No |
one of zero, null |
format |
string |
No |
|
hidden |
boolean |
No |
|
input |
SemanticMetricInput |
Yes |
|
label |
string |
No |
|
requiredAccessGrants |
array of string |
No |
|
timeDimension |
string |
No |
pattern ^[A-Za-z_][A-Za-z0-9_]*$ |
type |
string |
Yes |
one of aggregate |
unit |
string |
No |
|
where |
array of string |
No |
|
AllSemanticFilter
| Field |
Type |
Required |
Rules |
all |
array of SemanticFilter |
Yes |
|
AnySemanticFilter
| Field |
Type |
Required |
Rules |
any |
array of SemanticFilter |
Yes |
|
DerivedSemanticMetric
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
description |
string |
No |
|
expression |
string |
Yes |
|
format |
string |
No |
|
hidden |
boolean |
No |
|
label |
string |
No |
|
requiredAccessGrants |
array of string |
No |
|
type |
string |
Yes |
one of derived |
unit |
string |
No |
|
EqualsSemanticFilter
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*$ |
operator |
string |
Yes |
one of equals |
path |
array of string |
No |
|
value |
SemanticLiteral |
Yes |
|
FieldsSemanticRelationshipEndpoint
| Field |
Type |
Required |
Rules |
dataset |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*$ |
fields |
array of string |
Yes |
|
GreaterThanOrEqualSemanticFilter
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*$ |
operator |
string |
Yes |
one of greater_than_or_equal |
path |
array of string |
No |
|
value |
SemanticLiteral |
Yes |
|
GreaterThanSemanticFilter
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*$ |
operator |
string |
Yes |
one of greater_than |
path |
array of string |
No |
|
value |
SemanticLiteral |
Yes |
|
InSemanticFilter
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*$ |
operator |
string |
Yes |
one of in |
path |
array of string |
No |
|
value |
array of SemanticLiteral |
Yes |
|
IsNotNullSemanticFilter
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*$ |
operator |
string |
Yes |
one of is_not_null |
path |
array of string |
No |
|
IsNullSemanticFilter
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*$ |
operator |
string |
Yes |
one of is_null |
path |
array of string |
No |
|
LessThanOrEqualSemanticFilter
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*$ |
operator |
string |
Yes |
one of less_than_or_equal |
path |
array of string |
No |
|
value |
SemanticLiteral |
Yes |
|
LessThanSemanticFilter
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*$ |
operator |
string |
Yes |
one of less_than |
path |
array of string |
No |
|
value |
SemanticLiteral |
Yes |
|
NamedSemanticRelationshipEndpoint
| Field |
Type |
Required |
Rules |
dataset |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*$ |
entity |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*$ |
NotEqualsSemanticFilter
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*$ |
operator |
string |
Yes |
one of not_equals |
path |
array of string |
No |
|
value |
SemanticLiteral |
Yes |
|
NotInSemanticFilter
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*$ |
operator |
string |
Yes |
one of not_in |
path |
array of string |
No |
|
value |
array of SemanticLiteral |
Yes |
|
NotSemanticFilter
| Field |
Type |
Required |
Rules |
not |
SemanticFilter |
Yes |
|
RatioSemanticMetric
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
denominator |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*$ |
description |
string |
No |
|
format |
string |
No |
|
hidden |
boolean |
No |
|
label |
string |
No |
|
numerator |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*$ |
requiredAccessGrants |
array of string |
No |
|
type |
string |
Yes |
one of ratio |
unit |
string |
No |
|
ResourceProvenance
| Field |
Type |
Required |
Rules |
origin |
string |
No |
|
path |
string |
No |
|
source |
string |
No |
|
SemanticAccessFilter
| Field |
Type |
Required |
Rules |
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*$ |
userAttribute |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*$ |
SemanticAccessGrant
| Field |
Type |
Required |
Rules |
allowedValues |
SemanticAllowedValues |
Yes |
|
userAttribute |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*$ |
SemanticAllowedValues
| Field |
Type |
Required |
Rules |
SemanticDataset
| Field |
Type |
Required |
Rules |
accessFilters |
array of SemanticAccessFilter |
No |
|
aiContext |
AIContext |
No |
|
defaultTimeDimension |
string |
No |
pattern ^[A-Za-z_][A-Za-z0-9_]*$ |
description |
string |
No |
|
displayName |
string |
No |
|
model |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_.-]*$ |
requiredAccessGrants |
array of string |
No |
|
SemanticDimension
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
bindings |
object |
Yes |
|
datatype |
string |
Yes |
one of String, Integer, Decimal, Float, Boolean, Date, Time, DateTime, DateTimeTz, Opaque |
description |
string |
No |
|
label |
string |
No |
|
requiredAccessGrants |
array of string |
No |
|
time |
SemanticTimeSemantics |
No |
|
SemanticDimensionBinding
| Field |
Type |
Required |
Rules |
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*$ |
path |
array of string |
No |
|
SemanticFilter
| Field |
Type |
Required |
Rules |
SemanticLiteral
| Field |
Type |
Required |
Rules |
SemanticMetric
| Field |
Type |
Required |
Rules |
SemanticMetricAggregateVariant
| Field |
Type |
Required |
Rules |
type |
string |
Yes |
one of aggregate |
SemanticMetricDerivedVariant
| Field |
Type |
Required |
Rules |
type |
string |
Yes |
one of derived |
| Field |
Type |
Required |
Rules |
field |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*$ |
SemanticMetricRatioVariant
| Field |
Type |
Required |
Rules |
type |
string |
Yes |
one of ratio |
SemanticModel
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
apiVersion |
string |
Yes |
one of leapview.dev/v1 |
kind |
SemanticModel |
Yes |
|
metadata |
SemanticModelMetadata |
Yes |
|
spec |
SemanticModelSpec |
Yes |
|
| Field |
Type |
Required |
Rules |
description |
string |
No |
|
displayName |
string |
No |
|
documentation |
string |
No |
|
domain |
string |
No |
|
id |
string |
Yes |
pattern ^[A-Za-z0-9][A-Za-z0-9_.:-]*$ |
name |
string |
Yes |
pattern ^[A-Za-z_][A-Za-z0-9_.-]*$ |
owner |
string |
No |
|
provenance |
ResourceProvenance |
No |
|
tags |
array of string |
No |
|
SemanticModelSpec
| Field |
Type |
Required |
Rules |
accessGrants |
object |
No |
|
datasets |
object |
Yes |
|
dimensions |
object |
No |
|
filters |
object |
No |
|
metrics |
object |
Yes |
|
relationships |
object |
No |
|
SemanticRelationship
| Field |
Type |
Required |
Rules |
aiContext |
AIContext |
No |
|
description |
string |
No |
|
from |
SemanticRelationshipEndpoint |
Yes |
|
to |
SemanticRelationshipEndpoint |
Yes |
|
SemanticRelationshipEndpoint
| Field |
Type |
Required |
Rules |
SemanticTimeSemantics
| Field |
Type |
Required |
Rules |
calendar |
string |
No |
|
grains |
array of string |
Yes |
|
nativeGrain |
string |
Yes |
one of second, minute, hour, day, week, month, quarter, year |
timezone |
string |
No |
|