blob: a363de00582aff5ab29529ab733507ba0787dbfd [file] [log] [blame]
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>SQL metadata tables · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/querying/sql-metadata-tables.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.23.0" /><meta property="og:title" content="SQL metadata tables · Apache Druid"/><meta property="og:type" content="website"/><meta property="og:url" content="https://druid.apache.org/index.html"/><meta property="og:description" content="&lt;!--"/><meta property="og:image" content="https://druid.apache.org/img/druid_nav.png"/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"/><link rel="shortcut icon" href="/img/favicon.png"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"/><script async="" src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script><script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'UA-131010415-1');
</script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/druid_nav.png" alt="Apache Druid"/></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/technology" target="_self">Technology</a></li><li class=""><a href="/use-cases" target="_self">Use Cases</a></li><li class=""><a href="/druid-powered" target="_self">Powered By</a></li><li class="siteNavGroupActive"><a href="/docs/latest/design/index.html" target="_self">Docs</a></li><li class=""><a href="/community/" target="_self">Community</a></li><li class=""><a href="https://www.apache.org" target="_self">Apache</a></li><li class=""><a href="/downloads.html" target="_self">Download</a></li><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line1"></div><div class="line2"></div><div class="line3"></div></div></div><h2><i></i><span>Druid SQL</span></h2><div class="tocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Getting started<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/latest/design/index.html">Introduction to Apache Druid</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/index.html">Quickstart</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/docker.html">Docker</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/single-server.html">Single server deployment</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/cluster.html">Clustered deployment</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Tutorials<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/tutorial-batch.html">Loading files natively</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/tutorial-kafka.html">Load from Apache Kafka</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/tutorial-batch-hadoop.html">Load from Apache Hadoop</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/tutorial-query.html">Querying data</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/tutorial-rollup.html">Roll-up</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/tutorial-retention.html">Configuring data retention</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/tutorial-update-data.html">Updating existing data</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/tutorial-compaction.html">Compacting segments</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/tutorial-delete-data.html">Deleting data</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/tutorial-ingestion-spec.html">Writing an ingestion spec</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/tutorial-transform-spec.html">Transforming input data</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/tutorials/tutorial-kerberos-hadoop.html">Kerberized HDFS deep storage</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Design<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/latest/design/architecture.html">Design</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/design/segments.html">Segments</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/design/processes.html">Processes and servers</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/dependencies/deep-storage.html">Deep storage</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/dependencies/metadata-storage.html">Metadata storage</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/dependencies/zookeeper.html">ZooKeeper</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Ingestion<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/index.html">Ingestion</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/data-formats.html">Data formats</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/data-model.html">Data model</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/rollup.html">Data rollup</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/partitioning.html">Partitioning</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/ingestion-spec.html">Ingestion spec</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/schema-design.html">Schema design tips</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/data-management.html">Data management</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/compaction.html">Compaction</a></li><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Stream ingestion</h4><ul><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/kafka-ingestion.html">Apache Kafka ingestion</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/kafka-supervisor-reference.html">Apache Kafka supervisor</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/kafka-supervisor-operations.html">Apache Kafka operations</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/kinesis-ingestion.html">Amazon Kinesis</a></li></ul></div><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Batch ingestion</h4><ul><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/native-batch.html">Native batch</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/native-batch-simple-task.html">Simple task indexing</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/native-batch-input-sources.html">Input sources</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/native-batch-firehose.html">Firehose</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/hadoop.html">Hadoop-based</a></li></ul></div><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/tasks.html">Task reference</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/faq.html">Troubleshooting FAQ</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Querying<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Druid SQL</h4><ul><li class="navListItem"><a class="navItem" href="/docs/latest/querying/sql.html">Overview and syntax</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/sql-data-types.html">SQL data types</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/sql-operators.html">Operators</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/sql-scalar.html">Scalar functions</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/sql-aggregations.html">Aggregation functions</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/sql-multivalue-string-functions.html">Multi-value string functions</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/sql-api.html">Druid SQL API</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/sql-jdbc.html">JDBC driver API</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/sql-query-context.html">SQL query context</a></li><li class="navListItem navListItemActive"><a class="navItem" href="/docs/latest/querying/sql-metadata-tables.html">SQL metadata tables</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/sql-translation.html">SQL query translation</a></li></ul></div><li class="navListItem"><a class="navItem" href="/docs/latest/querying/querying.html">Native queries</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/query-execution.html">Query execution</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/troubleshooting.html">Troubleshooting</a></li><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Concepts</h4><ul><li class="navListItem"><a class="navItem" href="/docs/latest/querying/datasource.html">Datasources</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/joins.html">Joins</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/lookups.html">Lookups</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/multi-value-dimensions.html">Multi-value dimensions</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/multitenancy.html">Multitenancy</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/caching.html">Query caching</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/using-caching.html">Using query caching</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/query-context.html">Query context</a></li></ul></div><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Native query types</h4><ul><li class="navListItem"><a class="navItem" href="/docs/latest/querying/timeseriesquery.html">Timeseries</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/topnquery.html">TopN</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/groupbyquery.html">GroupBy</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/scan-query.html">Scan</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/searchquery.html">Search</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/timeboundaryquery.html">TimeBoundary</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/segmentmetadataquery.html">SegmentMetadata</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/datasourcemetadataquery.html">DatasourceMetadata</a></li></ul></div><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Native query components</h4><ul><li class="navListItem"><a class="navItem" href="/docs/latest/querying/filters.html">Filters</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/granularities.html">Granularities</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/dimensionspecs.html">Dimensions</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/aggregations.html">Aggregations</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/post-aggregations.html">Post-aggregations</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/misc/math-expr.html">Expressions</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/having.html">Having filters (groupBy)</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/limitspec.html">Sorting and limiting (groupBy)</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/topnmetricspec.html">Sorting (topN)</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/sorting-orders.html">String comparators</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/virtual-columns.html">Virtual columns</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/geo.html">Spatial filters</a></li></ul></div></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Configuration<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/latest/configuration/index.html">Configuration reference</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions.html">Extensions</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/configuration/logging.html">Logging</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Operations<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/latest/operations/druid-console.html">Web console</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/getting-started.html">Getting started with Apache Druid</a></li><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Security</h4><ul><li class="navListItem"><a class="navItem" href="/docs/latest/operations/security-overview.html">Security overview</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/security-user-auth.html">User authentication and authorization</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/auth-ldap.html">LDAP auth</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/password-provider.html">Password providers</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/dynamic-config-provider.html">Dynamic Config Providers</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/tls-support.html">TLS support</a></li></ul></div><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Performance tuning</h4><ul><li class="navListItem"><a class="navItem" href="/docs/latest/operations/basic-cluster-tuning.html">Basic cluster tuning</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/segment-optimization.html">Segment Size Optimization</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/mixed-workloads.html">Mixed workloads</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/http-compression.html">HTTP compression</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/clean-metadata-store.html">Automated metadata cleanup</a></li></ul></div><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Monitoring</h4><ul><li class="navListItem"><a class="navItem" href="/docs/latest/operations/request-logging.html">Request logging</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/metrics.html">Metrics</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/alerts.html">Alerts</a></li></ul></div><li class="navListItem"><a class="navItem" href="/docs/latest/operations/api-reference.html">API reference</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/high-availability.html">High availability</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/rolling-updates.html">Rolling updates</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/rule-configuration.html">Retaining or automatically dropping data</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/other-hadoop.html">Working with different versions of Apache Hadoop</a></li><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Misc</h4><ul><li class="navListItem"><a class="navItem" href="/docs/latest/operations/management-uis.html">Legacy Management UIs</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/dump-segment.html">dump-segment tool</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/reset-cluster.html">reset-cluster tool</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/insert-segment-to-db.html">insert-segment-to-db tool</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/pull-deps.html">pull-deps tool</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/deep-storage-migration.html">Deep storage migration</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/export-metadata.html">Export Metadata Tool</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/metadata-migration.html">Metadata Migration</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/use_sbt_to_build_fat_jar.html">Content for build.sbt</a></li></ul></div></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Development<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/latest/development/overview.html">Developing on Druid</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/modules.html">Creating extensions</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/javascript.html">JavaScript functionality</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/build.html">Build from source</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/versioning.html">Versioning</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/experimental.html">Experimental features</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Misc<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/latest/misc/papers-and-talks.html">Papers</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Hidden<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/latest/comparisons/druid-vs-elasticsearch.html">Apache Druid vs Elasticsearch</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/comparisons/druid-vs-key-value.html">Apache Druid vs. Key/Value Stores (HBase/Cassandra/OpenTSDB)</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/comparisons/druid-vs-kudu.html">Apache Druid vs Kudu</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/comparisons/druid-vs-redshift.html">Apache Druid vs Redshift</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/comparisons/druid-vs-spark.html">Apache Druid vs Spark</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/comparisons/druid-vs-sql-on-hadoop.html">Apache Druid vs SQL-on-Hadoop</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/design/auth.html">Authentication and Authorization</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/design/broker.html">Broker</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/design/coordinator.html">Coordinator Process</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/design/historical.html">Historical Process</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/design/indexer.html">Indexer Process</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/design/indexing-service.html">Indexing Service</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/design/middlemanager.html">MiddleManager Process</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/design/overlord.html">Overlord Process</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/design/router.html">Router Process</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/design/peons.html">Peons</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/approximate-histograms.html">Approximate Histogram aggregators</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/avro.html">Apache Avro</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/azure.html">Microsoft Azure</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/bloom-filter.html">Bloom Filter</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/datasketches-extension.html">DataSketches extension</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/datasketches-hll.html">DataSketches HLL Sketch module</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/datasketches-quantiles.html">DataSketches Quantiles Sketch module</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/datasketches-theta.html">DataSketches Theta Sketch module</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/datasketches-tuple.html">DataSketches Tuple Sketch module</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/druid-basic-security.html">Basic Security</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/druid-kerberos.html">Kerberos</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/druid-lookups.html">Cached Lookup Module</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/druid-ranger-security.html">Apache Ranger Security</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/google.html">Google Cloud Storage</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/hdfs.html">HDFS</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/kafka-extraction-namespace.html">Apache Kafka Lookups</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/lookups-cached-global.html">Globally Cached Lookups</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/mysql.html">MySQL Metadata Store</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/orc.html">ORC Extension</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/druid-pac4j.html">Druid pac4j based Security extension</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/parquet.html">Apache Parquet Extension</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/postgresql.html">PostgreSQL Metadata Store</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/protobuf.html">Protobuf</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/s3.html">S3-compatible</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/simple-client-sslcontext.html">Simple SSLContext Provider Module</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/stats.html">Stats aggregator</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/test-stats.html">Test Stats Aggregators</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/druid-aws-rds.html">Druid AWS RDS Module</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-core/kubernetes.html">Kubernetes</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/ambari-metrics-emitter.html">Ambari Metrics Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/cassandra.html">Apache Cassandra</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/cloudfiles.html">Rackspace Cloud Files</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/distinctcount.html">DistinctCount Aggregator</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/graphite.html">Graphite Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/influx.html">InfluxDB Line Protocol Parser</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/influxdb-emitter.html">InfluxDB Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/kafka-emitter.html">Kafka Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/materialized-view.html">Materialized View</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/momentsketch-quantiles.html">Moment Sketches for Approximate Quantiles module</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/moving-average-query.html">Moving Average Query</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/opentsdb-emitter.html">OpenTSDB Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/redis-cache.html">Druid Redis Cache</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/sqlserver.html">Microsoft SQLServer</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/statsd.html">StatsD Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/tdigestsketch-quantiles.html">T-Digest Quantiles Sketch module</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/thrift.html">Thrift</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/time-min-max.html">Timestamp Min/Max aggregators</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/gce-extensions.html">GCE Extensions</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/aliyun-oss.html">Aliyun OSS</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/development/extensions-contrib/prometheus.html">Prometheus Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/operations/kubernetes.html">kubernetes</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/hll-old.html">Cardinality/HyperUnique aggregators</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/querying/select-query.html">Select</a></li><li class="navListItem"><a class="navItem" href="/docs/latest/ingestion/standalone-realtime.html">Realtime Process</a></li></ul></div></div></section></div><script>
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
var links = coll[i].nextElementSibling.getElementsByTagName('*');
if (checkActiveCategory){
for (var j = 0; j < links.length; j++) {
if (links[j].classList.contains('navListItemActive')){
coll[i].nextElementSibling.classList.toggle('hide');
coll[i].childNodes[1].classList.toggle('rotate');
checkActiveCategory = false;
break;
}
}
}
coll[i].addEventListener('click', function() {
var arrow = this.childNodes[1];
arrow.classList.toggle('rotate');
var content = this.nextElementSibling;
content.classList.toggle('hide');
});
}
document.addEventListener('DOMContentLoaded', function() {
createToggler('#navToggler', '#docsNav', 'docsSliderActive');
createToggler('#tocToggler', 'body', 'tocActive');
var headings = document.querySelector('.toc-headings');
headings && headings.addEventListener('click', function(event) {
var el = event.target;
while(el !== headings){
if (el.tagName === 'A') {
document.body.classList.remove('tocActive');
break;
} else{
el = el.parentNode;
}
}
}, false);
function createToggler(togglerSelector, targetSelector, className) {
var toggler = document.querySelector(togglerSelector);
var target = document.querySelector(targetSelector);
if (!toggler) {
return;
}
toggler.onclick = function(event) {
event.preventDefault();
target.classList.toggle(className);
};
}
});
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/sql-metadata-tables.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">SQL metadata tables</h1></header><article><div><span><!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
~ with the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<blockquote>
<p>Apache Druid supports two query languages: Druid SQL and <a href="/docs/latest/querying/querying.html">native queries</a>.
This document describes the SQL language.</p>
</blockquote>
<p>Druid Brokers infer table and column metadata for each datasource from segments loaded in the cluster, and use this to
plan <a href="/docs/latest/querying/sql.html">SQL queries</a>. This metadata is cached on Broker startup and also updated periodically in the background through
<a href="/docs/latest/querying/segmentmetadataquery.html">SegmentMetadata queries</a>. Background metadata refreshing is triggered by
segments entering and exiting the cluster, and can also be throttled through configuration.</p>
<p>Druid exposes system information through special system tables. There are two such schemas available: Information Schema and Sys Schema.
Information schema provides details about table and column types. The &quot;sys&quot; schema provides information about Druid internals like segments/tasks/servers.</p>
<h2><a class="anchor" aria-hidden="true" id="information-schema"></a><a href="#information-schema" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>INFORMATION SCHEMA</h2>
<p>You can access table and column metadata through JDBC using <code>connection.getMetaData()</code>, or through the
INFORMATION_SCHEMA tables described below. For example, to retrieve metadata for the Druid
datasource &quot;foo&quot;, use the query:</p>
<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> *
<span class="hljs-keyword">FROM</span> INFORMATION_SCHEMA.COLUMNS
<span class="hljs-keyword">WHERE</span> <span class="hljs-string">"TABLE_SCHEMA"</span> = <span class="hljs-string">'druid'</span> <span class="hljs-keyword">AND</span> <span class="hljs-string">"TABLE_NAME"</span> = <span class="hljs-string">'foo'</span>
</code></pre>
<blockquote>
<p>Note: INFORMATION_SCHEMA tables do not currently support Druid-specific functions like <code>TIME_PARSE</code> and
<code>APPROX_QUANTILE_DS</code>. Only standard SQL functions can be used.</p>
</blockquote>
<h3><a class="anchor" aria-hidden="true" id="schemata-table"></a><a href="#schemata-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>SCHEMATA table</h3>
<p><code>INFORMATION_SCHEMA.SCHEMATA</code> provides a list of all known schemas, which include <code>druid</code> for standard <a href="/docs/latest/querying/datasource.html#table">Druid Table datasources</a>, <code>lookup</code> for <a href="/docs/latest/querying/datasource.html#lookup">Lookups</a>, <code>sys</code> for the virtual <a href="#system-schema">System metadata tables</a>, and <code>INFORMATION_SCHEMA</code> for these virtual tables. Tables are allowed to have the same name across different schemas, so the schema may be included in an SQL statement to distinguish them, e.g. <code>lookup.table</code> vs <code>druid.table</code>.</p>
<table>
<thead>
<tr><th>Column</th><th>Notes</th></tr>
</thead>
<tbody>
<tr><td>CATALOG_NAME</td><td>Always set as <code>druid</code></td></tr>
<tr><td>SCHEMA_NAME</td><td><code>druid</code>, <code>lookup</code>, <code>sys</code>, or <code>INFORMATION_SCHEMA</code></td></tr>
<tr><td>SCHEMA_OWNER</td><td>Unused</td></tr>
<tr><td>DEFAULT_CHARACTER_SET_CATALOG</td><td>Unused</td></tr>
<tr><td>DEFAULT_CHARACTER_SET_SCHEMA</td><td>Unused</td></tr>
<tr><td>DEFAULT_CHARACTER_SET_NAME</td><td>Unused</td></tr>
<tr><td>SQL_PATH</td><td>Unused</td></tr>
</tbody>
</table>
<h3><a class="anchor" aria-hidden="true" id="tables-table"></a><a href="#tables-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>TABLES table</h3>
<p><code>INFORMATION_SCHEMA.TABLES</code> provides a list of all known tables and schemas.</p>
<table>
<thead>
<tr><th>Column</th><th>Notes</th></tr>
</thead>
<tbody>
<tr><td>TABLE_CATALOG</td><td>Always set as <code>druid</code></td></tr>
<tr><td>TABLE_SCHEMA</td><td>The 'schema' which the table falls under, see <a href="#schemata-table">SCHEMATA table for details</a></td></tr>
<tr><td>TABLE_NAME</td><td>Table name. For the <code>druid</code> schema, this is the <code>dataSource</code>.</td></tr>
<tr><td>TABLE_TYPE</td><td>&quot;TABLE&quot; or &quot;SYSTEM_TABLE&quot;</td></tr>
<tr><td>IS_JOINABLE</td><td>If a table is directly joinable if on the right hand side of a <code>JOIN</code> statement, without performing a subquery, this value will be set to <code>YES</code>, otherwise <code>NO</code>. Lookups are always joinable because they are globally distributed among Druid query processing nodes, but Druid datasources are not, and will use a less efficient subquery join.</td></tr>
<tr><td>IS_BROADCAST</td><td>If a table is 'broadcast' and distributed among all Druid query processing nodes, this value will be set to <code>YES</code>, such as lookups and Druid datasources which have a 'broadcast' load rule, else <code>NO</code>.</td></tr>
</tbody>
</table>
<h3><a class="anchor" aria-hidden="true" id="columns-table"></a><a href="#columns-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>COLUMNS table</h3>
<p><code>INFORMATION_SCHEMA.COLUMNS</code> provides a list of all known columns across all tables and schema.</p>
<table>
<thead>
<tr><th>Column</th><th>Notes</th></tr>
</thead>
<tbody>
<tr><td>TABLE_CATALOG</td><td>Always set as <code>druid</code></td></tr>
<tr><td>TABLE_SCHEMA</td><td>The 'schema' which the table column falls under, see <a href="#schemata-table">SCHEMATA table for details</a></td></tr>
<tr><td>TABLE_NAME</td><td>The 'table' which the column belongs to, see <a href="#tables-table">TABLES table for details</a></td></tr>
<tr><td>COLUMN_NAME</td><td>The column name</td></tr>
<tr><td>ORDINAL_POSITION</td><td>The order in which the column is stored in a table</td></tr>
<tr><td>COLUMN_DEFAULT</td><td>Unused</td></tr>
<tr><td>IS_NULLABLE</td><td></td></tr>
<tr><td>DATA_TYPE</td><td></td></tr>
<tr><td>CHARACTER_MAXIMUM_LENGTH</td><td>Unused</td></tr>
<tr><td>CHARACTER_OCTET_LENGTH</td><td>Unused</td></tr>
<tr><td>NUMERIC_PRECISION</td><td></td></tr>
<tr><td>NUMERIC_PRECISION_RADIX</td><td></td></tr>
<tr><td>NUMERIC_SCALE</td><td></td></tr>
<tr><td>DATETIME_PRECISION</td><td></td></tr>
<tr><td>CHARACTER_SET_NAME</td><td></td></tr>
<tr><td>COLLATION_NAME</td><td></td></tr>
<tr><td>JDBC_TYPE</td><td>Type code from java.sql.Types (Druid extension)</td></tr>
</tbody>
</table>
<p>For example, this query returns <a href="/docs/latest/querying/sql-data-types.html">data type</a> information for columns in the <code>foo</code> table:</p>
<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-string">"ORDINAL_POSITION"</span>, <span class="hljs-string">"COLUMN_NAME"</span>, <span class="hljs-string">"IS_NULLABLE"</span>, <span class="hljs-string">"DATA_TYPE"</span>, <span class="hljs-string">"JDBC_TYPE"</span>
<span class="hljs-keyword">FROM</span> INFORMATION_SCHEMA.COLUMNS
<span class="hljs-keyword">WHERE</span> <span class="hljs-string">"TABLE_NAME"</span> = <span class="hljs-string">'foo'</span>
</code></pre>
<h2><a class="anchor" aria-hidden="true" id="system-schema"></a><a href="#system-schema" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>SYSTEM SCHEMA</h2>
<p>The &quot;sys&quot; schema provides visibility into Druid segments, servers and tasks.</p>
<blockquote>
<p>Note: &quot;sys&quot; tables do not currently support Druid-specific functions like <code>TIME_PARSE</code> and
<code>APPROX_QUANTILE_DS</code>. Only standard SQL functions can be used.</p>
</blockquote>
<h3><a class="anchor" aria-hidden="true" id="segments-table"></a><a href="#segments-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>SEGMENTS table</h3>
<p>Segments table provides details on all Druid segments, whether they are published yet or not.</p>
<table>
<thead>
<tr><th>Column</th><th>Type</th><th>Notes</th></tr>
</thead>
<tbody>
<tr><td>segment_id</td><td>STRING</td><td>Unique segment identifier</td></tr>
<tr><td>datasource</td><td>STRING</td><td>Name of datasource</td></tr>
<tr><td>start</td><td>STRING</td><td>Interval start time (in ISO 8601 format)</td></tr>
<tr><td>end</td><td>STRING</td><td>Interval end time (in ISO 8601 format)</td></tr>
<tr><td>size</td><td>LONG</td><td>Size of segment in bytes</td></tr>
<tr><td>version</td><td>STRING</td><td>Version string (generally an ISO8601 timestamp corresponding to when the segment set was first started). Higher version means the more recently created segment. Version comparing is based on string comparison.</td></tr>
<tr><td>partition_num</td><td>LONG</td><td>Partition number (an integer, unique within a datasource+interval+version; may not necessarily be contiguous)</td></tr>
<tr><td>num_replicas</td><td>LONG</td><td>Number of replicas of this segment currently being served</td></tr>
<tr><td>num_rows</td><td>LONG</td><td>Number of rows in current segment, this value could be null if unknown to Broker at query time</td></tr>
<tr><td>is_published</td><td>LONG</td><td>Boolean is represented as long type where 1 = true, 0 = false. 1 represents this segment has been published to the metadata store with <code>used=1</code>. See the <a href="/docs/latest/design/architecture.html#segment-lifecycle">Architecture page</a> for more details.</td></tr>
<tr><td>is_available</td><td>LONG</td><td>Boolean is represented as long type where 1 = true, 0 = false. 1 if this segment is currently being served by any process(Historical or realtime). See the <a href="/docs/latest/design/architecture.html#segment-lifecycle">Architecture page</a> for more details.</td></tr>
<tr><td>is_realtime</td><td>LONG</td><td>Boolean is represented as long type where 1 = true, 0 = false. 1 if this segment is <em>only</em> served by realtime tasks, and 0 if any historical process is serving this segment.</td></tr>
<tr><td>is_overshadowed</td><td>LONG</td><td>Boolean is represented as long type where 1 = true, 0 = false. 1 if this segment is published and is <em>fully</em> overshadowed by some other published segments. Currently, is_overshadowed is always false for unpublished segments, although this may change in the future. You can filter for segments that &quot;should be published&quot; by filtering for <code>is_published = 1 AND is_overshadowed = 0</code>. Segments can briefly be both published and overshadowed if they were recently replaced, but have not been unpublished yet. See the <a href="/docs/latest/design/architecture.html#segment-lifecycle">Architecture page</a> for more details.</td></tr>
<tr><td>shard_spec</td><td>STRING</td><td>JSON-serialized form of the segment <code>ShardSpec</code></td></tr>
<tr><td>dimensions</td><td>STRING</td><td>JSON-serialized form of the segment dimensions</td></tr>
<tr><td>metrics</td><td>STRING</td><td>JSON-serialized form of the segment metrics</td></tr>
<tr><td>last_compaction_state</td><td>STRING</td><td>JSON-serialized form of the compaction task's config (compaction task which created this segment). May be null if segment was not created by compaction task.</td></tr>
</tbody>
</table>
<p>For example to retrieve all segments for datasource &quot;wikipedia&quot;, use the query:</p>
<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> sys.segments <span class="hljs-keyword">WHERE</span> datasource = <span class="hljs-string">'wikipedia'</span>
</code></pre>
<p>Another example to retrieve segments total_size, avg_size, avg_num_rows and num_segments per datasource:</p>
<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span>
datasource,
<span class="hljs-keyword">SUM</span>(<span class="hljs-string">"size"</span>) <span class="hljs-keyword">AS</span> total_size,
<span class="hljs-keyword">CASE</span> <span class="hljs-keyword">WHEN</span> <span class="hljs-keyword">SUM</span>(<span class="hljs-string">"size"</span>) = <span class="hljs-number">0</span> <span class="hljs-keyword">THEN</span> <span class="hljs-number">0</span> <span class="hljs-keyword">ELSE</span> <span class="hljs-keyword">SUM</span>(<span class="hljs-string">"size"</span>) / (<span class="hljs-keyword">COUNT</span>(*) FILTER(<span class="hljs-keyword">WHERE</span> <span class="hljs-string">"size"</span> &gt; <span class="hljs-number">0</span>)) <span class="hljs-keyword">END</span> <span class="hljs-keyword">AS</span> avg_size,
<span class="hljs-keyword">CASE</span> <span class="hljs-keyword">WHEN</span> <span class="hljs-keyword">SUM</span>(num_rows) = <span class="hljs-number">0</span> <span class="hljs-keyword">THEN</span> <span class="hljs-number">0</span> <span class="hljs-keyword">ELSE</span> <span class="hljs-keyword">SUM</span>(<span class="hljs-string">"num_rows"</span>) / (<span class="hljs-keyword">COUNT</span>(*) FILTER(<span class="hljs-keyword">WHERE</span> num_rows &gt; <span class="hljs-number">0</span>)) <span class="hljs-keyword">END</span> <span class="hljs-keyword">AS</span> avg_num_rows,
<span class="hljs-keyword">COUNT</span>(*) <span class="hljs-keyword">AS</span> num_segments
<span class="hljs-keyword">FROM</span> sys.segments
<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> <span class="hljs-number">1</span>
<span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> <span class="hljs-number">2</span> <span class="hljs-keyword">DESC</span>
</code></pre>
<p>This query goes a step further and shows the overall profile of available, non-realtime segments across buckets of 1 million rows each for the <code>foo</code> datasource:</p>
<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">ABS</span>(<span class="hljs-string">"num_rows"</span> / <span class="hljs-number">1000000</span>) <span class="hljs-keyword">as</span> <span class="hljs-string">"bucket"</span>,
<span class="hljs-keyword">COUNT</span>(*) <span class="hljs-keyword">as</span> segments,
<span class="hljs-keyword">SUM</span>(<span class="hljs-string">"size"</span>) / <span class="hljs-number">1048576</span> <span class="hljs-keyword">as</span> totalSizeMiB,
<span class="hljs-keyword">MIN</span>(<span class="hljs-string">"size"</span>) / <span class="hljs-number">1048576</span> <span class="hljs-keyword">as</span> minSizeMiB,
<span class="hljs-keyword">AVG</span>(<span class="hljs-string">"size"</span>) / <span class="hljs-number">1048576</span> <span class="hljs-keyword">as</span> averageSizeMiB,
<span class="hljs-keyword">MAX</span>(<span class="hljs-string">"size"</span>) / <span class="hljs-number">1048576</span> <span class="hljs-keyword">as</span> maxSizeMiB,
<span class="hljs-keyword">SUM</span>(<span class="hljs-string">"num_rows"</span>) <span class="hljs-keyword">as</span> totalRows,
<span class="hljs-keyword">MIN</span>(<span class="hljs-string">"num_rows"</span>) <span class="hljs-keyword">as</span> minRows,
<span class="hljs-keyword">AVG</span>(<span class="hljs-string">"num_rows"</span>) <span class="hljs-keyword">as</span> averageRows,
<span class="hljs-keyword">MAX</span>(<span class="hljs-string">"num_rows"</span>) <span class="hljs-keyword">as</span> maxRows,
(<span class="hljs-keyword">AVG</span>(<span class="hljs-string">"size"</span>) / <span class="hljs-keyword">AVG</span>(<span class="hljs-string">"num_rows"</span>)) <span class="hljs-keyword">as</span> avgRowSizeB
<span class="hljs-keyword">FROM</span> sys.segments
<span class="hljs-keyword">WHERE</span> is_available = <span class="hljs-number">1</span> <span class="hljs-keyword">AND</span> is_realtime = <span class="hljs-number">0</span> <span class="hljs-keyword">AND</span> <span class="hljs-string">"datasource"</span> = <span class="hljs-string">`foo`</span>
<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> <span class="hljs-number">1</span>
<span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> <span class="hljs-number">1</span>
</code></pre>
<p>If you want to retrieve segment that was compacted (ANY compaction):</p>
<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> sys.segments <span class="hljs-keyword">WHERE</span> last_compaction_state <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> <span class="hljs-literal">null</span>
</code></pre>
<p>or if you want to retrieve segment that was compacted only by a particular compaction spec (such as that of the auto compaction):</p>
<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> sys.segments <span class="hljs-keyword">WHERE</span> last_compaction_state == <span class="hljs-string">'SELECT * FROM sys.segments where last_compaction_state = '</span>CompactionState{partitionsSpec=DynamicPartitionsSpec{maxRowsPerSegment=<span class="hljs-number">5000000</span>, maxTotalRows=<span class="hljs-number">9223372036854775807</span>}, indexSpec={<span class="hljs-keyword">bitmap</span>={<span class="hljs-keyword">type</span>=roaring, compressRunOnSerialization=<span class="hljs-literal">true</span>}, dimensionCompression=lz4, metricCompression=lz4, longEncoding=longs, segmentLoader=<span class="hljs-literal">null</span>}}<span class="hljs-string">'
</span></code></pre>
<p><em>Caveat:</em> Note that a segment can be served by more than one stream ingestion tasks or Historical processes, in that case it would have multiple replicas. These replicas are weakly consistent with each other when served by multiple ingestion tasks, until a segment is eventually served by a Historical, at that point the segment is immutable. Broker prefers to query a segment from Historical over an ingestion task. But if a segment has multiple realtime replicas, for e.g.. Kafka index tasks, and one task is slower than other, then the sys.segments query results can vary for the duration of the tasks because only one of the ingestion tasks is queried by the Broker and it is not guaranteed that the same task gets picked every time. The <code>num_rows</code> column of segments table can have inconsistent values during this period. There is an open <a href="https://github.com/apache/druid/issues/5915">issue</a> about this inconsistency with stream ingestion tasks.</p>
<h3><a class="anchor" aria-hidden="true" id="servers-table"></a><a href="#servers-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>SERVERS table</h3>
<p>Servers table lists all discovered servers in the cluster.</p>
<table>
<thead>
<tr><th>Column</th><th>Type</th><th>Notes</th></tr>
</thead>
<tbody>
<tr><td>server</td><td>STRING</td><td>Server name in the form host:port</td></tr>
<tr><td>host</td><td>STRING</td><td>Hostname of the server</td></tr>
<tr><td>plaintext_port</td><td>LONG</td><td>Unsecured port of the server, or -1 if plaintext traffic is disabled</td></tr>
<tr><td>tls_port</td><td>LONG</td><td>TLS port of the server, or -1 if TLS is disabled</td></tr>
<tr><td>server_type</td><td>STRING</td><td>Type of Druid service. Possible values include: COORDINATOR, OVERLORD, BROKER, ROUTER, HISTORICAL, MIDDLE_MANAGER or PEON.</td></tr>
<tr><td>tier</td><td>STRING</td><td>Distribution tier see <a href="/docs/latest/configuration/index.html#historical-general-configuration">druid.server.tier</a>. Only valid for HISTORICAL type, for other types it's null</td></tr>
<tr><td>current_size</td><td>LONG</td><td>Current size of segments in bytes on this server. Only valid for HISTORICAL type, for other types it's 0</td></tr>
<tr><td>max_size</td><td>LONG</td><td>Max size in bytes this server recommends to assign to segments see <a href="/docs/latest/configuration/index.html#historical-general-configuration">druid.server.maxSize</a>. Only valid for HISTORICAL type, for other types it's 0</td></tr>
<tr><td>is_leader</td><td>LONG</td><td>1 if the server is currently the 'leader' (for services which have the concept of leadership), otherwise 0 if the server is not the leader, or the default long value (0 or null depending on <code>druid.generic.useDefaultValueForNull</code>) if the server type does not have the concept of leadership</td></tr>
</tbody>
</table>
<p>To retrieve information about all servers, use the query:</p>
<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> sys.servers;
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="server_segments-table"></a><a href="#server_segments-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>SERVER_SEGMENTS table</h3>
<p>SERVER_SEGMENTS is used to join servers with segments table</p>
<table>
<thead>
<tr><th>Column</th><th>Type</th><th>Notes</th></tr>
</thead>
<tbody>
<tr><td>server</td><td>STRING</td><td>Server name in format host:port (Primary key of <a href="#servers-table">servers table</a>)</td></tr>
<tr><td>segment_id</td><td>STRING</td><td>Segment identifier (Primary key of <a href="#segments-table">segments table</a>)</td></tr>
</tbody>
</table>
<p>JOIN between &quot;servers&quot; and &quot;segments&quot; can be used to query the number of segments for a specific datasource,
grouped by server, example query:</p>
<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">count</span>(segments.segment_id) <span class="hljs-keyword">as</span> num_segments <span class="hljs-keyword">from</span> sys.segments <span class="hljs-keyword">as</span> segments
<span class="hljs-keyword">INNER</span> <span class="hljs-keyword">JOIN</span> sys.server_segments <span class="hljs-keyword">as</span> server_segments
<span class="hljs-keyword">ON</span> segments.segment_id = server_segments.segment_id
<span class="hljs-keyword">INNER</span> <span class="hljs-keyword">JOIN</span> sys.servers <span class="hljs-keyword">as</span> servers
<span class="hljs-keyword">ON</span> servers.server = server_segments.server
<span class="hljs-keyword">WHERE</span> segments.datasource = <span class="hljs-string">'wikipedia'</span>
<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> servers.server;
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="tasks-table"></a><a href="#tasks-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>TASKS table</h3>
<p>The tasks table provides information about active and recently-completed indexing tasks. For more information
check out the documentation for <a href="/docs/latest/ingestion/tasks.html">ingestion tasks</a>.</p>
<table>
<thead>
<tr><th>Column</th><th>Type</th><th>Notes</th></tr>
</thead>
<tbody>
<tr><td>task_id</td><td>STRING</td><td>Unique task identifier</td></tr>
<tr><td>group_id</td><td>STRING</td><td>Task group ID for this task, the value depends on the task <code>type</code>. For example, for native index tasks, it's same as <code>task_id</code>, for sub tasks, this value is the parent task's ID</td></tr>
<tr><td>type</td><td>STRING</td><td>Task type, for example this value is &quot;index&quot; for indexing tasks. See <a href="/docs/latest/ingestion/tasks.html">tasks-overview</a></td></tr>
<tr><td>datasource</td><td>STRING</td><td>Datasource name being indexed</td></tr>
<tr><td>created_time</td><td>STRING</td><td>Timestamp in ISO8601 format corresponding to when the ingestion task was created. Note that this value is populated for completed and waiting tasks. For running and pending tasks this value is set to 1970-01-01T00:00:00Z</td></tr>
<tr><td>queue_insertion_time</td><td>STRING</td><td>Timestamp in ISO8601 format corresponding to when this task was added to the queue on the Overlord</td></tr>
<tr><td>status</td><td>STRING</td><td>Status of a task can be RUNNING, FAILED, SUCCESS</td></tr>
<tr><td>runner_status</td><td>STRING</td><td>Runner status of a completed task would be NONE, for in-progress tasks this can be RUNNING, WAITING, PENDING</td></tr>
<tr><td>duration</td><td>LONG</td><td>Time it took to finish the task in milliseconds, this value is present only for completed tasks</td></tr>
<tr><td>location</td><td>STRING</td><td>Server name where this task is running in the format host:port, this information is present only for RUNNING tasks</td></tr>
<tr><td>host</td><td>STRING</td><td>Hostname of the server where task is running</td></tr>
<tr><td>plaintext_port</td><td>LONG</td><td>Unsecured port of the server, or -1 if plaintext traffic is disabled</td></tr>
<tr><td>tls_port</td><td>LONG</td><td>TLS port of the server, or -1 if TLS is disabled</td></tr>
<tr><td>error_msg</td><td>STRING</td><td>Detailed error message in case of FAILED tasks</td></tr>
</tbody>
</table>
<p>For example, to retrieve tasks information filtered by status, use the query</p>
<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> sys.tasks <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">status</span>=<span class="hljs-string">'FAILED'</span>;
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="supervisors-table"></a><a href="#supervisors-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>SUPERVISORS table</h3>
<p>The supervisors table provides information about supervisors.</p>
<table>
<thead>
<tr><th>Column</th><th>Type</th><th>Notes</th></tr>
</thead>
<tbody>
<tr><td>supervisor_id</td><td>STRING</td><td>Supervisor task identifier</td></tr>
<tr><td>state</td><td>STRING</td><td>Basic state of the supervisor. Available states: <code>UNHEALTHY_SUPERVISOR</code>, <code>UNHEALTHY_TASKS</code>, <code>PENDING</code>, <code>RUNNING</code>, <code>SUSPENDED</code>, <code>STOPPING</code>. Check <a href="/docs/latest/development/extensions-core/kafka-supervisor-operations.html">Kafka Docs</a> for details.</td></tr>
<tr><td>detailed_state</td><td>STRING</td><td>Supervisor specific state. (See documentation of the specific supervisor for details, e.g. <a href="/docs/latest/development/extensions-core/kafka-ingestion.html">Kafka</a> or <a href="/docs/latest/development/extensions-core/kinesis-ingestion.html">Kinesis</a>)</td></tr>
<tr><td>healthy</td><td>LONG</td><td>Boolean represented as long type where 1 = true, 0 = false. 1 indicates a healthy supervisor</td></tr>
<tr><td>type</td><td>STRING</td><td>Type of supervisor, e.g. <code>kafka</code>, <code>kinesis</code> or <code>materialized_view</code></td></tr>
<tr><td>source</td><td>STRING</td><td>Source of the supervisor, e.g. Kafka topic or Kinesis stream</td></tr>
<tr><td>suspended</td><td>LONG</td><td>Boolean represented as long type where 1 = true, 0 = false. 1 indicates supervisor is in suspended state</td></tr>
<tr><td>spec</td><td>STRING</td><td>JSON-serialized supervisor spec</td></tr>
</tbody>
</table>
<p>For example, to retrieve supervisor tasks information filtered by health status, use the query</p>
<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> sys.supervisors <span class="hljs-keyword">WHERE</span> healthy=<span class="hljs-number">0</span>;
</code></pre>
</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/querying/sql-query-context.html"><span class="arrow-prev"></span><span>SQL query context</span></a><a class="docs-next button" href="/docs/latest/querying/sql-translation.html"><span>SQL query translation</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#information-schema">INFORMATION SCHEMA</a><ul class="toc-headings"><li><a href="#schemata-table">SCHEMATA table</a></li><li><a href="#tables-table">TABLES table</a></li><li><a href="#columns-table">COLUMNS table</a></li></ul></li><li><a href="#system-schema">SYSTEM SCHEMA</a><ul class="toc-headings"><li><a href="#segments-table">SEGMENTS table</a></li><li><a href="#servers-table">SERVERS table</a></li><li><a href="#server_segments-table">SERVER_SEGMENTS table</a></li><li><a href="#tasks-table">TASKS table</a></li><li><a href="#supervisors-table">SUPERVISORS table</a></li></ul></li></ul></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a href="/technology">Technology</a> · <a href="/use-cases">Use Cases</a> · <a href="/druid-powered">Powered by Druid</a> · <a href="/docs/latest/latest">Docs</a> · <a href="/community/">Community</a> · <a href="/downloads.html">Download</a> · <a href="/faq">FAQ</a></p></div><div class="text-center"><a title="Join the user group" href="https://groups.google.com/forum/#!forum/druid-user" target="_blank"><span class="fa fa-comments"></span></a> · <a title="Follow Druid" href="https://twitter.com/druidio" target="_blank"><span class="fab fa-twitter"></span></a> · <a title="Download via Apache" href="https://www.apache.org/dyn/closer.cgi?path=/incubator/druid/{{ site.druid_versions[0].versions[0].version }}/apache-druid-{{ site.druid_versions[0].versions[0].version }}-bin.tar.gz" target="_blank"><span class="fas fa-feather"></span></a> · <a title="GitHub" href="https://github.com/apache/druid" target="_blank"><span class="fab fa-github"></span></a></div><div class="text-center license">Copyright © 2019 <a href="https://www.apache.org/" target="_blank">Apache Software Foundation</a>.<br/>Except where otherwise noted, licensed under <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.<br/>Apache Druid, Druid, and the Druid logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</div></div></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
}
// keyCode for '/' (slash)
if (e.keyCode === 191) {
const search = document.getElementById('search_input_react');
search && search.focus();
}
});
</script><script>
var search = docsearch({
apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
indexName: 'apache_druid',
inputSelector: '#search_input_react',
algoliaOptions: {"facetFilters":["language:en","version:0.23.0"]}
});
</script></body></html>