Apache Druid: a high performance real-time analytics database.
Go to file
Gian Merlino 4b1ffbc452
Various changes and fixes to UNNEST. (#13892)
* Various changes and fixes to UNNEST.

Native changes:

1) UnnestDataSource: Replace "column" and "outputName" with "virtualColumn".
   This enables pushing expressions into the datasource. This in turn
   allows us to do the next thing...

2) UnnestStorageAdapter: Logically apply query-level filters and virtual
   columns after the unnest operation. (Physically, filters are pulled up,
   when possible.) This is beneficial because it allows filters and
   virtual columns to reference the unnested column, and because it is
   consistent with how the join datasource works.

3) Various documentation updates, including declaring "unnest" as an
   experimental feature for now.

SQL changes:

1) Rename DruidUnnestRel (& Rule) to DruidUnnestRel (& Rule). The rel
   is simplified: it only handles the UNNEST part of a correlated join.
   Constant UNNESTs are handled with regular inline rels.

2) Rework DruidCorrelateUnnestRule to focus on pulling Projects from
   the left side up above the Correlate. New test testUnnestTwice verifies
   that this works even when two UNNESTs are stacked on the same table.

3) Include ProjectCorrelateTransposeRule from Calcite to encourage
   pushing mappings down below the left-hand side of the Correlate.

4) Add a new CorrelateFilterLTransposeRule and CorrelateFilterRTransposeRule
   to handle pulling Filters up above the Correlate. New tests
   testUnnestWithFiltersOutside and testUnnestTwiceWithFilters verify
   this behavior.

5) Require a context feature flag for SQL UNNEST, since it's undocumented.
   As part of this, also cleaned up how we handle feature flags in SQL.
   They're now hooked into EngineFeatures, which is useful because not
   all engines support all features.
