vtlengine 1.4.0rc2__py3-none-any.whl
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.
- vtlengine/API/_InternalApi.py +791 -0
- vtlengine/API/__init__.py +612 -0
- vtlengine/API/data/schema/external_routines_schema.json +34 -0
- vtlengine/API/data/schema/json_schema_2.1.json +116 -0
- vtlengine/API/data/schema/value_domain_schema.json +97 -0
- vtlengine/AST/ASTComment.py +57 -0
- vtlengine/AST/ASTConstructor.py +598 -0
- vtlengine/AST/ASTConstructorModules/Expr.py +1928 -0
- vtlengine/AST/ASTConstructorModules/ExprComponents.py +995 -0
- vtlengine/AST/ASTConstructorModules/Terminals.py +790 -0
- vtlengine/AST/ASTConstructorModules/__init__.py +50 -0
- vtlengine/AST/ASTDataExchange.py +10 -0
- vtlengine/AST/ASTEncoders.py +32 -0
- vtlengine/AST/ASTString.py +675 -0
- vtlengine/AST/ASTTemplate.py +558 -0
- vtlengine/AST/ASTVisitor.py +25 -0
- vtlengine/AST/DAG/__init__.py +479 -0
- vtlengine/AST/DAG/_words.py +10 -0
- vtlengine/AST/Grammar/Vtl.g4 +705 -0
- vtlengine/AST/Grammar/VtlTokens.g4 +409 -0
- vtlengine/AST/Grammar/__init__.py +0 -0
- vtlengine/AST/Grammar/lexer.py +2139 -0
- vtlengine/AST/Grammar/parser.py +16597 -0
- vtlengine/AST/Grammar/tokens.py +169 -0
- vtlengine/AST/VtlVisitor.py +824 -0
- vtlengine/AST/__init__.py +674 -0
- vtlengine/DataTypes/TimeHandling.py +562 -0
- vtlengine/DataTypes/__init__.py +863 -0
- vtlengine/DataTypes/_time_checking.py +135 -0
- vtlengine/Exceptions/__exception_file_generator.py +96 -0
- vtlengine/Exceptions/__init__.py +159 -0
- vtlengine/Exceptions/messages.py +1004 -0
- vtlengine/Interpreter/__init__.py +2048 -0
- vtlengine/Model/__init__.py +501 -0
- vtlengine/Operators/Aggregation.py +357 -0
- vtlengine/Operators/Analytic.py +455 -0
- vtlengine/Operators/Assignment.py +23 -0
- vtlengine/Operators/Boolean.py +106 -0
- vtlengine/Operators/CastOperator.py +451 -0
- vtlengine/Operators/Clause.py +366 -0
- vtlengine/Operators/Comparison.py +488 -0
- vtlengine/Operators/Conditional.py +495 -0
- vtlengine/Operators/General.py +191 -0
- vtlengine/Operators/HROperators.py +254 -0
- vtlengine/Operators/Join.py +447 -0
- vtlengine/Operators/Numeric.py +422 -0
- vtlengine/Operators/RoleSetter.py +77 -0
- vtlengine/Operators/Set.py +176 -0
- vtlengine/Operators/String.py +578 -0
- vtlengine/Operators/Time.py +1144 -0
- vtlengine/Operators/Validation.py +275 -0
- vtlengine/Operators/__init__.py +900 -0
- vtlengine/Utils/__Virtual_Assets.py +34 -0
- vtlengine/Utils/__init__.py +479 -0
- vtlengine/__extras_check.py +17 -0
- vtlengine/__init__.py +27 -0
- vtlengine/files/__init__.py +0 -0
- vtlengine/files/output/__init__.py +35 -0
- vtlengine/files/output/_time_period_representation.py +55 -0
- vtlengine/files/parser/__init__.py +240 -0
- vtlengine/files/parser/_rfc_dialect.py +22 -0
- vtlengine/py.typed +0 -0
- vtlengine-1.4.0rc2.dist-info/METADATA +89 -0
- vtlengine-1.4.0rc2.dist-info/RECORD +66 -0
- vtlengine-1.4.0rc2.dist-info/WHEEL +4 -0
- vtlengine-1.4.0rc2.dist-info/licenses/LICENSE.md +661 -0
|
@@ -0,0 +1,705 @@
|
|
|
1
|
+
grammar Vtl;
|
|
2
|
+
import VtlTokens;
|
|
3
|
+
|
|
4
|
+
start:
|
|
5
|
+
(statement EOL)* EOF
|
|
6
|
+
;
|
|
7
|
+
|
|
8
|
+
/* statement */
|
|
9
|
+
statement:
|
|
10
|
+
varID ASSIGN expr # temporaryAssignment
|
|
11
|
+
| varID PUT_SYMBOL expr # persistAssignment
|
|
12
|
+
| defOperators # defineExpression
|
|
13
|
+
;
|
|
14
|
+
|
|
15
|
+
/* expression */
|
|
16
|
+
expr:
|
|
17
|
+
LPAREN expr RPAREN # parenthesisExpr
|
|
18
|
+
| functions # functionsExpression
|
|
19
|
+
| dataset=expr QLPAREN clause=datasetClause QRPAREN # clauseExpr
|
|
20
|
+
| expr MEMBERSHIP simpleComponentId # membershipExpr
|
|
21
|
+
| op=(PLUS|MINUS|NOT) right=expr # unaryExpr
|
|
22
|
+
| left=expr op=(MUL|DIV) right=expr # arithmeticExpr
|
|
23
|
+
| left=expr op=(PLUS|MINUS|CONCAT) right=expr # arithmeticExprOrConcat
|
|
24
|
+
| left=expr op=comparisonOperand right=expr # comparisonExpr
|
|
25
|
+
| left=expr op=(IN|NOT_IN)(lists|valueDomainID) # inNotInExpr
|
|
26
|
+
| left=expr op=AND right=expr # booleanExpr
|
|
27
|
+
| left=expr op=(OR|XOR) right=expr # booleanExpr
|
|
28
|
+
| IF conditionalExpr=expr THEN thenExpr=expr ELSE elseExpr=expr # ifExpr
|
|
29
|
+
| CASE (WHEN expr THEN expr)+ ELSE expr # caseExpr
|
|
30
|
+
| constant # constantExpr
|
|
31
|
+
| varID # varIdExpr
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
;
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
exprComponent:
|
|
38
|
+
LPAREN exprComponent RPAREN # parenthesisExprComp
|
|
39
|
+
| functionsComponents # functionsExpressionComp
|
|
40
|
+
| op=(PLUS|MINUS|NOT) right=exprComponent # unaryExprComp
|
|
41
|
+
| left=exprComponent op=(MUL|DIV) right=exprComponent # arithmeticExprComp
|
|
42
|
+
| left=exprComponent op=(PLUS|MINUS|CONCAT) right=exprComponent # arithmeticExprOrConcatComp
|
|
43
|
+
| left=exprComponent comparisonOperand right=exprComponent # comparisonExprComp
|
|
44
|
+
| left=exprComponent op=(IN|NOT_IN)(lists|valueDomainID) # inNotInExprComp
|
|
45
|
+
| left=exprComponent op=AND right=exprComponent # booleanExprComp
|
|
46
|
+
| left=exprComponent op=(OR|XOR) right=exprComponent # booleanExprComp
|
|
47
|
+
| IF conditionalExpr=exprComponent THEN thenExpr=exprComponent ELSE elseExpr=exprComponent # ifExprComp
|
|
48
|
+
| CASE (WHEN exprComponent THEN exprComponent)+ ELSE exprComponent # caseExprComp
|
|
49
|
+
| constant # constantExprComp
|
|
50
|
+
| componentID # compId
|
|
51
|
+
;
|
|
52
|
+
|
|
53
|
+
functionsComponents:
|
|
54
|
+
genericOperatorsComponent # genericFunctionsComponents
|
|
55
|
+
| stringOperatorsComponent # stringFunctionsComponents
|
|
56
|
+
| numericOperatorsComponent # numericFunctionsComponents
|
|
57
|
+
| comparisonOperatorsComponent # comparisonFunctionsComponents
|
|
58
|
+
| timeOperatorsComponent # timeFunctionsComponents
|
|
59
|
+
| conditionalOperatorsComponent # conditionalFunctionsComponents
|
|
60
|
+
| aggrOperators # aggregateFunctionsComponents
|
|
61
|
+
| anFunctionComponent # analyticFunctionsComponents
|
|
62
|
+
|
|
63
|
+
;
|
|
64
|
+
|
|
65
|
+
/* functions */
|
|
66
|
+
functions:
|
|
67
|
+
joinOperators # joinFunctions
|
|
68
|
+
| genericOperators # genericFunctions
|
|
69
|
+
| stringOperators # stringFunctions
|
|
70
|
+
| numericOperators # numericFunctions
|
|
71
|
+
| comparisonOperators # comparisonFunctions
|
|
72
|
+
| timeOperators # timeFunctions
|
|
73
|
+
| setOperators # setFunctions
|
|
74
|
+
| hierarchyOperators # hierarchyFunctions
|
|
75
|
+
| validationOperators # validationFunctions
|
|
76
|
+
| conditionalOperators # conditionalFunctions
|
|
77
|
+
| aggrOperatorsGrouping # aggregateFunctions
|
|
78
|
+
| anFunction # analyticFunctions
|
|
79
|
+
;
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
/*------------------------------------------------------ Clauses----------------------------------------------- */
|
|
83
|
+
datasetClause:
|
|
84
|
+
renameClause
|
|
85
|
+
| aggrClause
|
|
86
|
+
| filterClause
|
|
87
|
+
| calcClause
|
|
88
|
+
| keepOrDropClause
|
|
89
|
+
| pivotOrUnpivotClause
|
|
90
|
+
/* | customPivotClause */
|
|
91
|
+
| subspaceClause
|
|
92
|
+
;
|
|
93
|
+
|
|
94
|
+
renameClause:
|
|
95
|
+
RENAME renameClauseItem (COMMA renameClauseItem)*
|
|
96
|
+
;
|
|
97
|
+
|
|
98
|
+
aggrClause:
|
|
99
|
+
AGGREGATE aggregateClause (groupingClause havingClause?)?
|
|
100
|
+
;
|
|
101
|
+
|
|
102
|
+
filterClause:
|
|
103
|
+
FILTER exprComponent
|
|
104
|
+
;
|
|
105
|
+
|
|
106
|
+
calcClause:
|
|
107
|
+
CALC calcClauseItem (COMMA calcClauseItem)*
|
|
108
|
+
;
|
|
109
|
+
|
|
110
|
+
keepOrDropClause:
|
|
111
|
+
op = (KEEP | DROP) componentID (COMMA componentID)*
|
|
112
|
+
;
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
pivotOrUnpivotClause:
|
|
116
|
+
op=(PIVOT|UNPIVOT) id_=componentID COMMA mea=componentID
|
|
117
|
+
;
|
|
118
|
+
|
|
119
|
+
customPivotClause:
|
|
120
|
+
CUSTOMPIVOT id_=componentID COMMA mea=componentID IN constant (COMMA constant)*
|
|
121
|
+
;
|
|
122
|
+
|
|
123
|
+
subspaceClause:
|
|
124
|
+
SUBSPACE subspaceClauseItem (COMMA subspaceClauseItem)*
|
|
125
|
+
;
|
|
126
|
+
|
|
127
|
+
/*------------------------------------------------------End Clauses----------------------------------------------- */
|
|
128
|
+
|
|
129
|
+
/************************************************** JOIN FUNCITONS -------------------------------------------*/
|
|
130
|
+
|
|
131
|
+
joinOperators:
|
|
132
|
+
joinKeyword=(INNER_JOIN | LEFT_JOIN) LPAREN joinClause joinBody RPAREN # joinExpr
|
|
133
|
+
| joinKeyword=(FULL_JOIN | CROSS_JOIN) LPAREN joinClauseWithoutUsing joinBody RPAREN # joinExpr
|
|
134
|
+
;
|
|
135
|
+
|
|
136
|
+
/************************************************** END JOIN FUNCITONS -------------------------------------------*/
|
|
137
|
+
/* --------------------------------------------Define Functions------------------------------------------------- */
|
|
138
|
+
defOperators:
|
|
139
|
+
DEFINE OPERATOR operatorID LPAREN (parameterItem (COMMA parameterItem)*)? RPAREN (RETURNS outputParameterType)? IS (expr) END OPERATOR # defOperator
|
|
140
|
+
| DEFINE DATAPOINT RULESET rulesetID LPAREN rulesetSignature RPAREN IS ruleClauseDatapoint END DATAPOINT RULESET # defDatapointRuleset
|
|
141
|
+
| DEFINE HIERARCHICAL RULESET rulesetID LPAREN hierRuleSignature RPAREN IS ruleClauseHierarchical END HIERARCHICAL RULESET # defHierarchical
|
|
142
|
+
;
|
|
143
|
+
|
|
144
|
+
/* --------------------------------------------END DEFINE FUNCTIONS------------------------------------------------- */
|
|
145
|
+
|
|
146
|
+
/*---------------------------------------------------FUNCTIONS-------------------------------------------------*/
|
|
147
|
+
genericOperators:
|
|
148
|
+
operatorID LPAREN (parameter (COMMA parameter)*)? RPAREN # callDataset
|
|
149
|
+
| EVAL LPAREN routineName LPAREN (varID|scalarItem)? (COMMA (varID|scalarItem))* RPAREN (LANGUAGE STRING_CONSTANT)? (RETURNS evalDatasetType)? RPAREN # evalAtom
|
|
150
|
+
| CAST LPAREN expr COMMA (basicScalarType|valueDomainName) (COMMA STRING_CONSTANT)? RPAREN # castExprDataset
|
|
151
|
+
;
|
|
152
|
+
|
|
153
|
+
genericOperatorsComponent:
|
|
154
|
+
operatorID LPAREN (parameterComponent (COMMA parameterComponent)*)? RPAREN # callComponent
|
|
155
|
+
| CAST LPAREN exprComponent COMMA (basicScalarType|valueDomainName) (COMMA STRING_CONSTANT)? RPAREN # castExprComponent
|
|
156
|
+
| EVAL LPAREN routineName LPAREN (componentID|scalarItem)? (COMMA (componentID|scalarItem))* RPAREN (LANGUAGE STRING_CONSTANT)? (RETURNS outputParameterTypeComponent)? RPAREN # evalAtomComponent
|
|
157
|
+
|
|
158
|
+
;
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
parameterComponent:
|
|
162
|
+
exprComponent
|
|
163
|
+
| OPTIONAL
|
|
164
|
+
;
|
|
165
|
+
|
|
166
|
+
parameter:
|
|
167
|
+
expr
|
|
168
|
+
| OPTIONAL
|
|
169
|
+
;
|
|
170
|
+
|
|
171
|
+
stringOperators:
|
|
172
|
+
op=(TRIM | LTRIM | RTRIM | UCASE | LCASE | LEN) LPAREN expr RPAREN # unaryStringFunction
|
|
173
|
+
| SUBSTR LPAREN expr (((COMMA startParameter=optionalExpr) (COMMA endParameter=optionalExpr))? | COMMA startParameter=optionalExpr ) RPAREN # substrAtom
|
|
174
|
+
| REPLACE LPAREN expr COMMA param=expr ( COMMA optionalExpr)? RPAREN # replaceAtom
|
|
175
|
+
| INSTR LPAREN expr COMMA pattern=expr ( COMMA startParameter=optionalExpr)? (COMMA occurrenceParameter=optionalExpr)? RPAREN # instrAtom
|
|
176
|
+
;
|
|
177
|
+
|
|
178
|
+
stringOperatorsComponent:
|
|
179
|
+
op=(TRIM | LTRIM | RTRIM | UCASE | LCASE | LEN) LPAREN exprComponent RPAREN # unaryStringFunctionComponent
|
|
180
|
+
| SUBSTR LPAREN exprComponent (((COMMA startParameter=optionalExprComponent) (COMMA endParameter=optionalExprComponent))? | COMMA startParameter=optionalExprComponent ) RPAREN # substrAtomComponent
|
|
181
|
+
| REPLACE LPAREN exprComponent COMMA param=exprComponent ( COMMA optionalExprComponent)? RPAREN # replaceAtomComponent
|
|
182
|
+
| INSTR LPAREN exprComponent COMMA pattern=exprComponent ( COMMA startParameter=optionalExprComponent)? (COMMA occurrenceParameter=optionalExprComponent)? RPAREN # instrAtomComponent
|
|
183
|
+
;
|
|
184
|
+
|
|
185
|
+
numericOperators:
|
|
186
|
+
op=(CEIL | FLOOR | ABS | EXP | LN | SQRT) LPAREN expr RPAREN # unaryNumeric
|
|
187
|
+
| op=(ROUND | TRUNC) LPAREN expr (COMMA optionalExpr)? RPAREN # unaryWithOptionalNumeric
|
|
188
|
+
| op=(MOD | POWER | LOG | RANDOM) LPAREN left=expr COMMA right=expr RPAREN # binaryNumeric
|
|
189
|
+
;
|
|
190
|
+
|
|
191
|
+
numericOperatorsComponent:
|
|
192
|
+
op=(CEIL | FLOOR | ABS | EXP | LN | SQRT) LPAREN exprComponent RPAREN # unaryNumericComponent
|
|
193
|
+
| op=(ROUND | TRUNC) LPAREN exprComponent (COMMA optionalExprComponent)? RPAREN # unaryWithOptionalNumericComponent
|
|
194
|
+
| op=(MOD | POWER | LOG | RANDOM) LPAREN left=exprComponent COMMA right=exprComponent RPAREN # binaryNumericComponent
|
|
195
|
+
;
|
|
196
|
+
|
|
197
|
+
comparisonOperators:
|
|
198
|
+
BETWEEN LPAREN op=expr COMMA from_=expr COMMA to_=expr RPAREN # betweenAtom
|
|
199
|
+
| CHARSET_MATCH LPAREN op=expr COMMA pattern=expr RPAREN # charsetMatchAtom
|
|
200
|
+
| ISNULL LPAREN expr RPAREN # isNullAtom
|
|
201
|
+
| EXISTS_IN LPAREN left=expr COMMA right=expr (COMMA retainType)? RPAREN # existInAtom
|
|
202
|
+
;
|
|
203
|
+
|
|
204
|
+
comparisonOperatorsComponent:
|
|
205
|
+
BETWEEN LPAREN op=exprComponent COMMA from_=exprComponent COMMA to_=exprComponent RPAREN # betweenAtomComponent
|
|
206
|
+
| CHARSET_MATCH LPAREN op=exprComponent COMMA pattern=exprComponent RPAREN # charsetMatchAtomComponent
|
|
207
|
+
| ISNULL LPAREN exprComponent RPAREN # isNullAtomComponent
|
|
208
|
+
;
|
|
209
|
+
|
|
210
|
+
timeOperators:
|
|
211
|
+
PERIOD_INDICATOR LPAREN expr? RPAREN # periodAtom
|
|
212
|
+
| FILL_TIME_SERIES LPAREN expr (COMMA (SINGLE|ALL))? RPAREN # fillTimeAtom
|
|
213
|
+
| op=(FLOW_TO_STOCK | STOCK_TO_FLOW) LPAREN expr RPAREN # flowAtom
|
|
214
|
+
| TIMESHIFT LPAREN expr COMMA signedInteger RPAREN # timeShiftAtom
|
|
215
|
+
| TIME_AGG LPAREN periodIndTo=STRING_CONSTANT (COMMA periodIndFrom=(STRING_CONSTANT| OPTIONAL ))? (COMMA op=optionalExpr)? (COMMA (FIRST|LAST))? RPAREN # timeAggAtom
|
|
216
|
+
| CURRENT_DATE LPAREN RPAREN # currentDateAtom
|
|
217
|
+
| DATEDIFF LPAREN dateFrom=expr COMMA dateTo=expr RPAREN # dateDiffAtom
|
|
218
|
+
| DATEADD LPAREN op=expr COMMA shiftNumber=expr COMMA periodInd=expr RPAREN # dateAddAtom
|
|
219
|
+
| YEAR_OP LPAREN expr RPAREN # yearAtom
|
|
220
|
+
| MONTH_OP LPAREN expr RPAREN # monthAtom
|
|
221
|
+
| DAYOFMONTH LPAREN expr RPAREN # dayOfMonthAtom
|
|
222
|
+
| DAYOFYEAR LPAREN expr RPAREN # dayOfYearAtom
|
|
223
|
+
| DAYTOYEAR LPAREN expr RPAREN # dayToYearAtom
|
|
224
|
+
| DAYTOMONTH LPAREN expr RPAREN # dayToMonthAtom
|
|
225
|
+
| YEARTODAY LPAREN expr RPAREN # yearToDayAtom
|
|
226
|
+
| MONTHTODAY LPAREN expr RPAREN # monthToDayAtom
|
|
227
|
+
;
|
|
228
|
+
|
|
229
|
+
timeOperatorsComponent:
|
|
230
|
+
PERIOD_INDICATOR LPAREN exprComponent? RPAREN # periodAtomComponent
|
|
231
|
+
| FILL_TIME_SERIES LPAREN exprComponent (COMMA (SINGLE|ALL))? RPAREN # fillTimeAtomComponent
|
|
232
|
+
| op=(FLOW_TO_STOCK | STOCK_TO_FLOW) LPAREN exprComponent RPAREN # flowAtomComponent
|
|
233
|
+
| TIMESHIFT LPAREN exprComponent COMMA signedInteger RPAREN # timeShiftAtomComponent
|
|
234
|
+
| TIME_AGG LPAREN periodIndTo=STRING_CONSTANT (COMMA periodIndFrom=(STRING_CONSTANT| OPTIONAL ))? (COMMA op=optionalExprComponent)? (COMMA (FIRST|LAST))? RPAREN # timeAggAtomComponent
|
|
235
|
+
| CURRENT_DATE LPAREN RPAREN # currentDateAtomComponent
|
|
236
|
+
| DATEDIFF LPAREN dateFrom=exprComponent COMMA dateTo=exprComponent RPAREN # dateDiffAtomComponent
|
|
237
|
+
| DATEADD LPAREN op=exprComponent COMMA shiftNumber=exprComponent COMMA periodInd=exprComponent RPAREN # dateAddAtomComponent
|
|
238
|
+
| YEAR_OP LPAREN exprComponent RPAREN # yearAtomComponent
|
|
239
|
+
| MONTH_OP LPAREN exprComponent RPAREN # monthAtomComponent
|
|
240
|
+
| DAYOFMONTH LPAREN exprComponent RPAREN # dayOfMonthAtomComponent
|
|
241
|
+
| DAYOFYEAR LPAREN exprComponent RPAREN # dayOfYearAtomComponent
|
|
242
|
+
| DAYTOYEAR LPAREN exprComponent RPAREN # dayToYearAtomComponent
|
|
243
|
+
| DAYTOMONTH LPAREN exprComponent RPAREN # dayToMonthAtomComponent
|
|
244
|
+
| YEARTODAY LPAREN exprComponent RPAREN # yearToDayAtomComponent
|
|
245
|
+
| MONTHTODAY LPAREN exprComponent RPAREN # monthToDayAtomComponent
|
|
246
|
+
;
|
|
247
|
+
|
|
248
|
+
setOperators:
|
|
249
|
+
UNION LPAREN left=expr (COMMA expr)+ RPAREN # unionAtom
|
|
250
|
+
| INTERSECT LPAREN left=expr (COMMA expr)+ RPAREN # intersectAtom
|
|
251
|
+
| op=(SETDIFF|SYMDIFF) LPAREN left=expr COMMA right=expr RPAREN # setOrSYmDiffAtom
|
|
252
|
+
;
|
|
253
|
+
/* hierarchy */
|
|
254
|
+
hierarchyOperators:
|
|
255
|
+
HIERARCHY LPAREN op=expr COMMA hrName=IDENTIFIER (conditionClause)? (RULE ruleComponent=componentID)? (validationMode)? (inputModeHierarchy)? outputModeHierarchy? RPAREN
|
|
256
|
+
;
|
|
257
|
+
|
|
258
|
+
validationOperators:
|
|
259
|
+
CHECK_DATAPOINT LPAREN op=expr COMMA dpName=IDENTIFIER (COMPONENTS componentID (COMMA componentID)*)? validationOutput? RPAREN # validateDPruleset
|
|
260
|
+
| CHECK_HIERARCHY LPAREN op=expr COMMA hrName=IDENTIFIER conditionClause? (RULE componentID)? validationMode? inputMode? validationOutput? RPAREN # validateHRruleset
|
|
261
|
+
| CHECK LPAREN op=expr (codeErr=erCode)? (levelCode=erLevel)? imbalanceExpr? output=(INVALID|ALL)? RPAREN # validationSimple
|
|
262
|
+
;
|
|
263
|
+
|
|
264
|
+
conditionalOperators:
|
|
265
|
+
NVL LPAREN left=expr COMMA right = expr RPAREN # nvlAtom
|
|
266
|
+
;
|
|
267
|
+
|
|
268
|
+
conditionalOperatorsComponent:
|
|
269
|
+
NVL LPAREN left=exprComponent COMMA right = exprComponent RPAREN # nvlAtomComponent
|
|
270
|
+
;
|
|
271
|
+
|
|
272
|
+
aggrOperators:
|
|
273
|
+
op =(SUM
|
|
274
|
+
| AVG
|
|
275
|
+
| COUNT
|
|
276
|
+
| MEDIAN
|
|
277
|
+
| MIN
|
|
278
|
+
| MAX
|
|
279
|
+
| STDDEV_POP
|
|
280
|
+
| STDDEV_SAMP
|
|
281
|
+
| VAR_POP
|
|
282
|
+
| VAR_SAMP) LPAREN exprComponent RPAREN # aggrComp
|
|
283
|
+
| COUNT LPAREN RPAREN # countAggrComp
|
|
284
|
+
|
|
285
|
+
;
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
aggrOperatorsGrouping:
|
|
289
|
+
op =(SUM
|
|
290
|
+
| AVG
|
|
291
|
+
| COUNT
|
|
292
|
+
| MEDIAN
|
|
293
|
+
| MIN
|
|
294
|
+
| MAX
|
|
295
|
+
| STDDEV_POP
|
|
296
|
+
| STDDEV_SAMP
|
|
297
|
+
| VAR_POP
|
|
298
|
+
| VAR_SAMP) LPAREN expr (groupingClause havingClause?)? RPAREN #aggrDataset
|
|
299
|
+
|
|
300
|
+
;
|
|
301
|
+
|
|
302
|
+
anFunction:
|
|
303
|
+
op = ( SUM
|
|
304
|
+
| AVG
|
|
305
|
+
| COUNT
|
|
306
|
+
| MEDIAN
|
|
307
|
+
| MIN
|
|
308
|
+
| MAX
|
|
309
|
+
| STDDEV_POP
|
|
310
|
+
| STDDEV_SAMP
|
|
311
|
+
| VAR_POP
|
|
312
|
+
| VAR_SAMP
|
|
313
|
+
| FIRST_VALUE
|
|
314
|
+
| LAST_VALUE)
|
|
315
|
+
LPAREN expr OVER LPAREN (partition=partitionByClause? orderBy=orderByClause? windowing=windowingClause?)RPAREN RPAREN #anSimpleFunction
|
|
316
|
+
| op=(LAG |LEAD) LPAREN expr (COMMA offset=signedInteger(COMMA defaultValue=scalarItem)?)? OVER LPAREN (partition=partitionByClause? orderBy=orderByClause) RPAREN RPAREN # lagOrLeadAn
|
|
317
|
+
| op=RATIO_TO_REPORT LPAREN expr OVER LPAREN (partition=partitionByClause) RPAREN RPAREN # ratioToReportAn
|
|
318
|
+
;
|
|
319
|
+
|
|
320
|
+
anFunctionComponent:
|
|
321
|
+
op = ( SUM
|
|
322
|
+
| AVG
|
|
323
|
+
| COUNT
|
|
324
|
+
| MEDIAN
|
|
325
|
+
| MIN
|
|
326
|
+
| MAX
|
|
327
|
+
| STDDEV_POP
|
|
328
|
+
| STDDEV_SAMP
|
|
329
|
+
| VAR_POP
|
|
330
|
+
| VAR_SAMP
|
|
331
|
+
| FIRST_VALUE
|
|
332
|
+
| LAST_VALUE)
|
|
333
|
+
LPAREN exprComponent OVER LPAREN (partition=partitionByClause? orderBy=orderByClause? windowing=windowingClause?)RPAREN RPAREN #anSimpleFunctionComponent
|
|
334
|
+
| op=(LAG |LEAD) LPAREN exprComponent (COMMA offet=signedInteger(defaultValue=scalarItem)?)? OVER LPAREN (partition=partitionByClause? orderBy=orderByClause) RPAREN RPAREN # lagOrLeadAnComponent
|
|
335
|
+
| op=RANK LPAREN OVER LPAREN (partition=partitionByClause? orderBy=orderByClause) RPAREN RPAREN # rankAnComponent
|
|
336
|
+
| op=RATIO_TO_REPORT LPAREN exprComponent OVER LPAREN (partition=partitionByClause) RPAREN RPAREN # ratioToReportAnComponent
|
|
337
|
+
;
|
|
338
|
+
/*---------------------------------------------------END FUNCTIONS-------------------------------------------------*/
|
|
339
|
+
|
|
340
|
+
/*-------------------------------------------------CLAUSE EXPRESSION------------------------------------------------*/
|
|
341
|
+
/*RENAME CLAUSE */
|
|
342
|
+
renameClauseItem:
|
|
343
|
+
fromName=componentID TO toName=componentID
|
|
344
|
+
;
|
|
345
|
+
|
|
346
|
+
/*END RENAME CLAUSE*/
|
|
347
|
+
|
|
348
|
+
/*AGGR CLAUSE*/
|
|
349
|
+
aggregateClause:
|
|
350
|
+
aggrFunctionClause (COMMA aggrFunctionClause)*
|
|
351
|
+
;
|
|
352
|
+
|
|
353
|
+
aggrFunctionClause:
|
|
354
|
+
(componentRole)? componentID ASSIGN aggrOperators
|
|
355
|
+
;
|
|
356
|
+
/*END AGGR CLAUSE*/
|
|
357
|
+
|
|
358
|
+
/*CALC CLAUSE*/
|
|
359
|
+
calcClauseItem:
|
|
360
|
+
(componentRole)? componentID ASSIGN exprComponent
|
|
361
|
+
;
|
|
362
|
+
/*END CALC CLAUSE*/
|
|
363
|
+
|
|
364
|
+
/*SUBSPACE CLAUSE*/
|
|
365
|
+
subspaceClauseItem:
|
|
366
|
+
componentID EQ (scalarItem | varID)
|
|
367
|
+
;
|
|
368
|
+
|
|
369
|
+
scalarItem:
|
|
370
|
+
constant #simpleScalar
|
|
371
|
+
| CAST LPAREN constant COMMA (basicScalarType) (COMMA STRING_CONSTANT)? RPAREN #scalarWithCast
|
|
372
|
+
;
|
|
373
|
+
/*END SUBSPACE CLAUSE*/
|
|
374
|
+
/*----------------------------------------------END CLAUSE EXPRESSION--------------------------------------*/
|
|
375
|
+
|
|
376
|
+
/*---------------------------------------------JOIN CLAUSE EXPRESSION---------------------------------------*/
|
|
377
|
+
|
|
378
|
+
joinClauseWithoutUsing:
|
|
379
|
+
joinClauseItem (COMMA joinClauseItem)*
|
|
380
|
+
;
|
|
381
|
+
|
|
382
|
+
joinClause:
|
|
383
|
+
joinClauseItem (COMMA joinClauseItem)* (USING componentID (COMMA componentID)*)?
|
|
384
|
+
;
|
|
385
|
+
|
|
386
|
+
joinClauseItem:
|
|
387
|
+
expr (AS alias)?
|
|
388
|
+
;
|
|
389
|
+
|
|
390
|
+
joinBody:
|
|
391
|
+
filterClause? (calcClause|joinApplyClause|aggrClause)? (keepOrDropClause)? renameClause?
|
|
392
|
+
;
|
|
393
|
+
|
|
394
|
+
/* JOIN APPLY CLAUSE*/
|
|
395
|
+
joinApplyClause:
|
|
396
|
+
APPLY expr
|
|
397
|
+
;
|
|
398
|
+
/* END JOIN APPLY CLAUSE*/
|
|
399
|
+
|
|
400
|
+
/*---------------------------------------------END JOIN CLAUSE EXPRESSION---------------------------------------*/
|
|
401
|
+
|
|
402
|
+
/*-----------------------------------------ANALYTIC CLAUSE -----------------------------------------------*/
|
|
403
|
+
|
|
404
|
+
partitionByClause:
|
|
405
|
+
PARTITION BY componentID (COMMA componentID)*
|
|
406
|
+
;
|
|
407
|
+
|
|
408
|
+
orderByClause:
|
|
409
|
+
ORDER BY orderByItem (COMMA orderByItem)*
|
|
410
|
+
;
|
|
411
|
+
|
|
412
|
+
orderByItem:
|
|
413
|
+
componentID (ASC|DESC)?
|
|
414
|
+
;
|
|
415
|
+
|
|
416
|
+
windowingClause:
|
|
417
|
+
((DATA POINTS)|RANGE) BETWEEN from_=limitClauseItem AND to_=limitClauseItem
|
|
418
|
+
;
|
|
419
|
+
|
|
420
|
+
signedInteger:
|
|
421
|
+
INTEGER_CONSTANT
|
|
422
|
+
;
|
|
423
|
+
|
|
424
|
+
limitClauseItem:
|
|
425
|
+
INTEGER_CONSTANT PRECEDING
|
|
426
|
+
| INTEGER_CONSTANT FOLLOWING
|
|
427
|
+
| CURRENT DATA POINT
|
|
428
|
+
| UNBOUNDED PRECEDING
|
|
429
|
+
| UNBOUNDED FOLLOWING
|
|
430
|
+
;
|
|
431
|
+
|
|
432
|
+
/*--------------------------------------------END ANALYTIC CLAUSE -----------------------------------------------*/
|
|
433
|
+
/* ------------------------------------------------------------ GROUPING CLAUSE ------------------------------------*/
|
|
434
|
+
groupingClause:
|
|
435
|
+
GROUP op=(BY | EXCEPT) componentID (COMMA componentID)* # groupByOrExcept
|
|
436
|
+
| GROUP ALL exprComponent # groupAll
|
|
437
|
+
;
|
|
438
|
+
|
|
439
|
+
havingClause:
|
|
440
|
+
HAVING exprComponent
|
|
441
|
+
;
|
|
442
|
+
/*-------------------------------------------END GROUPING CLAUSE-----------------------------------------------------*/
|
|
443
|
+
|
|
444
|
+
/*------------------------------------------------DEFINE OPERATOR ---------------------------------------------------*/
|
|
445
|
+
|
|
446
|
+
parameterItem:
|
|
447
|
+
varID inputParameterType (DEFAULT scalarItem)?
|
|
448
|
+
;
|
|
449
|
+
|
|
450
|
+
outputParameterType:
|
|
451
|
+
scalarType
|
|
452
|
+
| datasetType
|
|
453
|
+
| componentType
|
|
454
|
+
;
|
|
455
|
+
|
|
456
|
+
outputParameterTypeComponent:
|
|
457
|
+
componentType
|
|
458
|
+
|scalarType
|
|
459
|
+
;
|
|
460
|
+
|
|
461
|
+
inputParameterType:
|
|
462
|
+
scalarType
|
|
463
|
+
| datasetType
|
|
464
|
+
| scalarSetType
|
|
465
|
+
| rulesetType
|
|
466
|
+
| componentType
|
|
467
|
+
;
|
|
468
|
+
|
|
469
|
+
rulesetType:
|
|
470
|
+
RULESET
|
|
471
|
+
| dpRuleset
|
|
472
|
+
| hrRuleset
|
|
473
|
+
;
|
|
474
|
+
|
|
475
|
+
scalarType:
|
|
476
|
+
(basicScalarType|valueDomainName)scalarTypeConstraint?((NOT)? NULL_CONSTANT)?
|
|
477
|
+
;
|
|
478
|
+
|
|
479
|
+
componentType:
|
|
480
|
+
componentRole ( LT scalarType MT )?
|
|
481
|
+
;
|
|
482
|
+
|
|
483
|
+
datasetType:
|
|
484
|
+
DATASET ( GLPAREN compConstraint (COMMA compConstraint)* GRPAREN )?
|
|
485
|
+
|
|
486
|
+
;
|
|
487
|
+
|
|
488
|
+
evalDatasetType:
|
|
489
|
+
datasetType
|
|
490
|
+
| scalarType
|
|
491
|
+
;
|
|
492
|
+
|
|
493
|
+
scalarSetType:
|
|
494
|
+
SET ( LT scalarType MT )?
|
|
495
|
+
;
|
|
496
|
+
|
|
497
|
+
dpRuleset:
|
|
498
|
+
DATAPOINT # dataPoint
|
|
499
|
+
| DATAPOINT_ON_VD (GLPAREN valueDomainName (MUL valueDomainName)* GRPAREN )? # dataPointVd
|
|
500
|
+
| DATAPOINT_ON_VAR (GLPAREN varID (MUL varID)* GRPAREN )? # dataPointVar
|
|
501
|
+
;
|
|
502
|
+
|
|
503
|
+
hrRuleset:
|
|
504
|
+
HIERARCHICAL # hrRulesetType
|
|
505
|
+
| HIERARCHICAL_ON_VD ( GLPAREN vdName=IDENTIFIER (LPAREN valueDomainName (MUL valueDomainName)* RPAREN)? GRPAREN )? # hrRulesetVdType
|
|
506
|
+
| HIERARCHICAL_ON_VAR ( GLPAREN varName=varID (LPAREN varID (MUL varID)* RPAREN)? GRPAREN )? # hrRulesetVarType
|
|
507
|
+
;
|
|
508
|
+
|
|
509
|
+
valueDomainName:
|
|
510
|
+
IDENTIFIER
|
|
511
|
+
;
|
|
512
|
+
|
|
513
|
+
rulesetID:
|
|
514
|
+
IDENTIFIER
|
|
515
|
+
;
|
|
516
|
+
|
|
517
|
+
rulesetSignature:
|
|
518
|
+
(VALUE_DOMAIN|VARIABLE) signature (COMMA signature)*
|
|
519
|
+
;
|
|
520
|
+
|
|
521
|
+
signature:
|
|
522
|
+
varID (AS alias)?
|
|
523
|
+
;
|
|
524
|
+
|
|
525
|
+
ruleClauseDatapoint:
|
|
526
|
+
ruleItemDatapoint ( EOL ruleItemDatapoint)*
|
|
527
|
+
;
|
|
528
|
+
|
|
529
|
+
ruleItemDatapoint:
|
|
530
|
+
(ruleName=IDENTIFIER COLON )? ( WHEN antecedentContiditon=exprComponent THEN )? consequentCondition=exprComponent (erCode)? (erLevel)?
|
|
531
|
+
;
|
|
532
|
+
|
|
533
|
+
ruleClauseHierarchical:
|
|
534
|
+
ruleItemHierarchical ( EOL ruleItemHierarchical)*
|
|
535
|
+
;
|
|
536
|
+
|
|
537
|
+
ruleItemHierarchical:
|
|
538
|
+
(ruleName=IDENTIFIER COLON )? codeItemRelation (erCode)? (erLevel)?
|
|
539
|
+
;
|
|
540
|
+
|
|
541
|
+
hierRuleSignature:
|
|
542
|
+
(VALUE_DOMAIN|VARIABLE) (CONDITION valueDomainSignature)? RULE IDENTIFIER
|
|
543
|
+
;
|
|
544
|
+
|
|
545
|
+
valueDomainSignature:
|
|
546
|
+
signature (COMMA signature)*
|
|
547
|
+
;
|
|
548
|
+
|
|
549
|
+
codeItemRelation:
|
|
550
|
+
( WHEN exprComponent THEN )? codetemRef=valueDomainValue comparisonOperand? codeItemRelationClause (codeItemRelationClause)*
|
|
551
|
+
;
|
|
552
|
+
|
|
553
|
+
codeItemRelationClause:
|
|
554
|
+
(opAdd=( PLUS | MINUS ))? rightCodeItem=valueDomainValue ( QLPAREN rightCondition=exprComponent QRPAREN )?
|
|
555
|
+
;
|
|
556
|
+
|
|
557
|
+
valueDomainValue:
|
|
558
|
+
IDENTIFIER
|
|
559
|
+
| INTEGER_CONSTANT
|
|
560
|
+
| NUMBER_CONSTANT
|
|
561
|
+
;
|
|
562
|
+
|
|
563
|
+
scalarTypeConstraint:
|
|
564
|
+
QLPAREN exprComponent QRPAREN # conditionConstraint
|
|
565
|
+
| GLPAREN scalarItem (COMMA scalarItem)* GRPAREN # rangeConstraint
|
|
566
|
+
;
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
compConstraint:
|
|
570
|
+
componentType (componentID|multModifier)
|
|
571
|
+
;
|
|
572
|
+
|
|
573
|
+
multModifier:
|
|
574
|
+
OPTIONAL ( PLUS | MUL )?
|
|
575
|
+
;
|
|
576
|
+
|
|
577
|
+
/*--------------------------------------------END DEFINE OPERATOR ---------------------------------------------------*/
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
/*------------------------------------------VALIDATION OPERATOR ---------------------------------------------------*/
|
|
581
|
+
validationOutput:
|
|
582
|
+
INVALID|ALL_MEASURES|ALL
|
|
583
|
+
;
|
|
584
|
+
|
|
585
|
+
validationMode:
|
|
586
|
+
NON_NULL|NON_ZERO|PARTIAL_NULL|PARTIAL_ZERO|ALWAYS_NULL|ALWAYS_ZERO
|
|
587
|
+
;
|
|
588
|
+
|
|
589
|
+
conditionClause:
|
|
590
|
+
CONDITION componentID (COMMA componentID)*
|
|
591
|
+
;
|
|
592
|
+
|
|
593
|
+
inputMode:
|
|
594
|
+
DATASET|DATASET_PRIORITY
|
|
595
|
+
;
|
|
596
|
+
|
|
597
|
+
imbalanceExpr:
|
|
598
|
+
IMBALANCE expr
|
|
599
|
+
;
|
|
600
|
+
|
|
601
|
+
inputModeHierarchy:
|
|
602
|
+
RULE|DATASET|RULE_PRIORITY
|
|
603
|
+
;
|
|
604
|
+
|
|
605
|
+
outputModeHierarchy:
|
|
606
|
+
COMPUTED|ALL
|
|
607
|
+
;
|
|
608
|
+
/*--------------------------------------END VALIDATION OPERATOR ---------------------------------------------------*/
|
|
609
|
+
alias:
|
|
610
|
+
IDENTIFIER
|
|
611
|
+
;
|
|
612
|
+
|
|
613
|
+
varID:
|
|
614
|
+
IDENTIFIER
|
|
615
|
+
;
|
|
616
|
+
|
|
617
|
+
simpleComponentId:
|
|
618
|
+
IDENTIFIER
|
|
619
|
+
;
|
|
620
|
+
|
|
621
|
+
componentID:
|
|
622
|
+
IDENTIFIER (MEMBERSHIP IDENTIFIER)?
|
|
623
|
+
;
|
|
624
|
+
|
|
625
|
+
lists:
|
|
626
|
+
GLPAREN scalarItem (COMMA scalarItem)* GRPAREN
|
|
627
|
+
;
|
|
628
|
+
|
|
629
|
+
erCode:
|
|
630
|
+
ERRORCODE constant
|
|
631
|
+
;
|
|
632
|
+
|
|
633
|
+
erLevel:
|
|
634
|
+
ERRORLEVEL constant
|
|
635
|
+
;
|
|
636
|
+
|
|
637
|
+
comparisonOperand:
|
|
638
|
+
MT
|
|
639
|
+
| ME
|
|
640
|
+
| LE
|
|
641
|
+
| LT
|
|
642
|
+
| EQ
|
|
643
|
+
| NEQ
|
|
644
|
+
;
|
|
645
|
+
|
|
646
|
+
/* Conditional */
|
|
647
|
+
optionalExpr:
|
|
648
|
+
expr
|
|
649
|
+
| OPTIONAL
|
|
650
|
+
;
|
|
651
|
+
|
|
652
|
+
optionalExprComponent:
|
|
653
|
+
exprComponent
|
|
654
|
+
| OPTIONAL
|
|
655
|
+
;
|
|
656
|
+
/* Role name*/
|
|
657
|
+
componentRole:
|
|
658
|
+
MEASURE
|
|
659
|
+
| COMPONENT
|
|
660
|
+
| DIMENSION
|
|
661
|
+
| ATTRIBUTE
|
|
662
|
+
| viralAttribute
|
|
663
|
+
;
|
|
664
|
+
|
|
665
|
+
viralAttribute:
|
|
666
|
+
VIRAL ATTRIBUTE
|
|
667
|
+
;
|
|
668
|
+
|
|
669
|
+
valueDomainID:
|
|
670
|
+
IDENTIFIER
|
|
671
|
+
;
|
|
672
|
+
|
|
673
|
+
operatorID:
|
|
674
|
+
IDENTIFIER
|
|
675
|
+
;
|
|
676
|
+
|
|
677
|
+
routineName:
|
|
678
|
+
IDENTIFIER
|
|
679
|
+
;
|
|
680
|
+
|
|
681
|
+
constant:
|
|
682
|
+
INTEGER_CONSTANT
|
|
683
|
+
| NUMBER_CONSTANT
|
|
684
|
+
| BOOLEAN_CONSTANT
|
|
685
|
+
| STRING_CONSTANT
|
|
686
|
+
| NULL_CONSTANT
|
|
687
|
+
;
|
|
688
|
+
|
|
689
|
+
basicScalarType:
|
|
690
|
+
STRING
|
|
691
|
+
| INTEGER
|
|
692
|
+
| NUMBER
|
|
693
|
+
| BOOLEAN
|
|
694
|
+
| DATE
|
|
695
|
+
| TIME
|
|
696
|
+
| TIME_PERIOD
|
|
697
|
+
| DURATION
|
|
698
|
+
| SCALAR
|
|
699
|
+
|
|
700
|
+
;
|
|
701
|
+
|
|
702
|
+
retainType:
|
|
703
|
+
BOOLEAN_CONSTANT
|
|
704
|
+
| ALL
|
|
705
|
+
;
|