df-script 1.4.0 → 1.5.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.
- package/README.md +83 -34
- package/dist/api.d.ts +16 -8
- package/dist/api.js +11 -3
- package/dist/columnExpressions/ColumnExpr.d.ts +26 -364
- package/dist/columnExpressions/ColumnExpr.js +199 -3
- package/dist/columnExpressions/ExprBase.d.ts +8 -11
- package/dist/columnExpressions/ExprBase.js +20 -61
- package/dist/columnExpressions/constants.d.ts +2 -0
- package/dist/columnExpressions/constants.js +3 -1
- package/dist/columnExpressions/functions/coalesce.js +8 -4
- package/dist/columnExpressions/functions/element.d.ts +5 -0
- package/dist/columnExpressions/functions/element.js +11 -0
- package/dist/columnExpressions/functions/implode.d.ts +3 -0
- package/dist/columnExpressions/functions/implode.js +7 -0
- package/dist/columnExpressions/functions/lit.d.ts +3 -1
- package/dist/columnExpressions/functions/lit.js +8 -13
- package/dist/columnExpressions/functions/repeat.d.ts +47 -0
- package/dist/columnExpressions/functions/repeat.js +131 -0
- package/dist/columnExpressions/functions/seq_range.d.ts +31 -0
- package/dist/columnExpressions/functions/seq_range.js +91 -0
- package/dist/columnExpressions/functions/when.js +8 -4
- package/dist/columnExpressions/index.d.ts +5 -2
- package/dist/columnExpressions/index.js +5 -48
- package/dist/columnExpressions/mixins/AggregationExpr.d.ts +25 -50
- package/dist/columnExpressions/mixins/AggregationExpr.js +69 -165
- package/dist/columnExpressions/mixins/ArithmeticExpr.d.ts +41 -66
- package/dist/columnExpressions/mixins/ArithmeticExpr.js +126 -138
- package/dist/columnExpressions/mixins/BooleanExpr.d.ts +40 -0
- package/dist/columnExpressions/mixins/BooleanExpr.js +67 -0
- package/dist/columnExpressions/mixins/ComparisonExpr.d.ts +31 -60
- package/dist/columnExpressions/mixins/ComparisonExpr.js +231 -370
- package/dist/columnExpressions/mixins/ListExpr.d.ts +15 -39
- package/dist/columnExpressions/mixins/ListExpr.js +124 -148
- package/dist/columnExpressions/mixins/LogicalExpr.d.ts +7 -33
- package/dist/columnExpressions/mixins/LogicalExpr.js +48 -49
- package/dist/columnExpressions/mixins/ManipulationExpr.d.ts +6 -31
- package/dist/columnExpressions/mixins/ManipulationExpr.js +61 -25
- package/dist/columnExpressions/mixins/NumericExpr.d.ts +92 -0
- package/dist/columnExpressions/mixins/NumericExpr.js +259 -0
- package/dist/columnExpressions/mixins/StringExpr.d.ts +5 -30
- package/dist/columnExpressions/mixins/StringExpr.js +37 -49
- package/dist/columnExpressions/mixins/StructExpr.d.ts +16 -0
- package/dist/columnExpressions/mixins/StructExpr.js +139 -0
- package/dist/columnExpressions/mixins/TemporalExpr.d.ts +4 -30
- package/dist/columnExpressions/mixins/TemporalExpr.js +28 -29
- package/dist/columnExpressions/mixins/WindowExpr.d.ts +27 -49
- package/dist/columnExpressions/mixins/WindowExpr.js +144 -274
- package/dist/columnExpressions/utils.d.ts +4 -0
- package/dist/columnExpressions/utils.js +45 -0
- package/dist/dataframe/constants.d.ts +3 -0
- package/dist/dataframe/constants.js +4 -1
- package/dist/dataframe/dataframe.d.ts +27 -10
- package/dist/dataframe/dataframe.js +461 -220
- package/dist/dataframe/grouped/grouped.d.ts +2 -3
- package/dist/dataframe/grouped/grouped.js +17 -16
- package/dist/dataframe/types.d.ts +65 -1
- package/dist/dataframe/utils.d.ts +11 -3
- package/dist/dataframe/utils.js +101 -9
- package/dist/datatypes/DataType.d.ts +2 -1
- package/dist/datatypes/DataType.js +29 -0
- package/dist/datatypes/index.d.ts +2 -2
- package/dist/datatypes/types.d.ts +37 -36
- package/dist/datatypes/types.js +15 -11
- package/dist/exceptions/index.d.ts +2 -0
- package/dist/exceptions/index.js +4 -1
- package/dist/exceptions/utils.d.ts +1 -0
- package/dist/exceptions/utils.js +19 -0
- package/dist/functions/concat.d.ts +1 -2
- package/dist/functions/concat.js +24 -12
- package/dist/functions/index.d.ts +3 -1
- package/dist/functions/index.js +7 -15
- package/dist/functions/read_csv.d.ts +8 -0
- package/dist/functions/read_csv.js +53 -0
- package/dist/functions/read_json.d.ts +10 -0
- package/dist/functions/read_json.js +21 -0
- package/dist/functions/transpose.d.ts +7 -0
- package/dist/functions/transpose.js +84 -0
- package/dist/index.js +6 -1
- package/dist/types.d.ts +31 -5
- package/dist/utils/csv.d.ts +77 -0
- package/dist/utils/csv.js +313 -0
- package/dist/utils/date.js +5 -6
- package/dist/utils/guards.d.ts +0 -2
- package/dist/utils/guards.js +0 -31
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/json.d.ts +120 -2
- package/dist/utils/json.js +204 -20
- package/dist/utils/list.d.ts +173 -1
- package/dist/utils/list.js +255 -22
- package/dist/utils/number.d.ts +61 -28
- package/dist/utils/number.js +248 -70
- package/dist/utils/string.d.ts +5 -0
- package/dist/utils/string.js +89 -0
- package/package.json +5 -1
|
@@ -2,31 +2,30 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StringExpr = exports.StringExprNamespace = void 0;
|
|
4
4
|
const ExprBase_1 = require("../ExprBase");
|
|
5
|
-
const utils_1 = require("
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
const utils_2 = require("../../utils");
|
|
6
7
|
class StringExprNamespace {
|
|
7
8
|
expr;
|
|
8
9
|
constructor(expr) {
|
|
9
10
|
this.expr = expr;
|
|
10
11
|
}
|
|
11
12
|
_deriveString(fn) {
|
|
12
|
-
return (0, ExprBase_1.derive)(this.expr, (0,
|
|
13
|
+
return (0, ExprBase_1.derive)(this.expr, (0, utils_1.kleeneUnary)((v) => fn(String(v))));
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
-
return (0, ExprBase_1.derive)(this.expr, (0, ExprBase_1.kleeneBinary)(this.expr, other, (v, o) => String(v) + String(o)));
|
|
16
|
-
}
|
|
17
|
-
contains(pattern) {
|
|
15
|
+
_patternGuard(pattern, fn) {
|
|
18
16
|
if (pattern == null) {
|
|
19
17
|
return (0, ExprBase_1.derive)(this.expr, (vArray) => new Array(vArray.length).fill(null));
|
|
20
18
|
}
|
|
21
|
-
return
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
return fn();
|
|
20
|
+
}
|
|
21
|
+
concat(other) {
|
|
22
|
+
return (0, ExprBase_1.derive)(this.expr, (0, utils_1.kleeneBinary)(this.expr, other, (v, o) => String(v) + String(o)));
|
|
23
|
+
}
|
|
24
|
+
contains(pattern) {
|
|
25
|
+
return this._patternGuard(pattern, () => this._deriveString((str) => pattern instanceof RegExp ? pattern.test(str) : str.includes(pattern)));
|
|
24
26
|
}
|
|
25
27
|
count_matches(pattern) {
|
|
26
|
-
|
|
27
|
-
return (0, ExprBase_1.derive)(this.expr, (vArray) => new Array(vArray.length).fill(null));
|
|
28
|
-
}
|
|
29
|
-
return this._deriveString((str) => {
|
|
28
|
+
return this._patternGuard(pattern, () => this._deriveString((str) => {
|
|
30
29
|
if (pattern instanceof RegExp) {
|
|
31
30
|
const regex = pattern.global
|
|
32
31
|
? pattern
|
|
@@ -43,7 +42,7 @@ class StringExprNamespace {
|
|
|
43
42
|
}
|
|
44
43
|
return count;
|
|
45
44
|
}
|
|
46
|
-
});
|
|
45
|
+
}));
|
|
47
46
|
}
|
|
48
47
|
decode_uri_component() {
|
|
49
48
|
return this._deriveString((str) => {
|
|
@@ -72,15 +71,12 @@ class StringExprNamespace {
|
|
|
72
71
|
return this._deriveString((str) => str.split(""));
|
|
73
72
|
}
|
|
74
73
|
extract(pattern, group = 0) {
|
|
75
|
-
|
|
76
|
-
return (0, ExprBase_1.derive)(this.expr, (vArray) => new Array(vArray.length).fill(null));
|
|
77
|
-
}
|
|
78
|
-
return this._deriveString((str) => {
|
|
74
|
+
return this._patternGuard(pattern, () => this._deriveString((str) => {
|
|
79
75
|
const match = str.match(pattern);
|
|
80
76
|
if (!match)
|
|
81
77
|
return null;
|
|
82
78
|
return match[group] !== undefined ? match[group] : null;
|
|
83
|
-
});
|
|
79
|
+
}));
|
|
84
80
|
}
|
|
85
81
|
len() {
|
|
86
82
|
return this.len_chars();
|
|
@@ -104,16 +100,10 @@ class StringExprNamespace {
|
|
|
104
100
|
return this.lpad(width, fill);
|
|
105
101
|
}
|
|
106
102
|
replace(pattern, replacement) {
|
|
107
|
-
|
|
108
|
-
return (0, ExprBase_1.derive)(this.expr, (vArray) => new Array(vArray.length).fill(null));
|
|
109
|
-
}
|
|
110
|
-
return this._deriveString((str) => str.replace(pattern, replacement));
|
|
103
|
+
return this._patternGuard(pattern, () => this._deriveString((str) => str.replace(pattern, replacement)));
|
|
111
104
|
}
|
|
112
105
|
replace_all(pattern, replacement) {
|
|
113
|
-
|
|
114
|
-
return (0, ExprBase_1.derive)(this.expr, (vArray) => new Array(vArray.length).fill(null));
|
|
115
|
-
}
|
|
116
|
-
return this._deriveString((str) => {
|
|
106
|
+
return this._patternGuard(pattern, () => this._deriveString((str) => {
|
|
117
107
|
if (pattern instanceof RegExp) {
|
|
118
108
|
const regex = pattern.global
|
|
119
109
|
? pattern
|
|
@@ -121,7 +111,7 @@ class StringExprNamespace {
|
|
|
121
111
|
return str.replace(regex, replacement);
|
|
122
112
|
}
|
|
123
113
|
return str.replaceAll(pattern, replacement);
|
|
124
|
-
});
|
|
114
|
+
}));
|
|
125
115
|
}
|
|
126
116
|
reverse() {
|
|
127
117
|
return this._deriveString((str) => str.split("").reverse().join(""));
|
|
@@ -146,17 +136,17 @@ class StringExprNamespace {
|
|
|
146
136
|
return this._deriveString((str) => str.startsWith(prefix));
|
|
147
137
|
}
|
|
148
138
|
strip_chars(characters, options) {
|
|
149
|
-
return this._deriveString((str) => (0,
|
|
139
|
+
return this._deriveString((str) => (0, utils_2.stripChars)(str, characters, { mode: "both", ...options }));
|
|
150
140
|
}
|
|
151
141
|
strip_chars_end(characters, options) {
|
|
152
|
-
return this._deriveString((str) => (0,
|
|
142
|
+
return this._deriveString((str) => (0, utils_2.stripChars)(str, characters, { mode: "end", ...options }));
|
|
153
143
|
}
|
|
154
144
|
strip_chars_start(characters, options) {
|
|
155
|
-
return this._deriveString((str) => (0,
|
|
145
|
+
return this._deriveString((str) => (0, utils_2.stripChars)(str, characters, { mode: "start", ...options }));
|
|
156
146
|
}
|
|
157
147
|
strip_prefix(prefix) {
|
|
158
148
|
return this._deriveString((str) => {
|
|
159
|
-
return (0,
|
|
149
|
+
return (0, utils_2.stripChars)(str, prefix, {
|
|
160
150
|
mode: "start",
|
|
161
151
|
maxScanStart: 1,
|
|
162
152
|
maxMatchesStart: 1,
|
|
@@ -167,7 +157,7 @@ class StringExprNamespace {
|
|
|
167
157
|
}
|
|
168
158
|
strip_suffix(suffix) {
|
|
169
159
|
return this._deriveString((str) => {
|
|
170
|
-
return (0,
|
|
160
|
+
return (0, utils_2.stripChars)(str, suffix, {
|
|
171
161
|
mode: "end",
|
|
172
162
|
maxScanEnd: 1,
|
|
173
163
|
maxMatchesEnd: 1,
|
|
@@ -177,11 +167,11 @@ class StringExprNamespace {
|
|
|
177
167
|
});
|
|
178
168
|
}
|
|
179
169
|
strptime(format, strict = true) {
|
|
180
|
-
return this._deriveString((str) => (0,
|
|
170
|
+
return this._deriveString((str) => (0, utils_2.strptime)(str, format, strict));
|
|
181
171
|
}
|
|
182
172
|
to_date() {
|
|
183
173
|
return this._deriveString((str) => {
|
|
184
|
-
const d = (0,
|
|
174
|
+
const d = (0, utils_2.toValidDate)(str);
|
|
185
175
|
if (!d)
|
|
186
176
|
return null;
|
|
187
177
|
const copy = new Date(d);
|
|
@@ -190,26 +180,26 @@ class StringExprNamespace {
|
|
|
190
180
|
});
|
|
191
181
|
}
|
|
192
182
|
to_datetime() {
|
|
193
|
-
return this._deriveString(
|
|
183
|
+
return this._deriveString(utils_2.toValidDate);
|
|
194
184
|
}
|
|
195
185
|
to_decimal(precision, scale) {
|
|
196
|
-
return this._deriveString((str) => (0,
|
|
186
|
+
return this._deriveString((str) => (0, utils_2.toValidDecimal)(str, { precision, scale }));
|
|
197
187
|
}
|
|
198
188
|
to_integer() {
|
|
199
|
-
return this._deriveString((str) => (0,
|
|
189
|
+
return this._deriveString((str) => (0, utils_2.toValidInt)(str));
|
|
200
190
|
}
|
|
201
191
|
to_lowercase() {
|
|
202
192
|
return this.lower();
|
|
203
193
|
}
|
|
204
194
|
to_time() {
|
|
205
195
|
return this._deriveString((str) => {
|
|
206
|
-
const d = (0,
|
|
196
|
+
const d = (0, utils_2.toValidDate)(str);
|
|
207
197
|
if (d)
|
|
208
198
|
return d.toISOString().split("T")[1].slice(0, 12);
|
|
209
199
|
const trimmed = str.trim();
|
|
210
|
-
if (
|
|
211
|
-
const td = new Date(`1970-01-01T${trimmed}${
|
|
212
|
-
if ((0,
|
|
200
|
+
if (utils_2.TIME_PREFIX_REGEX.test(trimmed)) {
|
|
201
|
+
const td = new Date(`1970-01-01T${trimmed}${utils_2.ZONE_OFFSET_REGEX.test(trimmed) ? "" : "Z"}`);
|
|
202
|
+
if ((0, utils_2.isValidDateObj)(td)) {
|
|
213
203
|
return td.toISOString().split("T")[1].slice(0, 12);
|
|
214
204
|
}
|
|
215
205
|
}
|
|
@@ -239,11 +229,9 @@ class StringExprNamespace {
|
|
|
239
229
|
}
|
|
240
230
|
}
|
|
241
231
|
exports.StringExprNamespace = StringExprNamespace;
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
};
|
|
248
|
-
};
|
|
232
|
+
class StringExpr extends ExprBase_1.ExprBase {
|
|
233
|
+
get str() {
|
|
234
|
+
return new StringExprNamespace(this);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
249
237
|
exports.StringExpr = StringExpr;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ExprBase } from "../ExprBase";
|
|
2
|
+
import type { IntoExpr, IExpr } from "../../types";
|
|
3
|
+
export declare class StructExprNamespace {
|
|
4
|
+
expr: IExpr;
|
|
5
|
+
constructor(expr: IExpr);
|
|
6
|
+
field(name: string): IExpr;
|
|
7
|
+
rename_fields(mapping: Record<string, string>): IExpr;
|
|
8
|
+
with_fields(fields: IntoExpr[] | Record<string, IntoExpr>): IExpr;
|
|
9
|
+
unnest(): IExpr;
|
|
10
|
+
}
|
|
11
|
+
export interface StructExprNamespace {
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
}
|
|
14
|
+
export declare class StructExpr extends ExprBase {
|
|
15
|
+
get struct(): StructExprNamespace;
|
|
16
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StructExpr = exports.StructExprNamespace = void 0;
|
|
4
|
+
const ExprBase_1 = require("../ExprBase");
|
|
5
|
+
let ColumnExprClass = null;
|
|
6
|
+
function toColExpr(col) {
|
|
7
|
+
if (col == null) {
|
|
8
|
+
throw new Error("Column reference cannot be null or undefined.");
|
|
9
|
+
}
|
|
10
|
+
if (!ColumnExprClass) {
|
|
11
|
+
ColumnExprClass = require("../ColumnExpr").ColumnExpr;
|
|
12
|
+
}
|
|
13
|
+
return ColumnExprClass.isColExpr(col) ? col : new ColumnExprClass(col);
|
|
14
|
+
}
|
|
15
|
+
class StructExprNamespace {
|
|
16
|
+
expr;
|
|
17
|
+
constructor(expr) {
|
|
18
|
+
this.expr = expr;
|
|
19
|
+
return new Proxy(this, {
|
|
20
|
+
get(target, prop, receiver) {
|
|
21
|
+
if (prop in target) {
|
|
22
|
+
return Reflect.get(target, prop, receiver);
|
|
23
|
+
}
|
|
24
|
+
if (typeof prop === "string") {
|
|
25
|
+
return target.field(prop);
|
|
26
|
+
}
|
|
27
|
+
return Reflect.get(target, prop, receiver);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
field(name) {
|
|
32
|
+
return (0, ExprBase_1.derive)(this.expr, (vArray) => {
|
|
33
|
+
const height = vArray.length;
|
|
34
|
+
const result = new Array(height);
|
|
35
|
+
for (let i = 0; i < height; i++) {
|
|
36
|
+
const v = vArray[i];
|
|
37
|
+
result[i] = (v != null && typeof v === "object") ? v[name] : null;
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}).alias(name);
|
|
41
|
+
}
|
|
42
|
+
rename_fields(mapping) {
|
|
43
|
+
return (0, ExprBase_1.derive)(this.expr, (vArray) => {
|
|
44
|
+
const height = vArray.length;
|
|
45
|
+
const result = new Array(height);
|
|
46
|
+
const keys = Object.keys(mapping);
|
|
47
|
+
const keysLen = keys.length;
|
|
48
|
+
for (let i = 0; i < height; i++) {
|
|
49
|
+
const v = vArray[i];
|
|
50
|
+
if (v == null || typeof v !== "object") {
|
|
51
|
+
result[i] = null;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const newObj = {};
|
|
55
|
+
const origKeys = Object.keys(v);
|
|
56
|
+
const origLen = origKeys.length;
|
|
57
|
+
for (let k = 0; k < origLen; k++) {
|
|
58
|
+
const key = origKeys[k];
|
|
59
|
+
newObj[key] = v[key];
|
|
60
|
+
}
|
|
61
|
+
for (let j = 0; j < keysLen; j++) {
|
|
62
|
+
const oldKey = keys[j];
|
|
63
|
+
if (oldKey in newObj) {
|
|
64
|
+
const newKey = mapping[oldKey];
|
|
65
|
+
newObj[newKey] = newObj[oldKey];
|
|
66
|
+
delete newObj[oldKey];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
result[i] = newObj;
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
with_fields(fields) {
|
|
75
|
+
return (0, ExprBase_1.derive)(this.expr, (vArray, columns) => {
|
|
76
|
+
const height = vArray.length;
|
|
77
|
+
const result = new Array(height);
|
|
78
|
+
const resolved = [];
|
|
79
|
+
if (Array.isArray(fields)) {
|
|
80
|
+
const fieldsLen = fields.length;
|
|
81
|
+
for (let j = 0; j < fieldsLen; j++) {
|
|
82
|
+
const f = fields[j];
|
|
83
|
+
const expr = toColExpr(f);
|
|
84
|
+
const name = expr.outputName || expr.colName;
|
|
85
|
+
if (!name) {
|
|
86
|
+
throw new Error("Expressions passed to struct.with_fields must have a name/alias.");
|
|
87
|
+
}
|
|
88
|
+
resolved.push({ name, expr });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else if (fields && typeof fields === "object") {
|
|
92
|
+
const keys = Object.keys(fields);
|
|
93
|
+
const keysLen = keys.length;
|
|
94
|
+
for (let j = 0; j < keysLen; j++) {
|
|
95
|
+
const name = keys[j];
|
|
96
|
+
const expr = toColExpr(fields[name]);
|
|
97
|
+
resolved.push({ name, expr });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const resolvedLen = resolved.length;
|
|
101
|
+
const fieldValues = new Array(resolvedLen);
|
|
102
|
+
for (let j = 0; j < resolvedLen; j++) {
|
|
103
|
+
fieldValues[j] = resolved[j].expr.evaluate(columns, height);
|
|
104
|
+
}
|
|
105
|
+
for (let i = 0; i < height; i++) {
|
|
106
|
+
const v = vArray[i];
|
|
107
|
+
if (v == null || typeof v !== "object") {
|
|
108
|
+
result[i] = null;
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const newObj = {};
|
|
112
|
+
const origKeys = Object.keys(v);
|
|
113
|
+
const origLen = origKeys.length;
|
|
114
|
+
for (let k = 0; k < origLen; k++) {
|
|
115
|
+
const key = origKeys[k];
|
|
116
|
+
newObj[key] = v[key];
|
|
117
|
+
}
|
|
118
|
+
for (let j = 0; j < resolvedLen; j++) {
|
|
119
|
+
newObj[resolved[j].name] = fieldValues[j][i];
|
|
120
|
+
}
|
|
121
|
+
result[i] = newObj;
|
|
122
|
+
}
|
|
123
|
+
return result;
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
unnest() {
|
|
127
|
+
const newInst = (0, ExprBase_1.derive)(this.expr);
|
|
128
|
+
newInst.isUnnest = true;
|
|
129
|
+
newInst.baseExpr = this.expr;
|
|
130
|
+
return newInst;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.StructExprNamespace = StructExprNamespace;
|
|
134
|
+
class StructExpr extends ExprBase_1.ExprBase {
|
|
135
|
+
get struct() {
|
|
136
|
+
return new StructExprNamespace(this);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.StructExpr = StructExpr;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { TimeUnit } from "../../types";
|
|
2
|
-
import
|
|
2
|
+
import { ExprBase } from "../ExprBase";
|
|
3
3
|
export declare class DateTimeExprNamespace {
|
|
4
4
|
expr: any;
|
|
5
5
|
constructor(expr: any);
|
|
@@ -38,32 +38,6 @@ export declare class DateTimeExprNamespace {
|
|
|
38
38
|
weekday(): any;
|
|
39
39
|
year(): any;
|
|
40
40
|
}
|
|
41
|
-
export declare
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
ops: import("../../types").OpFn[];
|
|
45
|
-
colName?: string;
|
|
46
|
-
outputName?: string;
|
|
47
|
-
isLiteral?: boolean;
|
|
48
|
-
literalValue?: any;
|
|
49
|
-
aggFn?: import("../../types").AggFn<any> | null;
|
|
50
|
-
groupingOpsIndex?: number;
|
|
51
|
-
partitionOpsIndex?: number;
|
|
52
|
-
partitionBy?: (string | import("../../types").IExpr)[] | null;
|
|
53
|
-
windowOp?: {
|
|
54
|
-
type: string;
|
|
55
|
-
[key: string]: any;
|
|
56
|
-
} | null;
|
|
57
|
-
isWindow?: boolean;
|
|
58
|
-
alias(name: string): /*elided*/ any;
|
|
59
|
-
cast(dataType: any): /*elided*/ any;
|
|
60
|
-
_resolve(val: any, columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData | any;
|
|
61
|
-
evaluate(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
|
|
62
|
-
evaluatePreGrouping(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
|
|
63
|
-
evaluatePostGrouping(aggregatedArray: any[], columns: import("../../types").ColumnDict): import("../../types").ColumnData;
|
|
64
|
-
evaluatePrePartition(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
|
|
65
|
-
evaluatePostPartition(aggregatedArray: any[], columns: import("../../types").ColumnDict): import("../../types").ColumnData;
|
|
66
|
-
evaluateWindow?(groupPreValues: any[], partitionIndices: number[], currentIndex: number): any;
|
|
67
|
-
debug(label?: string): /*elided*/ any;
|
|
68
|
-
};
|
|
69
|
-
} & TBase;
|
|
41
|
+
export declare class TemporalExpr extends ExprBase {
|
|
42
|
+
get dt(): DateTimeExprNamespace;
|
|
43
|
+
}
|
|
@@ -2,25 +2,26 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TemporalExpr = exports.DateTimeExprNamespace = void 0;
|
|
4
4
|
const ExprBase_1 = require("../ExprBase");
|
|
5
|
-
const utils_1 = require("
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
const utils_2 = require("../../utils");
|
|
6
7
|
class DateTimeExprNamespace {
|
|
7
8
|
expr;
|
|
8
9
|
constructor(expr) {
|
|
9
10
|
this.expr = expr;
|
|
10
11
|
}
|
|
11
12
|
_deriveDate(fn) {
|
|
12
|
-
return (0, ExprBase_1.derive)(this.expr, (0,
|
|
13
|
-
const d = (0,
|
|
13
|
+
return (0, ExprBase_1.derive)(this.expr, (0, utils_1.kleeneUnary)((v) => {
|
|
14
|
+
const d = (0, utils_2.toValidDate)(v);
|
|
14
15
|
return d ? fn(d) : null;
|
|
15
16
|
}));
|
|
16
17
|
}
|
|
17
18
|
_deriveDuration(fn) {
|
|
18
|
-
return (0, ExprBase_1.derive)(this.expr, (0,
|
|
19
|
+
return (0, ExprBase_1.derive)(this.expr, (0, utils_1.kleeneUnary)((v) => {
|
|
19
20
|
return typeof v === "number" ? fn(v) : null;
|
|
20
21
|
}));
|
|
21
22
|
}
|
|
22
23
|
century() {
|
|
23
|
-
return this._deriveDate(
|
|
24
|
+
return this._deriveDate(utils_2.getCentury);
|
|
24
25
|
}
|
|
25
26
|
date() {
|
|
26
27
|
return this._deriveDate((d) => new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate())));
|
|
@@ -32,19 +33,19 @@ class DateTimeExprNamespace {
|
|
|
32
33
|
return this._deriveDate((d) => d.getUTCDate());
|
|
33
34
|
}
|
|
34
35
|
epoch(unit = "ms") {
|
|
35
|
-
return this._deriveDate((d) => (0,
|
|
36
|
+
return this._deriveDate((d) => (0, utils_2.toEpoch)(d, unit));
|
|
36
37
|
}
|
|
37
38
|
hour() {
|
|
38
39
|
return this._deriveDate((d) => d.getUTCHours());
|
|
39
40
|
}
|
|
40
41
|
is_leap_year() {
|
|
41
|
-
return this._deriveDate(
|
|
42
|
+
return this._deriveDate(utils_2.isLeapYear);
|
|
42
43
|
}
|
|
43
44
|
microsecond() {
|
|
44
|
-
return this._deriveDate((d) => d.getUTCMilliseconds() *
|
|
45
|
+
return this._deriveDate((d) => d.getUTCMilliseconds() * utils_2.US_PER_MS);
|
|
45
46
|
}
|
|
46
47
|
millennium() {
|
|
47
|
-
return this._deriveDate(
|
|
48
|
+
return this._deriveDate(utils_2.getMillennium);
|
|
48
49
|
}
|
|
49
50
|
millisecond() {
|
|
50
51
|
return this._deriveDate((d) => d.getUTCMilliseconds());
|
|
@@ -56,25 +57,25 @@ class DateTimeExprNamespace {
|
|
|
56
57
|
return this._deriveDate((d) => d.getUTCMonth() + 1);
|
|
57
58
|
}
|
|
58
59
|
month_end() {
|
|
59
|
-
return this._deriveDate((d) => (0,
|
|
60
|
+
return this._deriveDate((d) => (0, utils_2.getMonthOffset)(d, 1, 0));
|
|
60
61
|
}
|
|
61
62
|
month_start() {
|
|
62
|
-
return this._deriveDate((d) => (0,
|
|
63
|
+
return this._deriveDate((d) => (0, utils_2.getMonthOffset)(d, 0, 1));
|
|
63
64
|
}
|
|
64
65
|
nanosecond() {
|
|
65
|
-
return this._deriveDate((d) => d.getUTCMilliseconds() *
|
|
66
|
+
return this._deriveDate((d) => d.getUTCMilliseconds() * utils_2.NS_PER_MS);
|
|
66
67
|
}
|
|
67
68
|
ordinal_day() {
|
|
68
|
-
return this._deriveDate(
|
|
69
|
+
return this._deriveDate(utils_2.getOrdinalDay);
|
|
69
70
|
}
|
|
70
71
|
quarter() {
|
|
71
|
-
return this._deriveDate(
|
|
72
|
+
return this._deriveDate(utils_2.getQuarter);
|
|
72
73
|
}
|
|
73
74
|
second() {
|
|
74
75
|
return this._deriveDate((d) => d.getUTCSeconds());
|
|
75
76
|
}
|
|
76
77
|
strftime(format, locale) {
|
|
77
|
-
return this._deriveDate((d) => (0,
|
|
78
|
+
return this._deriveDate((d) => (0, utils_2.strftime)(d, format, locale));
|
|
78
79
|
}
|
|
79
80
|
time() {
|
|
80
81
|
return this._deriveDate((d) => d.toISOString().split("T")[1].slice(0, 12));
|
|
@@ -86,28 +87,28 @@ class DateTimeExprNamespace {
|
|
|
86
87
|
return this.strftime(format, locale);
|
|
87
88
|
}
|
|
88
89
|
total_days() {
|
|
89
|
-
return this._deriveDuration((v) => v /
|
|
90
|
+
return this._deriveDuration((v) => v / utils_2.MS_PER_DAY);
|
|
90
91
|
}
|
|
91
92
|
total_hours() {
|
|
92
|
-
return this._deriveDuration((v) => v /
|
|
93
|
+
return this._deriveDuration((v) => v / utils_2.MS_PER_HOUR);
|
|
93
94
|
}
|
|
94
95
|
total_microseconds() {
|
|
95
|
-
return this._deriveDuration((v) => v *
|
|
96
|
+
return this._deriveDuration((v) => v * utils_2.US_PER_MS);
|
|
96
97
|
}
|
|
97
98
|
total_milliseconds() {
|
|
98
99
|
return this._deriveDuration((v) => v);
|
|
99
100
|
}
|
|
100
101
|
total_minutes() {
|
|
101
|
-
return this._deriveDuration((v) => v /
|
|
102
|
+
return this._deriveDuration((v) => v / utils_2.MS_PER_MINUTE);
|
|
102
103
|
}
|
|
103
104
|
total_nanoseconds() {
|
|
104
|
-
return this._deriveDuration((v) => v *
|
|
105
|
+
return this._deriveDuration((v) => v * utils_2.NS_PER_MS);
|
|
105
106
|
}
|
|
106
107
|
total_seconds() {
|
|
107
|
-
return this._deriveDuration((v) => v /
|
|
108
|
+
return this._deriveDuration((v) => v / utils_2.MS_PER_SECOND);
|
|
108
109
|
}
|
|
109
110
|
week() {
|
|
110
|
-
return this._deriveDate(
|
|
111
|
+
return this._deriveDate(utils_2.getISOWeek);
|
|
111
112
|
}
|
|
112
113
|
weekday() {
|
|
113
114
|
return this._deriveDate((d) => d.getUTCDay() || 7);
|
|
@@ -117,11 +118,9 @@ class DateTimeExprNamespace {
|
|
|
117
118
|
}
|
|
118
119
|
}
|
|
119
120
|
exports.DateTimeExprNamespace = DateTimeExprNamespace;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
};
|
|
126
|
-
};
|
|
121
|
+
class TemporalExpr extends ExprBase_1.ExprBase {
|
|
122
|
+
get dt() {
|
|
123
|
+
return new DateTimeExprNamespace(this);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
127
126
|
exports.TemporalExpr = TemporalExpr;
|
|
@@ -1,50 +1,28 @@
|
|
|
1
1
|
import type { IExpr } from "../../types";
|
|
2
|
-
import
|
|
3
|
-
export declare
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
outputName?: string;
|
|
30
|
-
isLiteral?: boolean;
|
|
31
|
-
literalValue?: any;
|
|
32
|
-
aggFn?: import("../../types").AggFn<any> | null;
|
|
33
|
-
groupingOpsIndex?: number;
|
|
34
|
-
partitionOpsIndex?: number;
|
|
35
|
-
windowOp?: {
|
|
36
|
-
type: string;
|
|
37
|
-
[key: string]: any;
|
|
38
|
-
} | null;
|
|
39
|
-
alias(name: string): /*elided*/ any;
|
|
40
|
-
cast(dataType: any): /*elided*/ any;
|
|
41
|
-
_resolve(val: any, columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData | any;
|
|
42
|
-
evaluate(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
|
|
43
|
-
evaluatePreGrouping(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
|
|
44
|
-
evaluatePostGrouping(aggregatedArray: any[], columns: import("../../types").ColumnDict): import("../../types").ColumnData;
|
|
45
|
-
evaluatePrePartition(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
|
|
46
|
-
evaluatePostPartition(aggregatedArray: any[], columns: import("../../types").ColumnDict): import("../../types").ColumnData;
|
|
47
|
-
evaluateWindow?(groupPreValues: any[], partitionIndices: number[], currentIndex: number): any;
|
|
48
|
-
debug(label?: string): /*elided*/ any;
|
|
49
|
-
};
|
|
50
|
-
} & TBase;
|
|
2
|
+
import { ExprBase } from "../ExprBase";
|
|
3
|
+
export declare class WindowExpr extends ExprBase {
|
|
4
|
+
partitionBy: (string | IExpr)[] | null;
|
|
5
|
+
_window(evaluateWindow: (this: IExpr, groupPreValues: any[], partitionIndices: number[], currentIndex: number) => any): this;
|
|
6
|
+
_rolling(windowSize: number, aggFn: (vals: any[]) => any): this;
|
|
7
|
+
_cum(reverse: boolean, initialVal: any, stepFn: (acc: any, val: any) => any, postFn?: (acc: any, hasValid: boolean) => any): this;
|
|
8
|
+
get isWindow(): boolean;
|
|
9
|
+
cum_count(reverse?: boolean): this;
|
|
10
|
+
cum_max(reverse?: boolean): this;
|
|
11
|
+
cum_min(reverse?: boolean): this;
|
|
12
|
+
cum_prod(reverse?: boolean): this;
|
|
13
|
+
cum_sum(reverse?: boolean): this;
|
|
14
|
+
dense_rank(): this;
|
|
15
|
+
lag(offset?: number, defaultVal?: any): this;
|
|
16
|
+
lead(offset?: number, defaultVal?: any): this;
|
|
17
|
+
over(columns: string | IExpr | (string | IExpr)[]): this;
|
|
18
|
+
rank(): this;
|
|
19
|
+
rolling_max(windowSize: number): this;
|
|
20
|
+
rolling_mean(windowSize: number): this;
|
|
21
|
+
rolling_median(windowSize: number): this;
|
|
22
|
+
rolling_min(windowSize: number): this;
|
|
23
|
+
rolling_quantile(quantile: number, windowSize: number): this;
|
|
24
|
+
rolling_rank(windowSize: number): this;
|
|
25
|
+
rolling_std(windowSize: number): this;
|
|
26
|
+
rolling_sum(windowSize: number): this;
|
|
27
|
+
row_number(): this;
|
|
28
|
+
}
|