@malloydata/malloy-tests 0.0.66-dev230807232724

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.
Files changed (169) hide show
  1. package/README.md +29 -0
  2. package/bin/dump_malloytest.sh +1 -0
  3. package/bin/postgres_init.sh +9 -0
  4. package/bin/postgres_start.sh +2 -0
  5. package/bin/postgres_stop.sh +2 -0
  6. package/data/duckdb/README.md +4 -0
  7. package/data/duckdb/aircraft.parquet +0 -0
  8. package/data/duckdb/aircraft_models.parquet +0 -0
  9. package/data/duckdb/airports.parquet +0 -0
  10. package/data/duckdb/alltypes.parquet +0 -0
  11. package/data/duckdb/alltypes2.parquet +0 -0
  12. package/data/duckdb/bq_medicare_test.parquet +0 -0
  13. package/data/duckdb/carriers.parquet +0 -0
  14. package/data/duckdb/flights/part.0.parquet +0 -0
  15. package/data/duckdb/flights/part.1.parquet +0 -0
  16. package/data/duckdb/flights/part.2.parquet +0 -0
  17. package/data/duckdb/flights.parquet +0 -0
  18. package/data/duckdb/flights_partitioned.parquet +0 -0
  19. package/data/duckdb/ga_sample.parquet +0 -0
  20. package/data/duckdb/numbers.parquet +0 -0
  21. package/data/duckdb/state_facts.parquet +0 -0
  22. package/data/duckdb/test.json +3 -0
  23. package/data/duckdb/words.parquet +0 -0
  24. package/data/duckdb/words_bigger.parquet +0 -0
  25. package/data/postgres/malloytest-postgres.sql.gz +0 -0
  26. package/data/postgres/state_facts.sql +366 -0
  27. package/dist/api.spec.d.ts +1 -0
  28. package/dist/api.spec.js +77 -0
  29. package/dist/api.spec.js.map +1 -0
  30. package/dist/databases/all/expr.spec.d.ts +3 -0
  31. package/dist/databases/all/expr.spec.js +581 -0
  32. package/dist/databases/all/expr.spec.js.map +1 -0
  33. package/dist/databases/all/functions.spec.d.ts +2 -0
  34. package/dist/databases/all/functions.spec.js +784 -0
  35. package/dist/databases/all/functions.spec.js.map +1 -0
  36. package/dist/databases/all/index.spec.d.ts +2 -0
  37. package/dist/databases/all/index.spec.js +154 -0
  38. package/dist/databases/all/index.spec.js.map +1 -0
  39. package/dist/databases/all/join.spec.d.ts +2 -0
  40. package/dist/databases/all/join.spec.js +309 -0
  41. package/dist/databases/all/join.spec.js.map +1 -0
  42. package/dist/databases/all/nomodel.spec.d.ts +2 -0
  43. package/dist/databases/all/nomodel.spec.js +957 -0
  44. package/dist/databases/all/nomodel.spec.js.map +1 -0
  45. package/dist/databases/all/orderby.spec.d.ts +2 -0
  46. package/dist/databases/all/orderby.spec.js +224 -0
  47. package/dist/databases/all/orderby.spec.js.map +1 -0
  48. package/dist/databases/all/problems.spec.d.ts +2 -0
  49. package/dist/databases/all/problems.spec.js +113 -0
  50. package/dist/databases/all/problems.spec.js.map +1 -0
  51. package/dist/databases/all/sql_expressions.spec.d.ts +2 -0
  52. package/dist/databases/all/sql_expressions.spec.js +96 -0
  53. package/dist/databases/all/sql_expressions.spec.js.map +1 -0
  54. package/dist/databases/all/time.spec.d.ts +3 -0
  55. package/dist/databases/all/time.spec.js +647 -0
  56. package/dist/databases/all/time.spec.js.map +1 -0
  57. package/dist/databases/bigquery/double_truncation.spec.d.ts +1 -0
  58. package/dist/databases/bigquery/double_truncation.spec.js +50 -0
  59. package/dist/databases/bigquery/double_truncation.spec.js.map +1 -0
  60. package/dist/databases/bigquery/handexpr.spec.d.ts +1 -0
  61. package/dist/databases/bigquery/handexpr.spec.js +713 -0
  62. package/dist/databases/bigquery/handexpr.spec.js.map +1 -0
  63. package/dist/databases/bigquery/injestion_time_partitioning.spec.d.ts +1 -0
  64. package/dist/databases/bigquery/injestion_time_partitioning.spec.js +235 -0
  65. package/dist/databases/bigquery/injestion_time_partitioning.spec.js.map +1 -0
  66. package/dist/databases/bigquery/joined_filters.spec.d.ts +1 -0
  67. package/dist/databases/bigquery/joined_filters.spec.js +72 -0
  68. package/dist/databases/bigquery/joined_filters.spec.js.map +1 -0
  69. package/dist/databases/bigquery/json.spec.d.ts +1 -0
  70. package/dist/databases/bigquery/json.spec.js +86 -0
  71. package/dist/databases/bigquery/json.spec.js.map +1 -0
  72. package/dist/databases/bigquery/malloy_query.spec.d.ts +1 -0
  73. package/dist/databases/bigquery/malloy_query.spec.js +906 -0
  74. package/dist/databases/bigquery/malloy_query.spec.js.map +1 -0
  75. package/dist/databases/bigquery/performance.skipped.spec.d.ts +1 -0
  76. package/dist/databases/bigquery/performance.skipped.spec.js +70 -0
  77. package/dist/databases/bigquery/performance.skipped.spec.js.map +1 -0
  78. package/dist/databases/bigquery/time.spec.d.ts +1 -0
  79. package/dist/databases/bigquery/time.spec.js +55 -0
  80. package/dist/databases/bigquery/time.spec.js.map +1 -0
  81. package/dist/databases/bigquery/wildcard_table_names.spec.d.ts +1 -0
  82. package/dist/databases/bigquery/wildcard_table_names.spec.js +212 -0
  83. package/dist/databases/bigquery/wildcard_table_names.spec.js.map +1 -0
  84. package/dist/databases/bigquery-duckdb/nested_source_table.spec.d.ts +1 -0
  85. package/dist/databases/bigquery-duckdb/nested_source_table.spec.js +247 -0
  86. package/dist/databases/bigquery-duckdb/nested_source_table.spec.js.map +1 -0
  87. package/dist/databases/bigquery-postgres/multi_connection.spec.d.ts +1 -0
  88. package/dist/databases/bigquery-postgres/multi_connection.spec.js +138 -0
  89. package/dist/databases/bigquery-postgres/multi_connection.spec.js.map +1 -0
  90. package/dist/databases/bigquery-postgres/streaming.spec.d.ts +1 -0
  91. package/dist/databases/bigquery-postgres/streaming.spec.js +88 -0
  92. package/dist/databases/bigquery-postgres/streaming.spec.js.map +1 -0
  93. package/dist/databases/duckdb/duckdb.spec.d.ts +1 -0
  94. package/dist/databases/duckdb/duckdb.spec.js +116 -0
  95. package/dist/databases/duckdb/duckdb.spec.js.map +1 -0
  96. package/dist/databases/postgres/postgres.spec.d.ts +1 -0
  97. package/dist/databases/postgres/postgres.spec.js +137 -0
  98. package/dist/databases/postgres/postgres.spec.js.map +1 -0
  99. package/dist/databases/shared/test_list.d.ts +3 -0
  100. package/dist/databases/shared/test_list.js +24 -0
  101. package/dist/databases/shared/test_list.js.map +1 -0
  102. package/dist/dependencies.spec.d.ts +1 -0
  103. package/dist/dependencies.spec.js +63 -0
  104. package/dist/dependencies.spec.js.map +1 -0
  105. package/dist/index.d.ts +11 -0
  106. package/dist/index.js +49 -0
  107. package/dist/index.js.map +1 -0
  108. package/dist/model/utils.spec.d.ts +1 -0
  109. package/dist/model/utils.spec.js +38 -0
  110. package/dist/model/utils.spec.js.map +1 -0
  111. package/dist/models/faa_model.d.ts +5 -0
  112. package/dist/models/faa_model.js +977 -0
  113. package/dist/models/faa_model.js.map +1 -0
  114. package/dist/models/medicare_model.d.ts +4 -0
  115. package/dist/models/medicare_model.js +243 -0
  116. package/dist/models/medicare_model.js.map +1 -0
  117. package/dist/render/render.spec.d.ts +1 -0
  118. package/dist/render/render.spec.js +551 -0
  119. package/dist/render/render.spec.js.map +1 -0
  120. package/dist/runtimes.d.ts +33 -0
  121. package/dist/runtimes.js +147 -0
  122. package/dist/runtimes.js.map +1 -0
  123. package/dist/tags.spec.d.ts +1 -0
  124. package/dist/tags.spec.js +259 -0
  125. package/dist/tags.spec.js.map +1 -0
  126. package/dist/util/db-jest-matchers.d.ts +19 -0
  127. package/dist/util/db-jest-matchers.js +90 -0
  128. package/dist/util/db-jest-matchers.js.map +1 -0
  129. package/dist/util/index.d.ts +16 -0
  130. package/dist/util/index.js +171 -0
  131. package/dist/util/index.js.map +1 -0
  132. package/package.json +35 -0
  133. package/src/api.spec.ts +84 -0
  134. package/src/databases/all/expr.spec.ts +704 -0
  135. package/src/databases/all/functions.spec.ts +1135 -0
  136. package/src/databases/all/index.spec.ts +178 -0
  137. package/src/databases/all/join.spec.ts +350 -0
  138. package/src/databases/all/nomodel.spec.ts +1159 -0
  139. package/src/databases/all/orderby.spec.ts +268 -0
  140. package/src/databases/all/problems.spec.ts +121 -0
  141. package/src/databases/all/sql_expressions.spec.ts +107 -0
  142. package/src/databases/all/time.spec.ts +793 -0
  143. package/src/databases/bigquery/double_truncation.spec.ts +51 -0
  144. package/src/databases/bigquery/handexpr.spec.ts +782 -0
  145. package/src/databases/bigquery/injestion_time_partitioning.spec.ts +268 -0
  146. package/src/databases/bigquery/joined_filters.spec.ts +75 -0
  147. package/src/databases/bigquery/json.spec.ts +95 -0
  148. package/src/databases/bigquery/malloy_query.spec.ts +1036 -0
  149. package/src/databases/bigquery/performance.skipped.spec.ts +73 -0
  150. package/src/databases/bigquery/time.spec.ts +59 -0
  151. package/src/databases/bigquery/wildcard_table_names.spec.ts +233 -0
  152. package/src/databases/bigquery-duckdb/nested_source_table.spec.ts +268 -0
  153. package/src/databases/bigquery-postgres/multi_connection.spec.ts +143 -0
  154. package/src/databases/bigquery-postgres/streaming.spec.ts +100 -0
  155. package/src/databases/duckdb/duckdb.spec.ts +131 -0
  156. package/src/databases/postgres/postgres.spec.ts +167 -0
  157. package/src/databases/shared/test_list.ts +24 -0
  158. package/src/dependencies.spec.ts +62 -0
  159. package/src/index.ts +36 -0
  160. package/src/model/utils.spec.ts +37 -0
  161. package/src/models/faa_model.ts +995 -0
  162. package/src/models/medicare_model.ts +246 -0
  163. package/src/render/__snapshots__/render.spec.ts.snap +12574 -0
  164. package/src/render/render.spec.ts +670 -0
  165. package/src/runtimes.ts +182 -0
  166. package/src/tags.spec.ts +277 -0
  167. package/src/util/db-jest-matchers.ts +128 -0
  168. package/src/util/index.ts +191 -0
  169. package/tsconfig.json +25 -0
