@lightdash/common 0.1390.1 → 0.1391.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -134,6 +134,7 @@
134
134
  "type": "boolean"
135
135
  },
136
136
  "round": {
137
+ "description": "Rounds the metric to the specified number of decimal places",
137
138
  "type": "number",
138
139
  "minimum": 0
139
140
  },
@@ -160,6 +161,30 @@
160
161
  "minLength": 1
161
162
  },
162
163
  "maxItems": 3
164
+ },
165
+ "default_time_dimension": {
166
+ "type": "object",
167
+ "description": "Specifies the default time dimension field and interval to use for time-based analysis on this metric. If specified, both field and interval are required. If there is already a default time dimension set in the model, this will override it.",
168
+ "properties": {
169
+ "field": {
170
+ "type": "string",
171
+ "description": "The name of the field to use as the default time dimension"
172
+ },
173
+ "interval": {
174
+ "type": "string",
175
+ "enum": [
176
+ "DAY",
177
+ "WEEK",
178
+ "MONTH",
179
+ "YEAR"
180
+ ],
181
+ "description": "The default time interval to use when analyzing this time dimension"
182
+ }
183
+ },
184
+ "required": [
185
+ "field",
186
+ "interval"
187
+ ]
163
188
  }
164
189
  },
165
190
  "required": ["type", "sql"]
@@ -303,6 +328,30 @@
303
328
  "minLength": 1
304
329
  },
305
330
  "maxItems": 3
331
+ },
332
+ "default_time_dimension": {
333
+ "type": "object",
334
+ "description": "Specifies the default time dimension field and interval to use for time-based analysis on this metric. If specified, both field and interval are required. If there is already a default time dimension set in the model, this will override it.",
335
+ "properties": {
336
+ "field": {
337
+ "type": "string",
338
+ "description": "The name of the field to use as the default time dimension"
339
+ },
340
+ "interval": {
341
+ "type": "string",
342
+ "enum": [
343
+ "DAY",
344
+ "WEEK",
345
+ "MONTH",
346
+ "YEAR"
347
+ ],
348
+ "description": "The default time interval to use when analyzing this time dimension"
349
+ }
350
+ },
351
+ "required": [
352
+ "field",
353
+ "interval"
354
+ ]
306
355
  }
307
356
  },
308
357
  "required": ["type"]
@@ -552,6 +601,27 @@
552
601
  "percent",
553
602
  "id"
554
603
  ]
604
+ },
605
+ "default_time_dimension": {
606
+ "type": "object",
607
+ "description": "Specifies the default time dimension field and interval to use for time-based analysis on this metric. If specified, both field and interval are required. If there is already a default time dimension set in the model, this will override it.",
608
+ "properties": {
609
+ "field": {
610
+ "type": "string",
611
+ "description": "The name of the field to use as the default time dimension"
612
+ },
613
+ "interval": {
614
+ "type": "string",
615
+ "enum": [
616
+ "DAY",
617
+ "WEEK",
618
+ "MONTH",
619
+ "YEAR"
620
+ ],
621
+ "description": "The default time interval to use when analyzing this time dimension"
622
+ }
623
+ },
624
+ "required": ["field", "interval"]
555
625
  }
556
626
  }
557
627
  }
@@ -2,7 +2,7 @@ import { DepGraph } from 'dependency-graph';
2
2
  import { type ColumnInfo, type CompiledModelNode, type ParsedMetric } from './dbtFromSchema';
3
3
  import { type CompactOrAlias, type DimensionType, type FieldUrl, type Format, type Metric, type MetricType, type Source } from './field';
4
4
  import { type OrderFieldsByStrategy } from './table';
5
- import { type TimeFrames } from './timeFrames';
5
+ import { type DefaultTimeDimension, type TimeFrames } from './timeFrames';
6
6
  export declare enum SupportedDbtAdapter {
7
7
  BIGQUERY = "bigquery",
8
8
  DATABRICKS = "databricks",
@@ -125,6 +125,7 @@ export type DbtColumnLightdashMetric = {
125
125
  [key: string]: any;
126
126
  }[];
127
127
  percentile?: number;
128
+ default_time_dimension?: DefaultTimeDimension;
128
129
  } & DbtLightdashFieldTags;
129
130
  export type DbtModelLightdashMetric = DbtColumnLightdashMetric & Required<Pick<DbtColumnLightdashMetric, 'sql'>>;