2023-03-10 16:42:08 +05:30
.github fix ci (#13901) 2023-03-08 16:55:47 +05:30
.idea merge druid-core, extendedset, and druid-hll into druid-processing to simplify everything (#13698) 2023-02-17 14:27:41 -08:00
benchmarks Improve memory efficiency of WrappedRoaringBitmap. (#13889) 2023-03-09 15:48:02 -08:00
cloud merge druid-core, extendedset, and druid-hll into druid-processing to simplify everything (#13698) 2023-02-17 14:27:41 -08:00
codestyle Adding forbidden api for Properties#get() and Properties#getOrDefault() (#13882) 2023-03-06 10:42:04 +05:30
dev Make http options the default configurations (#13092) 2022-10-05 05:35:17 +05:30
distribution Add ability to add config files when using druid on Kubernetes (#13795) 2023-03-10 14:52:02 +05:30
docs Various changes and fixes to UNNEST. (#13892) 2023-03-10 16:42:08 +05:30
examples Fix start-druid for indexers. (#13891) 2023-03-08 10:32:07 -08:00
extensions-contrib Avoid creating new RelDataTypeFactory during SQL planning. (#13904) 2023-03-08 21:55:49 -08:00
extensions-core Various changes and fixes to UNNEST. (#13892) 2023-03-10 16:42:08 +05:30
helm/druid helm: Add serviceAccounts, rbac, and small fixes (#13747) 2023-02-23 11:42:03 +05:30
hooks Git hooks should fail on errors; pass args to git hooks (#12322) 2022-03-10 09:07:50 +09:00
indexing-hadoop Hadoop based batch ingestion support range partition (#13303) 2023-02-23 11:38:03 +05:30
indexing-service Improve documentation for tombstone generation and minor improvement (#13907) 2023-03-10 06:59:51 +05:30
integration-tests add latest version of druid operator to integeration tests (#13883) 2023-03-10 16:11:25 +05:30
integration-tests-ex Removes FiniteFirehoseFactory and its implementations (#12852) 2023-03-02 18:07:17 +05:30
licenses Upgrade typescript and other dependencies (#13762) 2023-02-06 23:12:54 -08:00
processing Various changes and fixes to UNNEST. (#13892) 2023-03-10 16:42:08 +05:30
publications De-incubation cleanup in code, docs, packaging (#9108) 2020-01-03 12:33:19 -05:00
server Improve memory efficiency of WrappedRoaringBitmap. (#13889) 2023-03-09 15:48:02 -08:00
services Improve memory efficiency of WrappedRoaringBitmap. (#13889) 2023-03-09 15:48:02 -08:00
sql Various changes and fixes to UNNEST. (#13892) 2023-03-10 16:42:08 +05:30
web-console Improve memory efficiency of WrappedRoaringBitmap. (#13889) 2023-03-09 15:48:02 -08:00
website Improve memory efficiency of WrappedRoaringBitmap. (#13889) 2023-03-09 15:48:02 -08:00
.asf.yaml Add .asf.yaml. (#9083) 2019-12-20 16:45:38 -08:00
.backportrc.json Add 0.18.0 to .backportrc.json to facilitate backport. (#9661) 2020-04-11 13:49:04 -07:00
.codecov.yml Use Codecov (#8388) 2019-08-28 08:49:30 -07:00
.dockerignore Add docker container for druid (#6896) 2019-02-08 12:12:28 +00:00
.gitignore Python Druid API for use in notebooks (#13787) 2023-03-04 18:25:19 -08:00
.lgtm.yml be consistent about referring to the web console by its name (#13118) 2022-09-19 15:02:17 -07:00
CONTRIBUTING.md Add missing MSQ error code fields to docs (#13308) 2022-11-10 21:03:04 +05:30
LABELS Add plain text README.txt, use relative link from README.md to build.md (#7611) 2019-05-09 21:29:26 -07:00
LICENSE merge druid-core, extendedset, and druid-hll into druid-processing to simplify everything (#13698) 2023-02-17 14:27:41 -08:00
NOTICE Update year in the notice file and the release process instructions (#12622) 2022-08-23 18:17:18 +05:30
README.md be consistent about referring to the web console by its name (#13118) 2022-09-19 15:02:17 -07:00
README.template De-incubation cleanup in code, docs, packaging (#9108) 2020-01-03 12:33:19 -05:00
check_test_suite.py remove Travis CI (#13789) 2023-02-10 01:46:56 -08:00
check_test_suite_test.py remove Travis CI (#13789) 2023-02-10 01:46:56 -08:00
it.sh Bump CycloneDX module to address POM errors (#13878) 2023-03-03 15:39:15 +05:30
licenses.yaml Web console: Compaction history dialog (#13861) 2023-03-06 11:52:25 -08:00
owasp-dependency-check-suppressions.xml Suppress CVEs (#13733) 2023-02-01 04:18:41 -08:00
pom.xml Bump CycloneDX module to address POM errors (#13878) 2023-03-03 15:39:15 +05:30
upload.sh Adding licenses and enable apache-rat-plugin. (#6215) 2018-09-18 08:39:26 -07:00

README.md

Build Status Language grade: Java Coverage Status Docker Helm


Website | Twitter | Download | Get Started | Documentation | Community | Build | Contribute | License


Apache Druid

Druid is a high performance real-time analytics database. Druid's main value add is to reduce time to insight and action.

Druid is designed for workflows where fast queries and ingest really matter. Druid excels at powering UIs, running operational (ad-hoc) queries, or handling high concurrency. Consider Druid as an open source alternative to data warehouses for a variety of use cases. The design documentation explains the key concepts.

Getting started

You can get started with Druid with our local or Docker quickstart.

Druid provides a rich set of APIs (via HTTP and JDBC) for loading, managing, and querying your data. You can also interact with Druid via the built-in web console (shown below).

Load data

data loader Kafka

Load streaming and batch data using a point-and-click wizard to guide you through ingestion setup. Monitor one off tasks and ingestion supervisors.

Manage the cluster

management

Manage your cluster with ease. Get a view of your datasources, segments, ingestion tasks, and services from one convenient location. All powered by SQL systems tables, allowing you to see the underlying query for each view.

Issue queries

query view combo

Use the built-in query workbench to prototype DruidSQL and native queries or connect one of the many tools that help you make the most out of Druid.

Documentation

See the latest documentation for the documentation for the current official release. If you need information on a previous release, you can browse previous releases documentation.

Make documentation and tutorials updates in /docs using MarkDown and contribute them using a pull request.

Community

Visit the official project community page to read about getting involved in contributing to Apache Druid, and how we help one another use and operate Druid.

  • Druid users can find help in the druid-user mailing list on Google Groups, and have more technical conversations in #troubleshooting on Slack.
  • Druid development discussions take place in the druid-dev mailing list (dev@druid.apache.org). Subscribe by emailing dev-subscribe@druid.apache.org. For live conversations, join the #dev channel on Slack.

Check out the official community page for details of how to join the community Slack channels.

Find articles written by community members and a calendar of upcoming events on the project site - contribute your own events and articles by submitting a PR in the apache/druid-website-src repository.

Building from source

Please note that JDK 8 or JDK 11 is required to build Druid.

See the latest build guide for instructions on building Apache Druid from source.

Contributing

Please follow the community guidelines for contributing.

For instructions on setting up IntelliJ dev/intellij-setup.md

License

Apache License, Version 2.0