v0.0.37
What's Changed
🚀 Features
- Support Spark SQL Hints by @shangyian in #1033
- Add a get node function to the DJ client by @shangyian in #1053
- YAML support for complex dimension links and metric metadata by @shangyian in #1230
🐛 Bug Fixes
- [bugfixes] Add default catalog for nodes without them, redundant dimensions should not be included by @shangyian in #857
- Fix various bugs with SQL generation + data retrieval by @shangyian in #868
- Fix alembic migration autogenerate + interval type handling by @shangyian in #884
- Fix namespace-related bugs + add rand functions by @shangyian in #892
- Fix UI tags bug + speed up node DAG by @shangyian in #903
- Editing cubes should retain information on tags and node mode by @shangyian in #923
- On the cube node edit page, enable editing of metrics by @shangyian in #929
- Fix three fast-follow bugs by @shangyian in #964
- Fix bug where updating nodes that have deactivated children fail by @shangyian in #970
- Sort history events in descending order + additional validation checks for cubes by @shangyian in #971
- Fix filter pushdown + update node propagation by @shangyian in #965
- Disable status check for measures SQL generation by @shangyian in #978
- Fix issue with cube tags always getting reset by @shangyian in #990
- Fix two bugs: filter pushdowns + source node refresh by @shangyian in #1017
- Fix an issue where removing dimension links was invalidating cubes incorrectly and taking a long time by @shangyian in #1020
- Add loading stage to various parts of the UI by @shangyian in #1023
- Fix cube elements ordering bug by @shangyian in #1029
- Fix query building bug for materialized dimension nodes by @shangyian in #1035
- Upgrade antlr4 runtime to match the generated antlr parsers by @shangyian in #1039
- Fix two SQL building bugs by @shangyian in #1043
- Fix bug with filter-only dimensions metadata by @shangyian in #1049
- Fix sequence function by @shangyian in #1079
- Revert "Fix SQL building with filters" by @shangyian in #1121
- Minor SQL build fixes by @shangyian in #1195
- Fix retrieving cube SQL failure by @shangyian in #1200
- Fix bug in pagination logic for edge case around empty list by @shangyian in #1215
- Fix python client model class hydration issue by @shangyian in #1221
- Fix the node history UI when it displays certain event types by @shangyian in #1232
- When requesting metrics SQL, respect the desired engine by @shangyian in #1231
- Fix recursion error from deepcopy by @shangyian in #1252
- Make measures derived from metrics unique based on the expression by @shangyian in #1255
- Fix bug for preagg measures sql by @shangyian in #1273
- Disable query AST population for now by @shangyian in #1298
- Hide deactivated nodes from DAG by @shangyian in #1307
- Fix Pydantic model definition for valid OpenAPI schema by @shangyian in #1308
- Various UI Bugfixes by @shangyian in #1317
- Fix YAML tagging so that all nodes actually get tagged by @shangyian in #1325
- Normalize all column names to be lowercase by @shangyian in #1335
- Fix bug when editing cube node with materialization by @shangyian in #1362
- Fix partition resolution on columns by @shangyian in #1414
- Use session.remove() in session middleware by @shangyian in #1430
- Hide deleted dimension nodes from dimension links by @shangyian in #1434
- MAX function should be able to work on boolean arguments by @shangyian in #1437
- Fix issue with metrics not using dimension-referenced column correctly by @shangyian in #1470
- Fix inefficiencies in finding linked nodes to dimensions by @shangyian in #1469
- Enable correct sorting of nodes within namespace by @shangyian in #1463
- Support usage of relative urls for notifications backend call from UI by @shangyian in #1474
- Add check for node existence when upserting complex dimension link by @shangyian in #1484
- Prevent unnecessary owner updates by @shangyian in #1487
- Allow unix_timestamp to also accept a timestamp or date, which spark supports by @samredai in #1520
- Fix Concurrent Operations During AST Compilation by @shangyian in #1536
- Bug saving invalid metric by @samredai in #1571
- Prevent linking to non-dimension nodes by @shangyian in #1580
- Reduce tag update history events by @shangyian in #1604
- Fix issue around restoring nodes with downstream cubes by @shangyian in #1618
- Fix duplicate CTEs in SQL build v2 by @shangyian in #1642
- Metrics editor requires the parent node types by @shangyian in #1645
🧹 Maintenance
- UI lint + browerslist update by @shangyian in #1211
- Update browserslist by @shangyian in #1583
Other Changes
- Organize authentication and authorization functionality under an access dir by @samredai in #815
- Config file based configuration for Query Service by @samredai in #813
- Materialization API Updates + UI by @shangyian in #812
- Remove automated metric alias generation by @shangyian in #819
- Synchronized release management by @agorajek in #807
- Fix version-publish action. by @agorajek in #822
- Add support for CTEs and fix bug with struct types + aliased tables by @shangyian in #824
- Fix version-bump action workflow. by @agorajek in #826
- Fix official release docs. by @agorajek in #828
- Use background task for tasks that can be done async by @shangyian in #829
- Bump DataJunction version to 0.0.1a31 by @agorajek in #831
- Search box in the UI for finding nodes by @samredai in #823
- Bubble up some of the access internals by @samredai in #832
- adding Snowflake support for DJQS by @Geo881 in #834
- Add support for inline tables using VALUES + misc bugfixes by @shangyian in #835
- Metric kind, direction, and unit by @shangyian in #833
- Add tags to search by @shangyian in #839
- Fully qualified names on transform sql + additional column metadata by @shangyian in #841
- Bump DataJunction version to 0.0.1a33 by @agorajek in #843
- Try out
[skip-ci]for version bump PRs by @shangyian in #846 - Open up source node refresh in Python client. by @agorajek in #844
- Filter Pushdowns + Optimized Dimension Joins by @shangyian in #845
- Bump DataJunction version to 0.0.1a34 by @agorajek in #849
- Measures SQL by @shangyian in #848
- Bump DataJunction version to 0.0.1a35 by @agorajek in #850
- Try a better way to skip the unit tests matrix on version bump. by @agorajek in #852
- Cube Dimension Values by @shangyian in #860
- Modify Druid materialization flow to use the measures query by @shangyian in #859
- Fix setting node tags via edit page in UI by @shangyian in #858
- Brings back original support for YAML now using client calls to the REST API by @samredai in #861
- add in memory cache with configurable interval by @samredai in #840
- Use an enum for semantic type by @shangyian in #864
- Allow reading/creating tags from the python client as well as in YAML definitions by @samredai in #863
- Fix python client create_source call to not use
schema_by @shangyian in #866 - Exporting/downloading a namespace to a local YAML project by @samredai in #867
- Cube Builder UI by @shangyian in #870
- Switch to materialization job type (from engine) and add strategy by @shangyian in #865
- Bump DataJunction version to 0.0.1a37 by @agorajek in #871
- Compatibility with Python 3.11 by @shangyian in #873
- Speed up getting shared dimensions by @shangyian in #876
- Bump DataJunction version to 0.0.1a38 by @agorajek in #877
- Add explicit deps in client + display name to yaml import/export by @shangyian in #875
- Make node graph retrieval more efficient with recursive CTE by @shangyian in #879
- Bump DataJunction version to 0.0.1a39 by @agorajek in #881
- Use postgres for metadata instead of sqlite by @shangyian in #882
- Remove SQLModel and use SQLAlchemy directly by @shangyian in #883
- Add roads project and example notebook by @samredai in #886
- Support Complex Dimension Joins by @shangyian in #885
- Make the server fully compatible with Postgres by @shangyian in #888
- Uppercase enums by @shangyian in #894
- Bump DataJunction version to 0.0.1a40 by @agorajek in #895
- AvailabilityState's valid_through_ts should be bigint by @shangyian in #897
- Add support for using complex dimensions by role + Python client functionality for complex dims by @shangyian in #896
- Improve error catching during a source node refresh. by @agorajek in #889
- Fix alembic migration for missing table attribute by @shangyian in #898
- Remove the mixture of async endpoints with a sync db connection by @shangyian in #901
- Bump DataJunction version to 0.0.1a41 by @agorajek in #902
- Additional Dimensions Info in the UI by @shangyian in #899
- Bump DataJunction version to 0.0.1a42 by @agorajek in #904
- Improve UI for primary key selection by @shangyian in #906
- Fix issue with search failing when it hits a null node description by @shangyian in #905
- Alter metrics UI to use upstream + aggregate expression by @shangyian in #914
- Required dimensions, node tab links, node name/namespace validation, by @shangyian in #915
- Bump DataJunction version to 0.0.1a43 by @agorajek in #916
- Switch to 'published' as the default in the node creation UI by @shangyian in #917
- Add endpoint for copying nodes by @shangyian in #919
- Remove deactivated nodes when listing nodes for a tag + fix metric aggregate expression bug by @shangyian in #920
- Bump DataJunction version to 0.0.1a44 by @agorajek in #928
- Remove unused attributes to not clutter the column attributes space by @shangyian in #924
- Parity between column-level dimension links and node-level links by @shangyian in #926
- Fix failure on wildcards in node info API by @shangyian in #931
- Switch to node-level dimension links by @shangyian in #932
- Support aggregated cube materialization by @shangyian in #935
- Fix various bugs for materialization + better tests by @shangyian in #936
- Add a placeholder query in Transform editor to guide users by @anhqle in #939
- Increase database connection limit by @shangyian in #941
- Upgrade FastAPI to the latest version by pinning it to >=0.110.0 by @shangyian in #943
- Add a loading ticker for form submission by @shangyian in #938
- Update OpenAPI Spec - 16e7ad8 by @agorajek in #946
- FEAT Add support for the complex dimension endpoints to DJService by @anhqle in #945
- Fix deadlock issue with FastAPI Depends by @shangyian in #942
- Add listing nodes with tags plus other minor fix. by @agorajek in #947
- Add replace() udf signature. by @agorajek in #950
- Switch DJ to support Python 3.10 and up only. by @agorajek in #952
- Attempt to fix the mypy tests on Github. by @agorajek in #954
- Bump DataJunction version to 0.0.1a45 by @agorajek in #953
- Fix explode function query assembly by @shangyian in #955
- Fix subscript dereferencing bug + concat_ws input types by @shangyian in #957
- Hide node Edit and Delete button after deleting a node. by @agorajek in #956
- Add dense_rank() and add additional type inference for rank() by @shangyian in #958
- Add documentation on dimension links + reorganize docs by @shangyian in #960
- Improve node history UI and provide the ability to diff node revisions by @shangyian in #961
- Switch to async for the database connection by @shangyian in #951
- Pass cache-control headers to query service by @shangyian in #966
- Druid Functions Compatibility by @shangyian in #974
- Save built queries to database to speed up requesting SQL and data by @shangyian in #973
- Bump DataJunction version to 0.0.1a46 by @agorajek in #977
- Move node-related functions to the internal/nodes module by @shangyian in #980
- Improve node status display and fix status update bugs by @shangyian in #981
- FIX python client error not propagating by @anhqle in #985
- fix basic login demanding json body by @anhqle in #986
- Use the queryrequest cache to serve /data requests + bug fixes by @shangyian in #984
- chore remove try/except in client methods by @anhqle in #987
- Add regexp_[extract|replace] and align node list to the top. by @agorajek in #992
- Add support for categorical partition materialization by @shangyian in #983
- make description optional by @anhqle in #991
- Allow deletion of materializations and fix few bugs. by @agorajek in #994
- Bump DataJunction version to 0.0.1a47 by @agorajek in #995
- show the full errror message by @anhqle in #998
- Add more Spark functions by @shangyian in #1000
- Don't use materialized tables in their own materialization job. by @agorajek in #999
- Bump DataJunction version to 0.0.1a48 by @agorajek in #1005
- Node Query Validation / Testing by @shangyian in #1006
- Bump DataJunction version to 0.0.1a49 by @agorajek in #1007
- Fix broken links in the docs by @shangyian in #1008
- Attempt to fix the comparison for struct types. by @agorajek in #1009
- Query validation SQL shouldn't use own materialized tables by @shangyian in #1010
- Add weekly schedule to version bump workflow. by @agorajek in #1011
- Enable dimension values dropdown by @shangyian in #1012
- Show source node refreshes in the node history tab by @shangyian in #1016
- add update functionality to create_ methods by @anhqle in #1001
- Sort dimensions by order of usage when displaying them in the link dimensions popover by @shangyian in #1022
- Add a node dependencies tab that displays the node graph in list form by @shangyian in #1024
- FIX Remove fields from Source's UpdateNode that aren't actually update-able by @anhqle in #1025
- Bumping DJ to version 0.0.1a50 by @shangyian in #1028
- Speed up sql building by short-circuiting the compilation for CAST(...) by @shangyian in #1030
- Bump DataJunction version to 0.0.1a51 by @agorajek in #1031
- Copying node should rewrite dimension link join SQL by @shangyian in #1038
- Start using module scope fixtures. by @agorajek in #1041
- Bump DataJunction version to 0.0.1a52 by @agorajek in #1044
- Support filtering on dimensions available on upstream source nodes by @shangyian in #1046
- Fix updating cubes with the Python client by @shangyian in #1047
- Bump DataJunction version to 0.0.1a53 by @agorajek in #1054
- Adds lookback window support to cube materializations by @shangyian in #1056
- Bump DataJunction version to 0.0.1a54 by @agorajek in #1058
- Add datajunction-community google group to readme by @samredai in #1069
- Various Python client features by @shangyian in #1066
- Generate notebook for exporting cubes / namespaces by @shangyian in #1070
- Bump DataJunction version to 0.0.1a55 by @agorajek in #1072
- Make server/api/c* tests run in module scope. by @agorajek in #1045
- Make tests/api/data_test.py use module scope. by @agorajek in #1074
- Change tests/api/d* to module scope. by @agorajek in #1075
- Convert tests/api/[e-h]* to module scope. by @agorajek in #1076
- Raise error if a temporal partition was not specified for a Druid materialization by @shangyian in #1077
- Convert tests/api/measures_test.py to module scope. by @agorajek in #1080
- Bump DataJunction version to 0.0.1a56 by @agorajek in #1081
- Collections API by @samredai in #1071
- Convert tests/api/materializations_test.py to module scope. by @agorajek in #1082
- Add column attributes to notebook export by @shangyian in #1083
- Fix issue with lateral view explode sql rendering by @shangyian in #1086
- Allow docs dropdown in UI with .env configured urls by @samredai in #1085
- Use module-level fixtures for sql tests by @shangyian in #1084
- Convert tests/api/namespaces_test.py and node_update_test.py to module scope. by @agorajek in #1088
- Bump DataJunction version to 0.0.1a57 by @agorajek in #1089
- Fix optimization that tries to select only the columns needed when joining in dimension by @shangyian in #1091
- Add Trino to DJQS, including an optional trino docker compose profile by @samredai in #1090
- Add access for node and measures sql to the Python client by @shangyian in #1093
- Retrieve Cube SQL from
/sql/{node}by @shangyian in #1095 - Make add namespace popover less confusing by @shangyian in #1100
- Bump DataJunction version to 0.0.1a58 by @agorajek in #1106
- Add DataJunction+Trino Quickstart by @samredai in #1103
- Upsert users who are authenticated but not stored in the user table by @samredai in #1101
- Bump DataJunction version to 0.0.1a59 by @agorajek in #1108
- Add find nodes query to GraphQL by @shangyian in #1107
- Fix SQL building with filters by @shangyian in #1109
- Add users endpoints for retrieving nodes by user by @shangyian in #1096
- Update users endpoint to only pull users with activity when requested by @shangyian in #1110
- Bugfix, make sure EXPLODE includes parenthesis around column list by @samredai in #1114
- Require current_user everywhere, no longer optional by @samredai in #1113
- forward request headers when requests are made to query service by @samredai in #1120
- Node SQL build by @shangyian in #1116
- Bump DataJunction version to 0.0.1a60 by @agorajek in #1112
- Add Sorting to Node Table in Explore View by @shangyian in #1123
- Bump DataJunction version to 0.0.1a61 by @agorajek in #1124
- Do not pass on encoding-related headers to the query service by @shangyian in #1129
- feature: Dynamic auth params by @sadath-12 in #1115
- Explore filters by @shangyian in #1126
- Fix graphql findNodes bug when retrieving revisions by @shangyian in #1134
- Fixing greenlet spawn error when building metrics sql by @shangyian in #1136
- Fix cube dimensions by @shangyian in #1138
- Refactor node query building v2 to use the builder pattern by @shangyian in #1128
- Bump DataJunction version to 0.0.1a62 by @agorajek in #1130
- Add depth filter when retrieving downstream nodes by @shangyian in #1135
- include sql_columns output in /cube/{cube_name} endpoint by @samredai in #1146
- Add
created_by_idforNode,NodeRevision,Collection, andTagby @samredai in #1147 - Add created by and edited by fields to both the REST API and GraphQL query by @shangyian in #1142
- Bump DataJunction version to 0.0.1a63 by @agorajek in #1139
- Adding '/data/{node_name}' path to fetch data for a single node by @skastel in #1151
- Always refresh the user object after getting current user from th… by @shangyian in #1152
- Migrate to the new query builder for metrics SQL and data endpoints by @shangyian in #1149
- Bump DataJunction version to 0.0.1a64 by @agorajek in #1154
- Fix issue with null tag description by @shangyian in #1155
- Fix from_json function to parse the specified schema by @shangyian in #1160
- Make node list max configurable by @shangyian in #1157
- Add default catalog setting for DJ nodes by @shangyian in #1167
- Adding 'use_materialized' flag to sql endpoints by @skastel in #1161
- Bump DataJunction version to 0.0.1a65 by @agorajek in #1165
- Add register_view as another way to create Source nodes. by @agorajek in #1153
- Refactor DJQS to remove
sqlmodelandpydanticand just rely onpsycopgfor metadata db queries by @samredai in #1168 - After a node's query is updated, we should revalidate dimension links by @shangyian in #1164
- Make Python client unit tests fast again. by @agorajek in #1171
- Speed up SQL building by assigning columns to their table origins in parallel by @shangyian in #1173
- Add
ORDER BYsupport to new SQL build by @shangyian in #1176 - Fix bug with handling inline table queries by @shangyian in #1177
- Bump DataJunction version to 0.0.1a66 by @agorajek in #1169
- Remove pydantic from DJ client. by @agorajek in #1181
- Bump DataJunction version to 0.0.1a67 by @agorajek in #1182
- Remove fastapi-cache2 from client deps. by @agorajek in #1186
- Fix column attribution by making sure it only comes from the same parent by @shangyian in #1187
- Make sure that we detect cycles in the dimensions traversal queries by @shangyian in #1189
- Bump DataJunction version to 0.0.1a68 by @agorajek in #1190
- Reference links by @shangyian in #1172
- Cleanup YAML project code. by @agorajek in #1193
- Unify the update_if_exists param in DJ client. by @agorajek in #1197
- Cleanup update_if_exists vs skip_if_exists. by @agorajek in #1199
- Bump DataJunction version to 0.0.1a69 by @agorajek in #1194
- Requesting metrics SQL should work for metrics that have different parents by @shangyian in #1198
- Bump DataJunction version to 0.0.1a70 by @agorajek in #1202
- Add lookback window to Materialization calls. by @agorajek in #1206
- Add a dictionary of links to AvailabilityState. by @agorajek in #1214
- Support dimension links with
CROSS JOINby @shangyian in #1179 - Pagination by @shangyian in #1203
- Bump DataJunction version to 0.0.1a71 by @agorajek in #1207
- Create/edit node pages should have a navigation bar that goes back to the right namespace by @shangyian in #1217
- Bump DataJunction version to 0.0.1a72 by @agorajek in #1216
- Fix a bug with updating existing materialization. by @agorajek in #1218
- Bump DataJunction version to 0.0.1a73 by @agorajek in #1219
- Bump DataJunction version to 0.0.1a74 by @agorajek in #1222
- A get_notifier dependency for sending notifications by @samredai in #1225
- Notify when an availability is posted by @samredai in #1228
- Better input validation on get_sql_for_metrics(). by @agorajek in #1227
- Bump DataJunction version to 0.0.1a75 by @agorajek in #1236
- Add measures metadata for metrics by @shangyian in #1234
- Bump DataJunction version to 0.0.1a76 by @agorajek in #1237
- Only refresh SQLAlchemy ORM objects when needed by @shangyian in #1238
- Bump DataJunction version to 0.0.1a77 by @agorajek in #1239
- Add 'hidden' as a column attribute type by @anhqle in #1240
- Add derived measures to GraphQL by @shangyian in #1241
- YAML deploy needs to handle dimension link deletion for all links not… by @shangyian in #1249
- Generate measures SQL pre-aggregated to the requested dimensions by @shangyian in #1242
- [YAML] Add message for dimension link deletion + fix YAML export of dim links by @shangyian in #1250
- Bump DataJunction version to 0.0.1a78 by @agorajek in #1245
- YAML Config Parity by @shangyian in #1251
- Add DJ CLI tool for pulling and deploying YAML by @shangyian in #1254
- Bump DataJunction version to 0.0.1a79 by @agorajek in #1253
- Support displaying markdown in node descriptions in the UI by @shangyian in #1256
- Bump DataJunction version to 0.0.1a80 by @agorajek in #1257
- Add is_hidden to DimensionAttributeOutput by @anhqle in #1243
- Bump DataJunction version to 0.0.1a81 by @agorajek in #1258
- Better categorize the various exceptions into user vs system errors by @shangyian in #1262
- GQL common dimensions query + dim attr output shape by @shangyian in #1263
- Only generate preaggregated measures SQL where possible by @shangyian in #1264
- Add measures SQL query to GQL by @shangyian in #1266
- Shortcircuit the source node refresh if no table is found. by @agorajek in #1270
- Seed initial data for running with docker compose by @shangyian in #1271
- Add support for querying tags with GQL by @shangyian in #1269
- Reduce metric fetch by @shangyian in #1277
- Add metric SQL validation by @shangyian in #1276
- Bump DataJunction version to 0.0.1a82 by @agorajek in #1267
- Generate faster SQL by removing unnecessary validation by @shangyian in #1278
- Bump DataJunction version to 0.0.1a83 by @agorajek in #1279
- Add several timestamp related UDFs. by @agorajek in #1283
- Load search backend queries async by @shangyian in #1281
- Include alembic migrations as part of datajunction-server release by @shangyian in #1288
- SQL Generation Speed: Store pickled query AST by @shangyian in #1280
- Update dependencies based on python >=3.10 by @shangyian in #1292
- Add custom metadata field to node revision. by @agorajek in #1291
- Bump DataJunction version to 0.0.1a84 by @agorajek in #1293
- Fix bug with displaying required dimensions for metrics by @shangyian in #1296
- [fix] bug in how AVG is decomposed into measures by @anhqle in #1299
- Bump DataJunction version to 0.0.1a85 by @agorajek in #1302
- Add slack invite link by @samredai in #1306
- Consolidate to Single Cube Materialization Option by @shangyian in #1304
- Bump DataJunction version to 0.0.1a86 by @agorajek in #1303
- switch to ruff by @samredai in #1301
- Endpoints and data model for saving user notification subscriptions by @samredai in #1284
- run tests on main branch after merging PR by @samredai in #1310
- Add foreign key reference mapping to dimension link metadata output by @shangyian in #1313
- Fix python and javascript client integration tests by @samredai in #1311
- Add/Edit Node Page UI Extension by @shangyian in #1314
- Bump DataJunction version to 0.0.1a87 by @agorajek in #1312
- Added cache interface and cachelib + noop implementations by @samredai in #1209
- Update java client by @samredai in #1315
- Add better metric metadata to materializations by @shangyian in #1322
- Bump DataJunction version to 0.0.1a88 by @agorajek in #1319
- Decompose ANY_VALUE in metric definitions into measures by @shangyian in #1326
- Bump DataJunction version to 0.0.1a89 by @agorajek in #1327
- Fix Cube() making in DJ client. by @agorajek in #1329
- Bump DataJunction version to 0.0.1a90 by @agorajek in #1332
- Fix aggregation function check for metric definition by @shangyian in #1331
- Process every history event through notifier depnedency after saving by @samredai in #1333
- Bump DataJunction version to 0.0.1a91 by @agorajek in #1334
- Update Java build actions by @shangyian in #1338
- Break out logic for getting a user's notification preferences to a separate function by @samredai in #1340
- Add ability to search on display name using findNodes by @shangyian in #1341
- Add column description by @anhqle in #1343
- Fix SQL column metadata by @shangyian in #1345
- Bump DataJunction version to 0.0.1a92 by @agorajek in #1342
- Add support for count_if in decomposing to measures by @shangyian in #1347
- Bump DataJunction version to 0.0.1a93 by @agorajek in #1348
- Fix error with getting cube materialization by @shangyian in #1354
- Add formatting fields for metric display precision by @shangyian in #1356
- Bump DataJunction version to 0.0.1a94 by @agorajek in #1351
- Get all users subscribed to a specific notification by @samredai in #1353
- Switch python client, query service to use ruff by @shangyian in #1357
- Handle measures SQL generation where for measures columns with reserved characters in the name by @shangyian in #1363
- Allow filtering history to events subscribed to for notifications by @samredai in #1360
- Speed up metric edit UI load time by @shangyian in #1359
- Bump DataJunction version to 0.0.1a95 by @agorajek in #1364
- Support DISTINCT decomposition + pre-aggregation by @shangyian in #1367
- Cache metrics list endpoint by @samredai in #1366
- Execute database statements with retry logic by @shangyian in #1369
- Bump DataJunction version to 0.0.1a96 by @agorajek in #1370
- node button cleanup & watch button by @CircArgs in #1365
- Add additional details to cube history by @shangyian in #1361
- Support Viewing+Editing Multiple Dimension Links by @shangyian in #1372
- Bump DataJunction version to 0.0.1a97 by @agorajek in #1373
- Add limit to findNodes GQL query by @shangyian in #1377
- Bump DataJunction version to 0.0.1a98 by @agorajek in #1374
- Update linters (ruff, add-trailing-comma) by @shangyian in #1383
- Fix build_preaggregate_query bug. by @agorajek in #1381
- Add query parameters to DJ... by @agorajek in #1382
- Bumping DJ to version 0.0.1a99 by @shangyian in #1384
- Fix
show_deletedquery param for /materializations, rename itshow_inactiveby @samredai in #1386 - Add plugin support for SQL transpilation by @shangyian in #1376
- Speed up the recursive dimensions graph CTE query by @shangyian in #1385
- Bump DataJunction version to 0.0.1a100 by @agorajek in #1387
- Add GraphQL schema generation script and seed schema file by @shangyian in #1390
- Add /cubes endpoint to get metadata on all cubes by @samredai in #1391
- Correctly resolve generated queries in DISTINCT-agg metrics by @shangyian in #1388
- Add pagination to /cubes endpoint by @samredai in #1394
- Add endpoint to list available dialects by @shangyian in #1393
- Enable metrics to reference available dimensions in definition by @shangyian in #1344
- Bump DataJunction version to 0.0.1a101 by @agorajek in #1389
- Column metadata should include origin for columns by @shangyian in #1397
- Add option to delete materializations by node version. by @agorajek in #1396
- Manage GraphQL DB session via middleware by @shangyian in #1403
- Fix hashing on measure decomposition. by @agorajek in #1404
- After a node is deleted, its materializations should be deactivated by @shangyian in #1402
- Enable cubes to be created with no dimensions by @shangyian in #1399
- Add custom_metadata and downstream nodes to GraphQL api. by @agorajek in #1401
- Bump DataJunction version to 0.0.1a102 by @agorajek in #1400
- Revert "Fix hashing on measure decomposition." by @agorajek in #1407
- Add GraphQL support for generating measures SQL directly on a cube by @shangyian in #1408
- Add filtering on columns for node revisions in GQL by @shangyian in #1409
- Add docker compose with superset by @shangyian in #1406
- Bump DataJunction version to 0.0.1a103 by @agorajek in #1411
- Update test.yml by @agorajek in #1412
- Fix test action. by @agorajek in #1415
- Relax requirement for description and mode fields on a new node. by @agorajek in #1418
- Skip deactivated nodes in namespace export. by @agorajek in #1419
- Add reader database cluster support by @shangyian in #1417
- Bump DataJunction version to 0.0.1a104 by @agorajek in #1413
- Add additional database indexes for performance by @shangyian in #1309
- Dimensions DAG Efficiency by @shangyian in #1424
- Add better tests for read replica + use in docker compose by @shangyian in #1420
- Bump DataJunction version to 0.0.1a105 by @agorajek in #1421
- Add missing create read-only user script by @shangyian in #1426
- Provide additional information on parent nodes in GQL by @shangyian in #1429
- Create release.yml by @agorajek in #1428
- Add custom_metadata to /metrics/ api. by @agorajek in #1431
- Add deactivated filter for downstreamNodes GraphQL query by @shangyian in #1432
- Bump DataJunction version to 0.0.1a106 by @agorajek in #1433
- Fix ability to run validation queries by @shangyian in #1427
- Add node owners by @shangyian in #1436
- Upgrade lockfiles + bugfixes to docker compose, QS db, and reflection by @shangyian in #1438
- Model DJ system metrics in DJ by @shangyian in #1440
- Remove SQLAlchemy warnings about multiple write paths for ORM objects by @shangyian in #1439
- Upgrade to 0.0.1a107 by @shangyian in #1442
- Change virtual catalog name default and move system node seeds by @shangyian in #1443
- Bump DataJunction version to 0.0.1a108 by @agorajek in #1444
- Enable modifying a cube's owners by @shangyian in #1446
- Bump DataJunction version to 0.0.1a109 by @agorajek in #1447
- Overview dashboard by @shangyian in #1441
- Bump DataJunction version to 0.0.1a110 by @agorajek in #1450
- Minor adjustments around Roads Example notebook. by @agorajek in #1405
- Add caching for sql generation by @shangyian in #1449
- Add dimension link versioning to nodes by @shangyian in #1453
- Arithmetic Unary Operator Support by @shangyian in #1456
- Bump DataJunction version to 0.0.1a111 by @agorajek in #1452
- Make sure that cache key is static by @shangyian in #1458
- Save versioned measures by @shangyian in #1457
- Bump DataJunction version to 0.0.1a112 by @agorajek in #1459
- Expose materialization information better for cubes. by @agorajek in #1460
- Display fewer items in search list by @shangyian in #1464
- Fix unit test failures due to expired JWT token. by @shangyian in #1472
- Cache node upstreams by @shangyian in #1465
- Add support for additional dialects by @shangyian in #1473
- Bump DataJunction version to 0.0.1a113 by @agorajek in #1466
- Avoid use of scoped session in favor of AsyncSession directly by @shangyian in #1476
- Bump DataJunction version to 0.0.1a114 by @agorajek in #1475
- Bump DataJunction version to 0.0.1a115 by @agorajek in #1477
- Add BFS fallback for getting node downstreams with high fanout by @shangyian in #1479
- Bump DataJunction version to 0.0.1a116 by @agorajek in #1480
- Support query params and caching in GQL measures SQL generation by @shangyian in #1481
- Add caching for node and metrics SQL + reorganize by @shangyian in #1482
- Bump DataJunction version to 0.0.1a117 by @agorajek in #1483
- Add support for service accounts by @shangyian in #1485
- Refactor node API crud calls by @shangyian in #1489
- Bump DataJunction version to 0.0.1a118 by @agorajek in #1488
- Move refresh source node logic to separate function from API endpoint by @shangyian in #1493
- Fix background tasks to not have database sessions or ORM objects passed in by @shangyian in #1492
- Speed up hard delete of namespaces by @shangyian in #1494
- Speed up creating nodes by @shangyian in #1495
- Start using patch release numbers. by @agorajek in #1497
- Bump DataJunction version to 0.0.2 by @agorajek in #1498
- Fix running client tests + print the missing coverage lines by @shangyian in #1501
- Enable cascading of deletes to the tag-node and column-attribute relationships by @shangyian in #1500
- Bulk Deployment by @shangyian in #1491
- Switch Column <> NodeRevision relationship to a many-to-one relationship by @shangyian in #1478
- Bump DataJunction version to 0.0.3 by @agorajek in #1503
- Remove orphaned columns + nodecolumns join table by @shangyian in #1514
- Bump DataJunction version to 0.0.4 by @agorajek in #1515
- Add ability to remove availability state from a node by @shangyian in #1516
- Switch DJ API to Pydantic v2 by @shangyian in #1509
- Bump DataJunction version to 0.0.5 by @agorajek in #1517
- Enable registering table under a custom namespace by @shangyian in #1519
- Add support for decomposing max_by and min_by by @shangyian in #1522
- Bump DataJunction version to 0.0.6 by @agorajek in #1523
- Add bulk loading of parents before node compilation by @shangyian in #1521
- Prevent cycles when building queries with dimension graph cycles by @shangyian in #1526
- Revert "Revert "Fix hashing on measure decomposition. (#1404)" (#1407)" by @agorajek in #1451
- Single Transaction Deployment by @shangyian in #1527
- Support querying across multiple hops on the dimensions graph with roles by @shangyian in #1528
- Bump DataJunction version to 0.0.7 by @agorajek in #1525
- Bump DataJunction version to 0.0.8 by @agorajek in #1529
- Add better handling for deploying source nodes by @shangyian in #1532
- Bump DataJunction version to 0.0.9 by @agorajek in #1533
- Make custom_metadata field editable in DJ UI for all nodes. by @agorajek in #1534
- Bump DataJunction version to 0.0.10 by @agorajek in #1538
- Add support deleting nodes via the DJ CLI by @shangyian in #1542
- Bump DataJunction version to 0.0.11 by @agorajek in #1543
- Postgres 18 by @samredai in #1544
- Additional DJ CLI Functionality by @shangyian in #1545
- Fix custom_metadata field bug and make some other small changes to node details edit page by @samredai in #1547
- Bump DataJunction version to 0.0.12 by @agorajek in #1546
- Switch to using CodeMirror editor for custom metadata editing by @shangyian in https://github.com/DataJunction/dj/pull/1550
- MAX_BY and MIN_BY functions cannot be decomposed by @shangyian in https://github.com/DataJunction/dj/pull/1549
- Bump DataJunction version to 0.0.13 by @agorajek in https://github.com/DataJunction/dj/pull/1551
- Enable Role Path Dimensions in Group By and Filters by @shangyian in https://github.com/DataJunction/dj/pull/1548
- python client: rename output columns to semantic names by @shangyian in https://github.com/DataJunction/dj/pull/1552
- Bulk Cube Deployment by @shangyian in https://github.com/DataJunction/dj/pull/1558
- Bump DataJunction version to 0.0.14 by @agorajek in https://github.com/DataJunction/dj/pull/1557
- YAML Deployment Docs by @shangyian in https://github.com/DataJunction/dj/pull/1560
- Bump DataJunction version to 0.0.15 by @agorajek in https://github.com/DataJunction/dj/pull/1565
- Improve namespace creation UX with inline folder-like interface by @shangyian in https://github.com/DataJunction/dj/pull/1568
- Better Dimension Linking UI by @shangyian in https://github.com/DataJunction/dj/pull/1569
- Bump DataJunction version to 0.0.16 by @agorajek in https://github.com/DataJunction/dj/pull/1566
- Dimension Hierarchies by @shangyian in https://github.com/DataJunction/dj/pull/1564
- Support for Groups as Principal by @shangyian in https://github.com/DataJunction/dj/pull/1574
- Allow configurable embedded query client (Issue #1499) by @samredai in https://github.com/DataJunction/dj/pull/1504
- Bump DataJunction version to 0.0.17 by @agorajek in https://github.com/DataJunction/dj/pull/1578
- RBAC Infra: Roles, Scopes & Assignments by @shangyian in https://github.com/DataJunction/dj/pull/1576
- Add Node Mode (Draft / Published) Filter to DJ UI by @shangyian in https://github.com/DataJunction/dj/pull/1581
- Bump DataJunction version to 0.0.18 by @agorajek in https://github.com/DataJunction/dj/pull/1585
- Improve efficiency of find nodes with common dimensions by @shangyian in https://github.com/DataJunction/dj/pull/1584
- Settings + Notifications in Navigation Bar by @shangyian in https://github.com/DataJunction/dj/pull/1587
- Groups Population by @shangyian in https://github.com/DataJunction/dj/pull/1590
- Add support for creating and managing service accounts in UI by @shangyian in https://github.com/DataJunction/dj/pull/1591
- Bump DataJunction version to 0.0.19 by @agorajek in https://github.com/DataJunction/dj/pull/1592
- Remove user upsert and group sync on every write request by @shangyian in https://github.com/DataJunction/dj/pull/1595
- Bump DataJunction version to 0.0.20 by @agorajek in https://github.com/DataJunction/dj/pull/1596
- Settings styling by @shangyian in https://github.com/DataJunction/dj/pull/1598
- Migrate to use the recursive CTE version of find nodes with dimensions by @shangyian in https://github.com/DataJunction/dj/pull/1594
- Pin bcrpyt to be <=4.3.0 due to bcrypt error by @shangyian in https://github.com/DataJunction/dj/pull/1597
- Bump DataJunction version to 0.0.21 by @agorajek in https://github.com/DataJunction/dj/pull/1599
- Enable the UI to be run in production mode as well as dev mode by @shangyian in https://github.com/DataJunction/dj/pull/1603
- Add GraphQL Upstream Endpoint + Optimize Dependencies Page by @shangyian in https://github.com/DataJunction/dj/pull/1602
- Bump DataJunction version to 0.0.22 by @agorajek in https://github.com/DataJunction/dj/pull/1601
- Dynamic Field Loading for Upstream/Downstream GQL Endpoints by @shangyian in https://github.com/DataJunction/dj/pull/1605
- Add history events for changes made during deployments by @shangyian in https://github.com/DataJunction/dj/pull/1600
- Reduce Expensive Querying via ORM by @shangyian in https://github.com/DataJunction/dj/pull/1607
- Bump DataJunction version to 0.0.23 by @agorajek in https://github.com/DataJunction/dj/pull/1609
- Upgrade node version, unpin package resolutions by @shangyian in https://github.com/DataJunction/dj/pull/1610
- Add docs on metric decomposition by @shangyian in https://github.com/DataJunction/dj/pull/1614
- Add support for
approx_count_distinctdecomposition by @shangyian in https://github.com/DataJunction/dj/pull/1612 - Support Variance, Std Dev, Covariance, and Correlation Decomposition into Aggregable Measures by @shangyian in https://github.com/DataJunction/dj/pull/1617
- Bump DataJunction version to 0.0.24 by @agorajek in https://github.com/DataJunction/dj/pull/1611
- Add ability to filter by nodes with dimension by @shangyian in https://github.com/DataJunction/dj/pull/1620
- Speed up SQL generation by @shangyian in https://github.com/DataJunction/dj/pull/1622
- Bump DataJunction version to 0.0.25 by @agorajek in https://github.com/DataJunction/dj/pull/1621
- refactor metric decomposition + derived metrics foundation by @shangyian in https://github.com/DataJunction/dj/pull/1619
- Fix parsing expressions with decimal numbers at end of input by @shangyian in https://github.com/DataJunction/dj/pull/1624
- SQL Gen v3 by @shangyian in https://github.com/DataJunction/dj/pull/1623
- Revamp Filters Section by @shangyian in https://github.com/DataJunction/dj/pull/1628
- Set up authorization service by @shangyian in https://github.com/DataJunction/dj/pull/1579
- Speed up tests by @shangyian in https://github.com/DataJunction/dj/pull/1629
- Add query planner page by @shangyian in https://github.com/DataJunction/dj/pull/1627
- Bump DataJunction version to 0.0.26 by @agorajek in https://github.com/DataJunction/dj/pull/1625
- Ensure that tags always point to commits on main by @shangyian in https://github.com/DataJunction/dj/pull/1631
- Rename Planner URI by @shangyian in https://github.com/DataJunction/dj/pull/1632
- Derived Metrics Bugs by @shangyian in https://github.com/DataJunction/dj/pull/1633
- Add db schema for pre-aggregations by @shangyian in https://github.com/DataJunction/dj/pull/1635
- Add support for pre-agg detection & substitution by @shangyian in https://github.com/DataJunction/dj/pull/1636
- Add query service support for pre-aggregation materialization by @shangyian in https://github.com/DataJunction/dj/pull/1637
- API endpoints for preaggregations by @shangyian in https://github.com/DataJunction/dj/pull/1638
- Generate combined pre-aggregated measures SQL by @shangyian in https://github.com/DataJunction/dj/pull/1639
- Window function PARTITION BY injection of dimensions by @shangyian in https://github.com/DataJunction/dj/pull/1640
- Add query planner UI with materialization and cube preset loading by @shangyian in https://github.com/DataJunction/dj/pull/1641
- Bump DataJunction version to 0.0.27 by @agorajek in https://github.com/DataJunction/dj/pull/1634
- Fix regression that slowed down common dimensions for metrics search by @shangyian in https://github.com/DataJunction/dj/pull/1643
- Bump DataJunction version to 0.0.28 by @agorajek in https://github.com/DataJunction/dj/pull/1644
- SQL parsing speedup by enabling SLL parsing mode for ANTLR4 by @shangyian in https://github.com/DataJunction/dj/pull/1647
- GraphQL Endpoints Perf by @shangyian in https://github.com/DataJunction/dj/pull/1646
- v3 sql gen: add support for using druid materialized dataset by @shangyian in https://github.com/DataJunction/dj/pull/1648
- Enable saving and displaying of deployment source for namespace by @shangyian in https://github.com/DataJunction/dj/pull/1651
- Impact analysis for a deployment by @shangyian in https://github.com/DataJunction/dj/pull/1650
- Bump DataJunction version to 0.0.29 by @agorajek in https://github.com/DataJunction/dj/pull/1653
- Improve Namespace Deployment Source Detection by @shangyian in https://github.com/DataJunction/dj/pull/1654
- Bump DataJunction version to 0.0.30 by @agorajek in https://github.com/DataJunction/dj/pull/1655
- Upgrade pytest asyncio by @shangyian in https://github.com/DataJunction/dj/pull/1652
- Fix deployment of derived metrics and clean up display of badge by @shangyian in https://github.com/DataJunction/dj/pull/1656
- Bump DataJunction version to 0.0.31 by @agorajek in https://github.com/DataJunction/dj/pull/1657
- Fix python 3.11 unit test hanging by @shangyian in https://github.com/DataJunction/dj/pull/1658
- Add backwards compatibility for v3 cube materialization by @shangyian in https://github.com/DataJunction/dj/pull/1659
- Bump DataJunction version to 0.0.32 by @agorajek in https://github.com/DataJunction/dj/pull/1660
- Metric component special case by @shangyian in https://github.com/DataJunction/dj/pull/1662
- The generated SQL for nested transforms can be broken, because when t… by @shangyian in https://github.com/DataJunction/dj/pull/1663
- Bump DataJunction version to 0.0.33 by @agorajek in https://github.com/DataJunction/dj/pull/1664
- Updating a node should not autoflush + remove automatic reconfiguration of materializations on updates by @shangyian in https://github.com/DataJunction/dj/pull/1665
- Fix metric expr dimensions + Druid dialect; refactor build_v3 shared architecture by @shangyian in https://github.com/DataJunction/dj/pull/1666
- Add pre-aggregations list to the UI by @shangyian in https://github.com/DataJunction/dj/pull/1667
- Make YAML export of queries multiline by @shangyian in https://github.com/DataJunction/dj/pull/1669
- Reduce UI Test Warnings by @shangyian in https://github.com/DataJunction/dj/pull/1670
- Add TPC-DS metrics by @shangyian in https://github.com/DataJunction/dj/pull/1671
- Metrics SQL Refactoring & Filter Test Coverage by @shangyian in https://github.com/DataJunction/dj/pull/1673
- Bump DataJunction version to 0.0.34 by @agorajek in https://github.com/DataJunction/dj/pull/1674
- Modernize release workflow with OIDC trusted publishing by @shangyian in https://github.com/DataJunction/dj/pull/1676
- Release v0.0.35 by @github-actions[bot] in https://github.com/DataJunction/dj/pull/1677
- Skip
datajunction-queryrelease until it's setup for pypi oidc trusted publishing by @shangyian in https://github.com/DataJunction/dj/pull/1678 - Release v0.0.36 by @shangyian in https://github.com/DataJunction/dj/pull/1679
- Continue publishing on error and remove registry-url from setup-node … by @shangyian in https://github.com/DataJunction/dj/pull/1680
- Release v0.0.37 by @shangyian in https://github.com/DataJunction/dj/pull/1681
New Contributors
- @anhqle made their first contribution in #939
- @sadath-12 made their first contribution in #1115
- @skastel made their first contribution in #1151
Full Changelog: 0.0.1a22-client...v0.0.37