@@ -0,0 +1,977 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2023 Google LLC
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining
6
+ * a copy of this software and associated documentation files
7
+ * (the "Software"), to deal in the Software without restriction,
8
+ * including without limitation the rights to use, copy, modify, merge,
9
+ * publish, distribute, sublicense, and/or sell copies of the Software,
10
+ * and to permit persons to whom the Software is furnished to do so,
11
+ * subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be
14
+ * included in all copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.testModel = exports.FLIGHTS_EXPLORE = void 0;
26
+ const util_1 = require("../util");
27
+ const medicare_model_1 = require("./medicare_model");
28
+ function withJoin(leftKey, rightKey) {
29
+ return {
30
+ type: 'one',
31
+ onExpression: [
32
+ { type: 'field', path: `${leftKey}` },
33
+ '=',
34
+ { type: 'field', path: `${rightKey}` },
35
+ ],
36
+ };
37
+ }
38
+ /** Flight Model */
39
+ exports.FLIGHTS_EXPLORE = {
40
+ type: 'struct',
41
+ name: 'malloy-data.malloytest.flights',
42
+ as: 'flights',
43
+ dialect: 'standardsql',
44
+ structSource: {
45
+ type: 'table',
46
+ tablePath: 'malloy-data.malloytest.flights',
47
+ },
48
+ structRelationship: { type: 'basetable', connectionName: 'bigquery' },
49
+ primaryKey: 'id2',
50
+ fields: [
51
+ // Fields in the flights table.
52
+ { type: 'string', name: 'carrier' },
53
+ { type: 'string', name: 'origin', as: 'origin_code' },
54
+ { type: 'timestamp', name: 'dep_time' },
55
+ { type: 'string', name: 'destination', as: 'destination_code' },
56
+ { type: 'string', name: 'flight_num' },
57
+ { type: 'number', name: 'flight_time', numberType: 'integer' },
58
+ { type: 'string', name: 'tail_num' },
59
+ { type: 'number', name: 'dep_delay', numberType: 'integer' },
60
+ { type: 'number', name: 'arr_delay', numberType: 'integer' },
61
+ { type: 'number', name: 'taxi_out', numberType: 'integer' },
62
+ { type: 'number', name: 'taxi_in', numberType: 'integer' },
63
+ { type: 'number', name: 'distance', numberType: 'integer' },
64
+ { type: 'string', name: 'cancelled' },
65
+ { type: 'string', name: 'diverted' },
66
+ { type: 'number', name: 'id2', numberType: 'integer' },
67
+ {
68
+ type: 'number',
69
+ name: 'flight_count',
70
+ expressionType: 'aggregate',
71
+ e: [{ type: 'aggregate', function: 'count', e: [] }],
72
+ },
73
+ {
74
+ type: 'number',
75
+ name: 'total_distance',
76
+ expressionType: 'aggregate',
77
+ e: [
78
+ {
79
+ type: 'aggregate',
80
+ function: 'sum',
81
+ e: [{ type: 'field', path: 'distance' }],
82
+ },
83
+ ],
84
+ },
85
+ // carriers
86
+ {
87
+ type: 'struct',
88
+ name: 'malloy-data.malloytest.carriers',
89
+ as: 'carriers',
90
+ dialect: 'standardsql',
91
+ structSource: {
92
+ type: 'table',
93
+ tablePath: 'malloy-data.malloytest.carriers',
94
+ },
95
+ structRelationship: {
96
+ type: 'one',
97
+ onExpression: [
98
+ { type: 'field', path: 'carrier' },
99
+ '=',
100
+ { type: 'field', path: 'carriers.code' },
101
+ ],
102
+ },
103
+ primaryKey: 'code',
104
+ fields: [
105
+ { type: 'string', name: 'code' },
106
+ { type: 'string', name: 'name' },
107
+ { type: 'string', name: 'nickname' },
108
+ ],
109
+ },
110
+ // aircraft
111
+ {
112
+ type: 'struct',
113
+ name: 'malloy-data.malloytest.aircraft',
114
+ as: 'aircraft',
115
+ dialect: 'standardsql',
116
+ structSource: {
117
+ type: 'table',
118
+ tablePath: 'malloy-data.malloytest.aircraft',
119
+ },
120
+ structRelationship: withJoin('tail_num', 'aircraft.tail_num'),
121
+ primaryKey: 'tail_num',
122
+ fields: [
123
+ { type: 'string', name: 'tail_num' },
124
+ { type: 'string', name: 'aircraft_serial' },
125
+ { type: 'string', name: 'aircraft_model_code' },
126
+ { type: 'string', name: 'aircraft_engine_code' },
127
+ { type: 'number', name: 'year_built', numberType: 'integer' },
128
+ {
129
+ type: 'number',
130
+ name: 'aircraft_type_id',
131
+ numberType: 'integer',
132
+ },
133
+ {
134
+ type: 'number',
135
+ name: 'aircraft_engine_type_id',
136
+ numberType: 'integer',
137
+ },
138
+ {
139
+ type: 'number',
140
+ name: 'registrant_type_id',
141
+ numberType: 'integer',
142
+ },
143
+ { type: 'string', name: 'name' },
144
+ { type: 'string', name: 'address1' },
145
+ { type: 'string', name: 'address2' },
146
+ { type: 'string', name: 'city' },
147
+ { type: 'string', name: 'state' },
148
+ { type: 'string', name: 'zip' },
149
+ { type: 'string', name: 'region' },
150
+ { type: 'string', name: 'county' },
151
+ { type: 'string', name: 'country' },
152
+ { type: 'string', name: 'certification' },
153
+ { type: 'string', name: 'status_code' },
154
+ { type: 'string', name: 'mode_s_code' },
155
+ { type: 'string', name: 'fract_owner' },
156
+ {
157
+ type: 'number',
158
+ name: 'aircraft_count',
159
+ expressionType: 'aggregate',
160
+ e: [{ type: 'aggregate', function: 'count', e: [] }],
161
+ },
162
+ {
163
+ type: 'number',
164
+ name: 'total_engines',
165
+ expressionType: 'aggregate',
166
+ e: [
167
+ {
168
+ type: 'aggregate',
169
+ function: 'sum',
170
+ e: [{ type: 'field', path: 'aircraft_models.engines' }],
171
+ },
172
+ ],
173
+ },
174
+ // subjoin aircraft models
175
+ {
176
+ type: 'struct',
177
+ name: 'malloy-data.malloytest.aircraft_models',
178
+ as: 'aircraft_models',
179
+ dialect: 'standardsql',
180
+ primaryKey: 'aircraft_model_code',
181
+ structSource: {
182
+ type: 'table',
183
+ tablePath: 'malloy-data.malloytest.aircraft_models',
184
+ },
185
+ structRelationship: withJoin('aircraft_model_code', 'aircraft_models.aircraft_model_code'),
186
+ fields: [
187
+ { type: 'string', name: 'aircraft_model_code' },
188
+ { type: 'string', name: 'manufacturer' },
189
+ { type: 'string', name: 'model' },
190
+ {
191
+ type: 'number',
192
+ name: 'aircraft_type_id',
193
+ numberType: 'integer',
194
+ },
195
+ {
196
+ type: 'number',
197
+ name: 'aircraft_engine_type_id',
198
+ numberType: 'integer',
199
+ },
200
+ {
201
+ type: 'number',
202
+ name: 'aircraft_category_id',
203
+ numberType: 'integer',
204
+ },
205
+ { type: 'number', name: 'amateur', numberType: 'integer' },
206
+ { type: 'number', name: 'engines', numberType: 'integer' },
207
+ { type: 'number', name: 'seats', numberType: 'integer' },
208
+ { type: 'number', name: 'weight', numberType: 'integer' },
209
+ { type: 'number', name: 'speed', numberType: 'integer' },
210
+ {
211
+ type: 'number',
212
+ expressionType: 'aggregate',
213
+ name: 'total_seats',
214
+ e: [
215
+ {
216
+ type: 'aggregate',
217
+ function: 'sum',
218
+ e: [{ type: 'field', path: 'seats' }],
219
+ },
220
+ ],
221
+ },
222
+ ],
223
+ },
224
+ ],
225
+ },
226
+ // origin
227
+ {
228
+ type: 'struct',
229
+ name: 'malloy-data.malloytest.airports',
230
+ as: 'origin',
231
+ dialect: 'standardsql',
232
+ structSource: {
233
+ type: 'table',
234
+ tablePath: 'malloy-data.malloytest.airports',
235
+ },
236
+ structRelationship: withJoin('origin_code', 'origin.code'),
237
+ primaryKey: 'code',
238
+ fields: [
239
+ { type: 'number', name: 'id', numberType: 'integer' },
240
+ { type: 'string', name: 'code' },
241
+ { type: 'string', name: 'site_number' },
242
+ { type: 'string', name: 'fac_type', as: 'facility_type' },
243
+ { type: 'string', name: 'fac_use', as: 'facility_use' },
244
+ { type: 'string', name: 'faa_region' },
245
+ { type: 'string', name: 'faa_dist' },
246
+ { type: 'string', name: 'city' },
247
+ { type: 'string', name: 'county' },
248
+ { type: 'string', name: 'state' },
249
+ { type: 'string', name: 'full_name' },
250
+ { type: 'string', name: 'own_type' },
251
+ { type: 'number', name: 'longitude', numberType: 'float' },
252
+ { type: 'number', name: 'latitude', numberType: 'float' },
253
+ { type: 'number', name: 'elevation', numberType: 'integer' },
254
+ { type: 'string', name: 'aero_cht' },
255
+ { type: 'number', name: 'cbd_dist', numberType: 'integer' },
256
+ { type: 'string', name: 'cbd_dir' },
257
+ { type: 'string', name: 'act_date' },
258
+ { type: 'string', name: 'cert' },
259
+ { type: 'string', name: 'fed_agree' },
260
+ { type: 'string', name: 'cust_intl' },
261
+ { type: 'string', name: 'c_ldg_rts' },
262
+ { type: 'string', name: 'joint_use' },
263
+ { type: 'string', name: 'mil_rts' },
264
+ { type: 'string', name: 'cntl_twr' },
265
+ { type: 'string', name: 'major' },
266
+ {
267
+ type: 'number',
268
+ name: 'count',
269
+ expressionType: 'aggregate',
270
+ e: [{ type: 'aggregate', function: 'count', e: [] }],
271
+ },
272
+ ],
273
+ },
274
+ // destination
275
+ {
276
+ type: 'struct',
277
+ name: 'malloy-data.malloytest.airports',
278
+ as: 'destination',
279
+ dialect: 'standardsql',
280
+ structSource: {
281
+ type: 'table',
282
+ tablePath: 'malloy-data.malloytest.airports',
283
+ },
284
+ structRelationship: withJoin('destination_code', 'destination.code'),
285
+ primaryKey: 'code',
286
+ fields: [
287
+ { type: 'number', name: 'id', numberType: 'integer' },
288
+ { type: 'string', name: 'code' },
289
+ { type: 'string', name: 'site_number' },
290
+ { type: 'string', name: 'fac_type', as: 'facility_type' },
291
+ { type: 'string', name: 'fac_use', as: 'facility_use' },
292
+ { type: 'string', name: 'faa_region' },
293
+ { type: 'string', name: 'faa_dist' },
294
+ { type: 'string', name: 'city' },
295
+ { type: 'string', name: 'county' },
296
+ { type: 'string', name: 'state' },
297
+ { type: 'string', name: 'full_name' },
298
+ { type: 'string', name: 'own_type' },
299
+ { type: 'number', name: 'longitude', numberType: 'float' },
300
+ { type: 'number', name: 'latitude', numberType: 'float' },
301
+ { type: 'number', name: 'elevation', numberType: 'integer' },
302
+ { type: 'string', name: 'aero_cht' },
303
+ { type: 'number', name: 'cbd_dist', numberType: 'integer' },
304
+ { type: 'string', name: 'cbd_dir' },
305
+ { type: 'string', name: 'act_date' },
306
+ { type: 'string', name: 'cert' },
307
+ { type: 'string', name: 'fed_agree' },
308
+ { type: 'string', name: 'cust_intl' },
309
+ { type: 'string', name: 'c_ldg_rts' },
310
+ { type: 'string', name: 'joint_use' },
311
+ { type: 'string', name: 'mil_rts' },
312
+ { type: 'string', name: 'cntl_twr' },
313
+ { type: 'string', name: 'major' },
314
+ {
315
+ type: 'number',
316
+ name: 'count',
317
+ expressionType: 'aggregate',
318
+ e: [{ type: 'aggregate', function: 'count', e: [] }],
319
+ },
320
+ ],
321
+ },
322
+ // derived table from a named query.
323
+ {
324
+ type: 'struct',
325
+ name: 'aircraft_facts',
326
+ dialect: 'standardsql',
327
+ structSource: {
328
+ type: 'query',
329
+ query: {
330
+ type: 'query',
331
+ structRef: 'flights',
332
+ pipeHead: { name: 'aircraft_facts_query' },
333
+ pipeline: [],
334
+ },
335
+ },
336
+ structRelationship: withJoin('tail_num', 'aircraft_facts.tail_num'),
337
+ primaryKey: 'tail_num',
338
+ fields: [
339
+ { type: 'string', name: 'tail_num' },
340
+ { type: 'number', name: 'lifetime_distance' },
341
+ ],
342
+ },
343
+ // // Inline derived table
344
+ // {
345
+ // type: 'struct',
346
+ // name: "aircraft_facts2",
347
+ // structSource: {
348
+ // type: 'query',
349
+ // query: {
350
+ // type: 'reduce',
351
+ // fields: [
352
+ // 'tail_num',
353
+ // {name: 'total_distance', as: 'lifetime_distance'}
354
+ // ]
355
+ // }
356
+ // },
357
+ // structRelationship: {type: 'foreignKey', keyExpression: [{ type: "field", path: 'tail_num'},
358
+ // fields: [
359
+ // ]
360
+ // },
361
+ // query definition
362
+ // EXPLORE flights | REDUCE carriers.name, flight_count ORDER BY 1
363
+ {
364
+ type: 'turtle',
365
+ name: 'flights_by_carrier',
366
+ pipeline: [
367
+ {
368
+ type: 'reduce',
369
+ fields: [
370
+ 'carriers.name',
371
+ 'flight_count',
372
+ // { name: "origin.count", as: "origin_count" },
373
+ {
374
+ type: 'number',
375
+ name: 'origin_count',
376
+ expressionType: 'aggregate',
377
+ e: [
378
+ {
379
+ type: 'aggregate',
380
+ function: 'count',
381
+ e: [],
382
+ structPath: 'origin',
383
+ },
384
+ ],
385
+ },
386
+ {
387
+ type: 'number',
388
+ name: 'my_total_distance',
389
+ expressionType: 'aggregate',
390
+ e: [
391
+ {
392
+ type: 'aggregate',
393
+ function: 'sum',
394
+ e: [{ type: 'field', path: 'distance' }],
395
+ },
396
+ ],
397
+ },
398
+ ],
399
+ orderBy: [{ field: 'name', dir: 'asc' }],
400
+ },
401
+ ],
402
+ },
403
+ {
404
+ type: 'turtle',
405
+ name: 'flights_by_carrier_2001_2002',
406
+ pipeline: [
407
+ {
408
+ type: 'reduce',
409
+ fields: [
410
+ 'carriers.name',
411
+ {
412
+ name: 'flights_2001',
413
+ type: 'number',
414
+ expressionType: 'aggregate',
415
+ e: [
416
+ {
417
+ type: 'filterExpression',
418
+ filterList: [(0, util_1.fYearEq)('dep_time', 2001)],
419
+ e: [
420
+ {
421
+ type: 'aggregate',
422
+ function: 'count',
423
+ e: [],
424
+ },
425
+ ],
426
+ },
427
+ ],
428
+ },
429
+ {
430
+ name: 'flights_2002',
431
+ type: 'number',
432
+ expressionType: 'aggregate',
433
+ e: [
434
+ {
435
+ type: 'filterExpression',
436
+ filterList: [(0, util_1.fYearEq)('dep_time', 2001)],
437
+ e: [
438
+ {
439
+ type: 'aggregate',
440
+ function: 'count',
441
+ e: [],
442
+ },
443
+ ],
444
+ },
445
+ ],
446
+ },
447
+ ],
448
+ orderBy: [{ field: 'name', dir: 'asc' }],
449
+ },
450
+ ],
451
+ },
452
+ // EXPLORE flights | REDUCE destination.city, flight_count ORDER BY 2 desc
453
+ {
454
+ type: 'turtle',
455
+ name: 'flights_by_city_top_5',
456
+ pipeline: [
457
+ {
458
+ type: 'reduce',
459
+ fields: ['destination.city', 'flight_count'],
460
+ orderBy: [{ field: 2, dir: 'desc' }],
461
+ limit: 5,
462
+ },
463
+ ],
464
+ },
465
+ // EXPLORE flights [origin.state:'CA] | REDUCE aircraft.aircraft_models.manufacturer, aircraft.aircraft_models.manufacturer.
466
+ // aircraft.aircraft_count, flight_count ORDER BY flight_count LIMIT 5
467
+ {
468
+ type: 'turtle',
469
+ name: 'flights_by_model',
470
+ pipeline: [
471
+ {
472
+ type: 'reduce',
473
+ fields: [
474
+ 'aircraft.aircraft_models.manufacturer',
475
+ 'aircraft.aircraft_models.model',
476
+ 'aircraft.aircraft_count',
477
+ 'flight_count',
478
+ ],
479
+ orderBy: [{ field: 'flight_count', dir: 'desc' }],
480
+ filterList: [(0, util_1.fStringEq)('origin.state', 'CA')],
481
+ limit: 5,
482
+ },
483
+ ],
484
+ },
485
+ // EXPLORE flights | REDUCE tail_num, total_distance as lifetime_distance
486
+ {
487
+ type: 'turtle',
488
+ name: 'aircraft_facts_query',
489
+ pipeline: [
490
+ {
491
+ type: 'reduce',
492
+ fields: [
493
+ 'tail_num',
494
+ {
495
+ type: 'number',
496
+ name: 'lifetime_distance',
497
+ expressionType: 'aggregate',
498
+ e: [
499
+ {
500
+ type: 'aggregate',
501
+ function: 'sum',
502
+ e: [{ type: 'field', path: 'distance' }],
503
+ },
504
+ ],
505
+ },
506
+ ],
507
+ },
508
+ ],
509
+ },
510
+ // expore flights | reduce carriers.name, aircraft.total_engines, flight_count
511
+ {
512
+ type: 'turtle',
513
+ name: 'carriers_by_total_engines',
514
+ pipeline: [
515
+ {
516
+ type: 'reduce',
517
+ fields: ['carriers.name', 'aircraft.total_engines', 'flight_count'],
518
+ },
519
+ ],
520
+ },
521
+ // expore flights | reduce aircraft_facts.lifetime_distance, flight_count
522
+ {
523
+ type: 'turtle',
524
+ name: 'aircraft_facts_test',
525
+ pipeline: [
526
+ {
527
+ type: 'reduce',
528
+ fields: ['aircraft_facts.lifetime_distance', 'flight_count'],
529
+ },
530
+ ],
531
+ },
532
+ // expore flights | reduce flight_count, origin.city, origin.state
533
+ {
534
+ type: 'turtle',
535
+ name: 'measures_first',
536
+ pipeline: [
537
+ {
538
+ type: 'reduce',
539
+ fields: ['flight_count', 'origin.city', 'origin.state'],
540
+ },
541
+ ],
542
+ },
543
+ // explore flights
544
+ // | reduce
545
+ // carrier
546
+ // flight_count
547
+ // top_5_routes is (reduce top 5 order by 3 desc
548
+ // origin_code
549
+ // destination_code,
550
+ // flight_count
551
+ // )
552
+ {
553
+ type: 'turtle',
554
+ name: 'first_turtle',
555
+ pipeline: [
556
+ {
557
+ type: 'reduce',
558
+ fields: [
559
+ 'carrier',
560
+ 'flight_count',
561
+ {
562
+ type: 'turtle',
563
+ name: 'top_5_routes',
564
+ pipeline: [
565
+ {
566
+ type: 'reduce',
567
+ fields: ['origin_code', 'destination_code', 'flight_count'],
568
+ limit: 5,
569
+ orderBy: [{ field: 'flight_count', dir: 'desc' }],
570
+ },
571
+ ],
572
+ },
573
+ ],
574
+ },
575
+ ],
576
+ },
577
+ // explore flights
578
+ // | reduce order by 3 desc
579
+ // origin_code
580
+ // destination_code
581
+ // flight_count
582
+ {
583
+ type: 'turtle',
584
+ name: 'top_5_routes',
585
+ pipeline: [
586
+ {
587
+ type: 'reduce',
588
+ fields: ['origin_code', 'destination_code', 'flight_count'],
589
+ limit: 5,
590
+ orderBy: [{ field: 'flight_count', dir: 'desc' }],
591
+ },
592
+ ],
593
+ },
594
+ // EXPLORE flights | REDUCE carrier, flight_count, top_5_routes
595
+ {
596
+ type: 'turtle',
597
+ name: 'carriers_routes',
598
+ pipeline: [
599
+ {
600
+ type: 'reduce',
601
+ fields: ['carrier', 'flight_count', 'top_5_routes'],
602
+ },
603
+ ],
604
+ },
605
+ // EXPLORE flights [destination.state: 'NY] | REDUCE destination.code as newyork_airport, flight_count ORDER BY 2 DESC
606
+ {
607
+ type: 'turtle',
608
+ name: 'new_york_airports',
609
+ pipeline: [
610
+ {
611
+ type: 'reduce',
612
+ fields: ['destination.code', 'flight_count'],
613
+ filterList: [(0, util_1.fStringEq)('destination.state', 'NY')],
614
+ orderBy: [{ field: 'flight_count', dir: 'desc' }],
615
+ },
616
+ ],
617
+ },
618
+ // EXPLORE flights | REDUCE aircraft.aircraft_models.manufacturer, aircraft.aircraft_count, flight_count ORDER BY 3 DESC
619
+ {
620
+ type: 'turtle',
621
+ name: 'flights_by_manufacturer',
622
+ pipeline: [
623
+ {
624
+ type: 'reduce',
625
+ fields: [
626
+ 'aircraft.aircraft_models.manufacturer',
627
+ 'aircraft.aircraft_count',
628
+ 'flight_count',
629
+ ],
630
+ orderBy: [{ field: 'flight_count', dir: 'desc' }],
631
+ limit: 5,
632
+ },
633
+ ],
634
+ },
635
+ // EXPLORE flights [origin.state:'CA'x] | REDUCE carrier, flight_count, top_5_routes, flights_by_manufacturer
636
+ {
637
+ type: 'turtle',
638
+ name: 'carriers_routes_manufacturer',
639
+ pipeline: [
640
+ {
641
+ type: 'reduce',
642
+ fields: [
643
+ 'carrier',
644
+ 'flight_count',
645
+ 'top_5_routes',
646
+ 'flights_by_manufacturer',
647
+ ],
648
+ filterList: [(0, util_1.fStringEq)('origin.state', 'CA')],
649
+ },
650
+ ],
651
+ },
652
+ {
653
+ type: 'turtle',
654
+ name: 'top_5_routes_carriers',
655
+ pipeline: [
656
+ {
657
+ type: 'reduce',
658
+ fields: [
659
+ 'origin_code',
660
+ 'destination_code',
661
+ 'flight_count',
662
+ 'flights_by_carrier',
663
+ ],
664
+ limit: 5,
665
+ orderBy: [{ field: 'flight_count', dir: 'desc' }],
666
+ },
667
+ ],
668
+ },
669
+ {
670
+ type: 'turtle',
671
+ name: 'flights_by_carrier_with_totals',
672
+ pipeline: [
673
+ {
674
+ type: 'reduce',
675
+ filterList: [(0, util_1.fStringEq)('origin.state', 'CA')],
676
+ fields: [
677
+ {
678
+ type: 'turtle',
679
+ name: 'main',
680
+ pipeline: [
681
+ {
682
+ type: 'reduce',
683
+ fields: [
684
+ 'carriers.name',
685
+ 'flight_count',
686
+ //{ name: "origin.count", as: "origin_count" },
687
+ {
688
+ type: 'number',
689
+ name: 'origin_count',
690
+ expressionType: 'aggregate',
691
+ e: [
692
+ {
693
+ type: 'aggregate',
694
+ function: 'count',
695
+ e: [],
696
+ structPath: 'origin',
697
+ },
698
+ ],
699
+ },
700
+ ],
701
+ orderBy: [{ field: 'flight_count', dir: 'desc' }],
702
+ },
703
+ ],
704
+ },
705
+ {
706
+ type: 'turtle',
707
+ name: 'totals',
708
+ pipeline: [
709
+ {
710
+ type: 'reduce',
711
+ fields: ['flight_count'],
712
+ },
713
+ ],
714
+ },
715
+ ],
716
+ },
717
+ ],
718
+ },
719
+ {
720
+ type: 'turtle',
721
+ name: 'flight_detail',
722
+ pipeline: [
723
+ {
724
+ type: 'reduce',
725
+ orderBy: [{ field: 'dep_time', dir: 'asc' }],
726
+ fields: [
727
+ 'id2',
728
+ 'dep_time',
729
+ 'tail_num',
730
+ 'carrier',
731
+ 'origin_code',
732
+ 'destination_code',
733
+ 'distance',
734
+ 'dep_delay',
735
+ ],
736
+ limit: 500,
737
+ },
738
+ ],
739
+ },
740
+ {
741
+ type: 'turtle',
742
+ name: 'some_measures',
743
+ pipeline: [
744
+ {
745
+ type: 'reduce',
746
+ fields: ['flight_count', 'total_distance', 'aircraft.aircraft_count'],
747
+ },
748
+ ],
749
+ },
750
+ {
751
+ type: 'turtle',
752
+ name: 'flights_routes_sessionized',
753
+ pipeline: [
754
+ {
755
+ type: 'reduce',
756
+ filterList: [
757
+ (0, util_1.fStringEq)('origin.state', 'CA'),
758
+ (0, util_1.fStringEq)('carrier', 'UA'),
759
+ ],
760
+ limit: 20,
761
+ fields: [
762
+ {
763
+ type: 'timestamp',
764
+ name: 'dep_time',
765
+ as: 'dep_date',
766
+ timeframe: 'day',
767
+ },
768
+ 'carrier',
769
+ {
770
+ type: 'turtle',
771
+ name: 'routes',
772
+ pipeline: [
773
+ {
774
+ type: 'reduce',
775
+ fields: [
776
+ 'origin_code',
777
+ 'destination_code',
778
+ 'flight_count',
779
+ {
780
+ type: 'turtle',
781
+ name: 'flight_detail',
782
+ pipeline: [
783
+ {
784
+ type: 'reduce',
785
+ orderBy: [{ field: 'dep_time', dir: 'asc' }],
786
+ limit: 5,
787
+ fields: [
788
+ 'id2',
789
+ 'dep_time',
790
+ 'tail_num',
791
+ 'flight_num',
792
+ 'dep_delay',
793
+ ],
794
+ },
795
+ ],
796
+ },
797
+ ],
798
+ orderBy: [{ field: 'flight_count', dir: 'desc' }],
799
+ },
800
+ ],
801
+ },
802
+ ],
803
+ },
804
+ ],
805
+ },
806
+ /*
807
+ FROM flights |
808
+ REDUCE
809
+ dep_time.date as dep_date,
810
+ carrier,
811
+ flight_count,
812
+ (REDUCE
813
+ tail_num,
814
+ flight_count,
815
+ (REDUCE
816
+ id2, dep_time, origin_code, destination_code, flight_num, dep_delay
817
+ ORDER BY 2
818
+ )
819
+ ) as aircraft
820
+ */
821
+ {
822
+ type: 'turtle',
823
+ name: 'flights_aircraft_sessionized',
824
+ pipeline: [
825
+ {
826
+ type: 'reduce',
827
+ filterList: [(0, util_1.fStringEq)('carrier', 'UA')],
828
+ limit: 2,
829
+ fields: [
830
+ {
831
+ type: 'timestamp',
832
+ name: 'dep_time',
833
+ as: 'dep_date',
834
+ timeframe: 'day',
835
+ },
836
+ 'carrier',
837
+ 'flight_count',
838
+ {
839
+ type: 'turtle',
840
+ name: 'aircraft',
841
+ pipeline: [
842
+ {
843
+ type: 'reduce',
844
+ limit: 10,
845
+ fields: [
846
+ 'tail_num',
847
+ 'flight_count',
848
+ {
849
+ type: 'turtle',
850
+ name: 'flight_detail',
851
+ pipeline: [
852
+ {
853
+ type: 'reduce',
854
+ orderBy: [{ field: 'dep_time', dir: 'asc' }],
855
+ fields: [
856
+ 'id2',
857
+ 'dep_time',
858
+ 'origin_code',
859
+ 'destination_code',
860
+ 'flight_num',
861
+ 'dep_delay',
862
+ ],
863
+ },
864
+ ],
865
+ },
866
+ ],
867
+ orderBy: [{ field: 'flight_count', dir: 'desc' }],
868
+ },
869
+ ],
870
+ },
871
+ ],
872
+ },
873
+ ],
874
+ },
875
+ {
876
+ type: 'turtle',
877
+ name: 'search_index',
878
+ pipeline: [
879
+ {
880
+ type: 'index',
881
+ weightMeasure: 'flight_count',
882
+ fields: [
883
+ 'carrier',
884
+ 'origin_code',
885
+ 'destination_code',
886
+ 'carriers.name',
887
+ 'carriers.nickname',
888
+ 'carriers.code',
889
+ 'origin.code',
890
+ 'origin.full_name',
891
+ 'origin.city',
892
+ 'origin.state',
893
+ 'destination.code',
894
+ 'destination.full_name',
895
+ 'destination.city',
896
+ 'destination.state',
897
+ 'aircraft.aircraft_model_code',
898
+ 'aircraft.aircraft_models.manufacturer',
899
+ 'aircraft.aircraft_models.model',
900
+ ],
901
+ },
902
+ ],
903
+ },
904
+ // {
905
+ // type: "reduce",
906
+ // name: "some_measures",
907
+ // fields: ["flight_count", "total_distance"],
908
+ // },
909
+ ],
910
+ };
911
+ const tableAirports = {
912
+ type: 'struct',
913
+ name: 'malloy-data.malloytest.airports',
914
+ as: 'table_airports',
915
+ dialect: 'standardsql',
916
+ structSource: {
917
+ type: 'table',
918
+ tablePath: 'malloy-data.malloytest.airports',
919
+ },
920
+ structRelationship: { type: 'basetable', connectionName: 'bigquery' },
921
+ primaryKey: 'code',
922
+ fields: [
923
+ { type: 'number', name: 'id', numberType: 'integer' },
924
+ { type: 'string', name: 'code' },
925
+ { type: 'string', name: 'site_number' },
926
+ { type: 'string', name: 'fac_type', as: 'facility_type' },
927
+ { type: 'string', name: 'fac_use', as: 'facility_use' },
928
+ { type: 'string', name: 'faa_region' },
929
+ { type: 'string', name: 'faa_dist' },
930
+ { type: 'string', name: 'city' },
931
+ { type: 'string', name: 'county' },
932
+ { type: 'string', name: 'state' },
933
+ { type: 'string', name: 'full_name' },
934
+ { type: 'string', name: 'own_type' },
935
+ { type: 'number', name: 'longitude', numberType: 'float' },
936
+ { type: 'number', name: 'latitude', numberType: 'float' },
937
+ { type: 'number', name: 'elevation', numberType: 'integer' },
938
+ { type: 'string', name: 'aero_cht' },
939
+ { type: 'number', name: 'cbd_dist', numberType: 'integer' },
940
+ { type: 'string', name: 'cbd_dir' },
941
+ { type: 'string', name: 'act_date' },
942
+ { type: 'string', name: 'cert' },
943
+ { type: 'string', name: 'fed_agree' },
944
+ { type: 'string', name: 'cust_intl' },
945
+ { type: 'string', name: 'c_ldg_rts' },
946
+ { type: 'string', name: 'joint_use' },
947
+ { type: 'string', name: 'mil_rts' },
948
+ { type: 'string', name: 'cntl_twr' },
949
+ { type: 'string', name: 'major' },
950
+ {
951
+ type: 'number',
952
+ name: 'count',
953
+ expressionType: 'aggregate',
954
+ e: [{ type: 'aggregate', function: 'count', e: [] }],
955
+ },
956
+ ],
957
+ };
958
+ /** Test model */
959
+ exports.testModel = {
960
+ name: 'Hand Coded Models',
961
+ exports: [
962
+ 'flights',
963
+ 'table_airports',
964
+ 'medicare_test',
965
+ 'medicare_state_facts',
966
+ // "aircraft",
967
+ ],
968
+ contents: {
969
+ flights: exports.FLIGHTS_EXPLORE,
970
+ table_airports: tableAirports,
971
+ medicare_test: medicare_model_1.medicareModel,
972
+ medicare_state_facts: medicare_model_1.medicareStateFacts,
973
+ // aircraft: aircraftHandStructDef,
974
+ },
975
+ };
976
+ // // clang-format on
977
+ //# sourceMappingURL=faa_model.js.map