130
131
  export declare const normaliseModelDatabase: (model: DbtRawModelNode, targetWarehouse: SupportedDbtAdapter) => DbtModelNode;
package/dist/types/dbt.js CHANGED
@@ -165,6 +165,14 @@ const convertModelMetric = ({ modelName, name, metric, source, tableLabel, dimen
165
165
  : [metric.tags],
166
166
  }
167
167
  : {}),
168
+ ...(metric.default_time_dimension
169
+ ? {
170
+ defaultTimeDimension: {
171
+ field: metric.default_time_dimension.field,
172
+ interval: metric.default_time_dimension.interval,
173
+ },
174
+ }
175
+ : {}),
168
176
  };
169
177
  };
170
178
  exports.convertModelMetric = convertModelMetric;
@@ -185,6 +193,14 @@ const convertColumnMetric = ({ modelName, dimensionName, dimensionSql, name, met
185
193
  ? (0, item_1.getItemId)({ table: modelName, name: dimensionName })
186
194
  : undefined,
187
195
  requiredAttributes,
196
+ ...(metric.default_time_dimension
197
+ ? {
198
+ defaultTimeDimension: {
199
+ field: metric.default_time_dimension.field,
200
+ interval: metric.default_time_dimension.interval,
201
+ },
202
+ }
203
+ : {}),
188
204
  });
189
205
  exports.convertColumnMetric = convertColumnMetric;
190
206
  var DbtManifestVersion;
@@ -1,4 +1,4 @@
1
- import type { AdditionalMetric, currencies } from '..';
1
+ import type { AdditionalMetric, currencies, DefaultTimeDimension } from '..';
2
2
  import { type MetricFilterRule } from './filter';
3
3
  import { type TimeFrames } from './timeFrames';
4
4
  export declare enum Compact {
@@ -238,6 +238,7 @@ export interface Metric extends Field {
238
238
  formatOptions?: CustomFormat;
239
239
  dimensionReference?: string;
240
240
  requiredAttributes?: Record<string, string | string[]>;
241
+ defaultTimeDimension?: DefaultTimeDimension;
241
242
  }
242
243
  export declare const isFilterableDimension: (dimension: Dimension) => dimension is FilterableDimension;
243
244
  export type FilterableField = TableCalculation | Metric | FilterableDimension | CustomSqlDimension;
@@ -1,5 +1,5 @@
1
1
  import { type MetricFilterRule } from './filter';
2
- import type { TimeFrames } from './timeFrames';
2
+ import type { DefaultTimeDimension } from './timeFrames';
3
3
  export declare enum OrderFieldsByStrategy {
4
4
  LABEL = "LABEL",
5
5
  INDEX = "INDEX"
@@ -23,8 +23,5 @@ export type TableBase = {
23
23
  hidden?: boolean;
24
24
  requiredAttributes?: Record<string, string | string[]>;
25
25
  groupDetails?: Record<string, GroupType>;
26
- defaultTimeDimension?: {
27
- field: string;
28
- interval: TimeFrames;
29
- };
26
+ defaultTimeDimension?: DefaultTimeDimension;
30
27
  };
@@ -30,3 +30,7 @@ export declare enum DateGranularity {
30
30
  YEAR = "Year"
31
31
  }
32
32
  export declare const dateGranularityToTimeFrameMap: Record<DateGranularity, TimeFrames>;
33
+ export type DefaultTimeDimension = {
34
+ field: string;
35
+ interval: TimeFrames;
36
+ };
@@ -30,10 +30,7 @@ export declare const replaceDimensionInExplore: (explore: Explore, dimension: Co
30
30
  hidden?: boolean | undefined;
31
31
  requiredAttributes?: Record<string, string | string[]> | undefined;
32
32
  groupDetails?: Record<string, import("..").GroupType> | undefined;
33
- defaultTimeDimension?: {
34
- field: string;
35
- interval: import("..").TimeFrames;
36
- } | undefined;
33
+ defaultTimeDimension?: import("..").DefaultTimeDimension | undefined;
37
34
  metrics: Record<string, import("../types/field").CompiledMetric>;
38
35
  lineageGraph: import("..").LineageGraph;
39
36
  source?: import("../types/field").Source | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lightdash/common",
3
- "version": "0.1390.1",
3
+ "version": "0.1391.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [