0.0.1a10
What's Changed
- chore: github action by @betodealmeida in #1
- feat: initial API by @betodealmeida in #2
- fix: dj compile by @betodealmeida in #3
- feat: add API for submitting queries by @betodealmeida in #4
- feat: background tasks by @betodealmeida in #5
- feat: simple results backend by @betodealmeida in #6
- feat: Celery for async queries by @betodealmeida in #7
- chore: docker-compose by @betodealmeida in #8
- chore: reload app by @betodealmeida in #9
- feat: multiple statements by @betodealmeida in #10
- feat: show statement SQL in results by @betodealmeida in #11
- feat: celery in docker-compose by @betodealmeida in #12
- feat: DAG builder for nodes by @betodealmeida in #13
- chore: move function to utils by @betodealmeida in #14
- feat: n:n node relationship by @betodealmeida in #15
- feat: improve tables by @betodealmeida in #16
- fix: druid by @betodealmeida in #17
- feat: compute schema of downstream nodes by @betodealmeida in #18
- feat: paginate results by @betodealmeida in #19
- feat: add previous link by @betodealmeida in #20
- chore: update README by @betodealmeida in #21
- feat: use sqloxide to determine lineage by @betodealmeida in #22
- Split files by @betodealmeida in #23
- feat: split API files by @betodealmeida in #24
- feat: split models by @betodealmeida in #25
- feat: compute SQL for node by @betodealmeida in #26
- chore: small fixes by @betodealmeida in #27
- fix: make API work again by @betodealmeida in #28
- chore: column types by @betodealmeida in #29
- chore: add types to the parse tree by @betodealmeida in #30
- feat: add a proper function registry by @betodealmeida in #31
- feat: metrics API by @betodealmeida in #32
- feat: groupbys in the metrics API by @betodealmeida in #33
- feat: filters in the metric API by @betodealmeida in #34
- feat: add WHERE/GROUP BY and SQL API by @betodealmeida in #35
- chore: set min Python version by @betodealmeida in #36
- feat: add LIMIT to transpiler by @betodealmeida in #37
- chore: add more operators by @betodealmeida in #38
- feat: pass SQLA dialect to function registry by @betodealmeida in #39
- chore: developer docs by @betodealmeida in #40
- feat: aliases in DQL by @betodealmeida in #46
- feat: heterogeneous tables by @betodealmeida in #47
- feat: single metric API by @betodealmeida in #50
- feat: improve DQL parser by @betodealmeida in #51
- feat: allow non-identifiers in DQL by @betodealmeida in #52
- feat: API for getting SQL of a metric by @betodealmeida in #53
- Update CONTRIBUTING.rst by @betodealmeida in #54
- feat: allow multiple tables in the same DB by @betodealmeida in #55
- feat: allow choosing DB in data API by @betodealmeida in #56
- fix: Dockerfile by @betodealmeida in #57
- chore: remove too-many-* by @betodealmeida in #58
- chore: move TODOs to issues by @betodealmeida in #71
- feat: reloader for dj compile by @betodealmeida in #74
- docs: update README.rst by @betodealmeida in #75
- feat: consider expression when choosing a DB in
get_query_for_sql
by @betodealmeida in #76 - Add tox.ini. by @agorajek in #77
- feat: add
--force
option todj compile
by @betodealmeida in #78 - Update README.rst by @betodealmeida in #79
- feat: write column info back to YAML by @betodealmeida in #80
- chore: add tests for
--force
by @betodealmeida in #82 - feat: API for SQL against metrics by @betodealmeida in #83
- feat: implement SELECT 1 by @betodealmeida in #86
- feat: DJ and SQLite builtin databases by @betodealmeida in #87
- feat: DB API 2.0 implementation by @betodealmeida in #90
- fix: select group by columns in metrics API by @betodealmeida in #92
- Create
CODE_OF_CONDUCT.md
by @betodealmeida in #94 - feat: SQAlchemy dialect by @betodealmeida in #96
- feat: improve indexing to persist type and columns by @betodealmeida in #99
- fix: get_table_columns by @betodealmeida in #100
- feat: use alias for table schema by @betodealmeida in #101
- chore: remove
print()
by @betodealmeida in #102 - Splitted engine.py and updated test cases for issue #93 by @zzzzz1st in #103
- feat: add JOIN to transpiler by @betodealmeida in #105
- chore: update AUTHORS by @betodealmeida in #106
- feat: index dimensions by @betodealmeida in #107
- feat: dimensions in the metric API by @betodealmeida in #108
- feat: dimensions in the SQL API by @betodealmeida in #110
- feat: support
HAVING
by @betodealmeida in #114 - chore: repo diagram by @betodealmeida in #115
- chore: check code coverage by @betodealmeida in #116
- feat: implement
DATE_TRUNC
by @betodealmeida in #118 - chore: remove diagram action by @betodealmeida in #119
- fix: SQLAlchemy fixes by @betodealmeida in #123
- feat (dql): allow querying dimensions by @betodealmeida in #125
- fix: pass dialect to get_query by @betodealmeida in #128
- fix:
DATE_TRUNC
by @betodealmeida in #129 - feat: proper error handling by @betodealmeida in #131
- feat: improve errors by @betodealmeida in #132
- docs: how to add new functions by @betodealmeida in #133
- docs: small fixes by @betodealmeida in #134
- feat: more error handling by @betodealmeida in #135
- feat: more custom exceptions by @betodealmeida in #136
- chore: upgrade sqloxide by @betodealmeida in #137
- Add dates and datetimes to filter api. by @agorajek in #138
- feat: improve node/database indexing by @betodealmeida in #141
- feat: improve
docker-compose.yml
by @betodealmeida in #140 - feat: store updated/created with TZ by @betodealmeida in #142
- feat: simple integration test by @betodealmeida in #143
- Add min() to DJ SQL. by @agorajek in #145
- fix: ping SQLAlchemy due to regression introduced in 1.4.36 by @betodealmeida in #146
- chore: daily test; lock deps by @betodealmeida in #147
- feat: add CASE by @betodealmeida in #148
- fix (sqlite):
DATE_TRUNC('month', col)
by @betodealmeida in #149 - feat: DB migrations by @betodealmeida in #151
- feat: add extra_params to DBs by @betodealmeida in #153
- AVG and SUM functions by @aliirz in #155
- feat: use msgpack between DB API and DJ service by @betodealmeida in #157
- chore: add Ali Raza by @betodealmeida in #158
- chore (gsheets): use catalog by @betodealmeida in #159
- chore: requirements for Docker by @betodealmeida in #160
- docs: functions by @betodealmeida in #163
- chore: use HTTPStatus for codes by @betodealmeida in #165
- Add now() function plus some adjustments. by @agorajek in #166
- chore: remove wrong header by @betodealmeida in #169
- Ping each database when evaluating candidates for query. by @agorajek in #168
- fix: multiple commands in Dockerfile by @betodealmeida in #173
- Add docker runtime option w/o Druid. by @agorajek in #172
- feat: Superset DB engine spec by @betodealmeida in #175
- chore: remove create_engine by @betodealmeida in #176
- feat: parallelize
do_ping
and add timeout by @betodealmeida in #177 - refactor: dimension nodes have expressions by @betodealmeida in #180
- chore: rename
node.expression
tonode.query
by @betodealmeida in #182 - chore: disallow expression in source nodes by @betodealmeida in #181
- add-database command by @samredai in #183
- Add error handling to read metric route
*/metrics/N/
(Closes #170) by @samredai in #186 - Fix comments example config (Closes #185) by @samredai in #187
- Set sqlite database ID to -1 (Closes #184) by @samredai in #188
- Add myself to AUTHORS.rst :D by @samredai in #201
- Extend core examples. by @agorajek in #190
- fix: do not create tables on app start by @betodealmeida in #203
- add graphql api by @CircArgs in #199
- fix: run
pip-compile-multi
for strawberry by @betodealmeida in #205 - s/datajunction/dj by @agorajek in #206
- chore: remove
src/
directory by @betodealmeida in #207 - chore: fix lint and enable it in CI by @betodealmeida in #208
- chore: add 3.11 to tests by @betodealmeida in #209
- Pin uvicorn to 0.17.6 by @samredai in #211
- Fix installation issues after the renames. by @agorajek in #210
- Add restart rule to db_migration service by @samredai in #212
- Auto format SQL query on every node update. by @agorajek in #213
- Create pull_request_template.md by @agorajek in #214
- chore: improve PR template by @betodealmeida in #215
- feat: dj urls command by @betodealmeida in #216
- chore: improve dependencies by @betodealmeida in #220
- docs: DB migration docs by @betodealmeida in #222
- Add Cockroach DB docker compose and examples by @samredai in #217
- chore: fix migration for SQLite by @betodealmeida in #224
- Use SQLite by default by @samredai in #226
- Delete removed metrics by @CircArgs in #227
- Add .env file for default docker compose by @samredai in #229
- Remove postgres_metadata override in crdb example by @samredai in #231
- Add support for GROUP BY using positions by @samredai in #233
- Manually dispatched workflow to commit openapi spec by @samredai in #235
- Change OpenAPI workflow to Open a PR by @samredai in #237
- feat: add UUID column to databases by @betodealmeida in #236
- Update flake8 to github url instead of gitlab url by @samredai in #244
- Add PYTEST_ARGS to Makefile and start a "Development Tips" section by @samredai in #240
- Update OpenAPI Spec - 11-18-2022 by @github-actions in #246
- Ignore openapi.json when running end-of-file-fixer by @samredai in #248
- Explicitly set dj name and core network by @samredai in #252
- Disable check_same_thread when using SQLite by @samredai in #254
- DJ SQL AST with a swappable sqloxide backend by @CircArgs in #242
- add nick to authors by @CircArgs in #258
- Update watchfiles to 0.18.1 by @samredai in #250
- Ast refinements by @CircArgs in #260
- Add ansi and sparksql query tests that run with --tpcds arg by @samredai in #263
- Extract deps by @CircArgs in #264
- Add status and mode attributes to Node by @samredai in #267
- Add hugo powered versioned docs site by @samredai in #266
- Add
MissingParent
class andmissing_parents
node attribute by @samredai in #269 - Build logic for nodes using the DJ SQL AST by @CircArgs in #270
- generate an HTML coverage report when running tests by @samredai in #278
- Add endpoint for posting availability state of materialized nodes by @samredai in #275
- Fix pre-commit error by upgrading isort by @samredai in #281
- Ast refinements by @CircArgs in #280
- Fix bug by adding updated_at to availabilitystate table by @samredai in #282
- Fixing some docker and alembic bugs by @samredai in #284
- Add a POST /nodes/validate/ route by @samredai in #276
- Change all = to - in RST files to avoid pre-commit error by @samredai in #288
- Use names in API routes instead of IDs by @samredai in #285
- Extend pydantic datetime parser with a UTCDatetime parser by @samredai in #287
- Generic column types by @CircArgs in #290
- Column typing validation + named inner types by @CircArgs in #295
- raw expressions by @CircArgs in #292
- Adding a reference node to facilitate node versioning by @shangyian in #289
- Add models and routes for catalogs and engines by @samredai in #299
- Small alembic fix by @samredai in #303
- Fill in content for the concept page on nodes by @samredai in #297
- Add a runbook for basic DJ requests creating nodes by @samredai in #306
- Renaming reference nodes + adding naming conventions by @shangyian in #307
- type aliases and cast statement by @CircArgs in #309
- Query similarity by @CircArgs in #310
- add agg and filter columns from api to projections by @CircArgs in #313
- Adding display name to node and modify responses for read node endpoints by @shangyian in #311
- Add separate endpoints for adding tables and dimension labels by @samredai in #314
- Allow specifying specific dimension_column by @samredai in #315
- Change catalog attribute on table to Catalog instance by @samredai in #316
- Endpoint for query-based node similarity by @samredai in #317
- Squash alembic revisions by @shangyian in #318
- Adding service healthchecks by @shangyian in #319
- Cube nodes and cube endpoints by @samredai in #322
- Add endpoint to list all downstream nodes from a given node by @shangyian in #324
- Add str for Catalog model by @samredai in #326
- Move metric endpoints logic to use AST by @samredai in #327
- Use a single recursive CTE query to find all downstream nodes instead by @shangyian in #329
- Add myself to authors by @shangyian in #332
- Adding materialization config to nodes + endpoint to create them by @shangyian in #330
- DJ Roads Example Database by @samredai in #333
- Build dimension bugfix by @CircArgs in #335
- include uri in EngineInfo, update runbook by @samredai in #334
- Modify versioning scheme to use basic semantic versioning by @shangyian in #337
- Enable type inference for arbitrarily complex maps by @shangyian in #340
- Support type parsing for rows with complex types by @shangyian in #341
- Unnammed select columns bugfix by @CircArgs in #344
- Test for alembic migrations by @shangyian in #347
- Various type inference and metric validation-related fixes by @shangyian in #346
- Add notebook example, modeling the roads example database by @samredai in #348
- Dj query api by @CircArgs in #336
- Generate Python client from OpenAPI spec with GitHub actions by @shangyian in #350
- Move all models to the model module by @shangyian in #355
- Adding tags by @shangyian in #353
- Add GITHUB_TOKEN env variable. by @agorajek in #358
- Adjust pre-commit hooks to skip the clients dir. by @agorajek in #360
- Update Python Client - c9bdc78 by @agorajek in #361
- Small fix in README by @samredai in #363
- Update Python Client - 5bd7b61 by @agorajek in #364
- Update generate-clients.yml by @agorajek in #367
- Ast metric check by @CircArgs in #369
- Add query service interface and allow for column inference when one is set by @shangyian in #368
- Content for Node Dependencies concept page by @samredai in #366
- Add status logic for draft nodes and missing parent resolution by @samredai in #354
- Fixing HTTP status code by @shangyian in #372
- Fix some response codes in tests by @samredai in #375
- Remove example from name by @samredai in #376
- fix: Postgresql Docker file by @betodealmeida in #378
- chore: bump deps for Superset by @betodealmeida in #379
- fix: update for Superset by @betodealmeida in #377
- docs: Netflix talk by @betodealmeida in #383
- Update Python Client - 6ef729b by @agorajek in #384
- Fix column type parsing to handle named fields in
ROW
by @shangyian in #390 - Endpoint for getting common dimensions for a set of metrics by @samredai in #387
- Update Python Client - 4e802f5 by @agorajek in #392
- Add column annotations by @shangyian in #394
- Update Python Client - a19aa79 by @agorajek in #396
- Complete migration over to REST API and Catalog/Engine + Build changes by @samredai in #397
- Update Python Client - 60e9709 by @agorajek in #400
- Add a table reflection concepts page by @samredai in #399
- Dimension Discovery concept page by @samredai in #398
- Add query running functions to the query service client by @samredai in #395
- Update Python Client - 55b64d6 by @agorajek in #401
- Adds column attribute for to identify pre-joined dimension attributes on sources/transforms by @shangyian in #404
- Add separate creation endpoints and rewire query-service for source node schema auto-population by @shangyian in #403
- Update Python Client - 2f63c9f by @agorajek in #408
- Adding endpoints for retrieving data and SQL for a node by @shangyian in #409
- Update Python Client - f5019d6 by @agorajek in #410
- poetry config for openapi client by @samredai in #413
- rename djclient to djopenapi by @samredai in #414
- Listing dimensions for a node should yield all possible dimensions by @shangyian in #412
- Typo fix by @samredai in #415
- Update Python Client - 6b2e953 by @agorajek in #416
- add a library skeleton for djclient by @samredai in #417
- Custom ANTLR-based SQL parser by @samredai in #418
- Add Query Building and Compilation on Custom ANTLR-based Parser by @shangyian in #422
- Update Python Client - d0e26d3 by @agorajek in #423
- Fill in docs pages for creating nodes by @samredai in #424
- Add docker page by @samredai in #425
- Fix source node schema inference by @shangyian in #427
- Return column names and types with TranslatedSQL by @samredai in #429
- Add CORS support and include dimensions attribute on columns by @shangyian in #430
- Update Python Client - 80373fc by @agorajek in #432
- Change content pages to markdown by @samredai in #426
boolean
is a valid type andMAX
should take strings by @shangyian in #436- Fixing invalid query building on dimensions with aliased join keys by @shangyian in #439
- inject columns into query results before returning by @samredai in #440
- Update Python Client - da886b2 by @agorajek in #442
- Basic Python Client by @shangyian in #443
- fix column injection bug by @samredai in #444
- Rename API functions and set OpenAPI workflows to manual dispatch by @samredai in #450
- Add node deletion by @shangyian in #449
- Additional functionality for DJ Client by @shangyian in #447
- opentelemetry auto-instrumenting by @samredai in #453
- The DataJunction API Specification by @samredai in #452
- Require primary key for dimension nodes + type check compatibility during linking by @shangyian in #455
- Adding PERCENT_RANK by @shangyian in #456
- Node namespaces with a default 'default' namespace by @samredai in #457
- Poetry config for publishing to pypi by @samredai in #459
- add dependencies to pyproject.toml by @samredai in #460
- Optimize build + add dialect +
UNNEST
+ type compatibility fixes by @shangyian in #461 - Excalidraw shortcode by @samredai in #463
- Consistent column definition format as well as some housekeeping by @samredai in #464
- Several namespaces changes + Dockerfile reload by @shangyian in #465
- function registry more use of dispatch/correct typings by @CircArgs in #462
- Update client to use the factory pattern by @shangyian in #466
- Cubes + Materialization + Queries for Multiple Metrics by @shangyian in #467
- Rename libraries + add make commands for version bumps by @shangyian in #469
- bugfix: Node validation check should take into account type inference by @shangyian in #473
- Improve DJ client tests + remove top-level nodes access by @shangyian in #472
- Decompose Cube Metrics by @shangyian in #471
- Introduction docs + readme + cubes docs by @shangyian in #475
- Creating namespaces from the client and namespace docs by @samredai in #476
- Align dependency management + workflows for publishing and releasing by @shangyian in #474
New Contributors
- @betodealmeida made their first contribution in #1
- @agorajek made their first contribution in #77
- @zzzzz1st made their first contribution in #103
- @aliirz made their first contribution in #155
- @samredai made their first contribution in #183
- @CircArgs made their first contribution in #199
- @github-actions made their first contribution in #246
- @shangyian made their first contribution in #289
Full Changelog: https://github.com/DataJunction/dj/commits/0.0.1a10