blob: 0712cd6ba1befc4d0be019810037055c29b41aa8 [file] [log] [blame]
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>SQL-based ingestion and multi-stage query task API ยท Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/24.0.0/multi-stage-query/api.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="24.0.0" /><meta property="og:title" content="SQL-based ingestion and multi-stage query task API ยท 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/24.0.0/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>SQL-based ingestion ๐Ÿ†•</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/24.0.0/design/index.html">Introduction to Apache Druid</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/index.html">Quickstart (local)</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/single-server.html">Single server deployment</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/tutorials/tutorial-batch.html">Load files natively</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-msq-extern.html">Load files using SQL ๐Ÿ†•</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-kafka.html">Load from Apache Kafka</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-batch-hadoop.html">Load from Apache Hadoop</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-query.html">Querying data</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-rollup.html">Roll-up</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-sketches-theta.html">Theta sketches</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-retention.html">Configuring data retention</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-update-data.html">Updating existing data</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-compaction.html">Compacting segments</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-delete-data.html">Deleting data</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-ingestion-spec.html">Writing an ingestion spec</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-transform-spec.html">Transforming input data</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/docker.html">Tutorial: Run with Docker</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-kerberos-hadoop.html">Kerberized HDFS deep storage</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/tutorials/tutorial-msq-convert-spec.html">Convert ingestion spec to SQL</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/24.0.0/design/architecture.html">Design</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/design/segments.html">Segments</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/design/processes.html">Processes and servers</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/dependencies/deep-storage.html">Deep storage</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/dependencies/metadata-storage.html">Metadata storage</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/ingestion/index.html">Ingestion</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/ingestion/data-formats.html">Data formats</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/ingestion/data-model.html">Data model</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/ingestion/rollup.html">Data rollup</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/ingestion/partitioning.html">Partitioning</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/ingestion/ingestion-spec.html">Ingestion spec</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/ingestion/schema-design.html">Schema design tips</a></li><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Stream ingestion</h4><ul><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/kafka-ingestion.html">Apache Kafka ingestion</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/kafka-supervisor-reference.html">Apache Kafka supervisor</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/kafka-supervisor-operations.html">Apache Kafka operations</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/ingestion/native-batch.html">Native batch</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/ingestion/native-batch-input-sources.html">Native batch: input sources</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/ingestion/hadoop.html">Hadoop-based</a></li></ul></div><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">SQL-based ingestion ๐Ÿ†•</h4><ul><li class="navListItem"><a class="navItem" href="/docs/24.0.0/multi-stage-query/index.html">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/multi-stage-query/concepts.html">Key concepts</a></li><li class="navListItem navListItemActive"><a class="navItem" href="/docs/24.0.0/multi-stage-query/api.html">API</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/multi-stage-query/security.html">Security</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/multi-stage-query/examples.html">Examples</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/multi-stage-query/reference.html">Reference</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/multi-stage-query/known-issues.html">Known issues</a></li></ul></div><li class="navListItem"><a class="navItem" href="/docs/24.0.0/ingestion/tasks.html">Task reference</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/ingestion/faq.html">Troubleshooting FAQ</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Data management<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/24.0.0/data-management/index.html">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/data-management/update.html">Data updates</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/data-management/delete.html">Data deletion</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/data-management/schema-changes.html">Schema changes</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/data-management/compaction.html">Compaction</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/data-management/automatic-compaction.html">Automatic compaction</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/24.0.0/querying/sql.html">Overview and syntax</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sql-data-types.html">SQL data types</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sql-operators.html">Operators</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sql-scalar.html">Scalar functions</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sql-aggregations.html">Aggregation functions</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sql-multivalue-string-functions.html">Multi-value string functions</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sql-json-functions.html">JSON functions</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sql-functions.html">All functions</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sql-api.html">Druid SQL API</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sql-jdbc.html">JDBC driver API</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sql-query-context.html">SQL query context</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sql-metadata-tables.html">SQL metadata tables</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sql-translation.html">SQL query translation</a></li></ul></div><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/querying.html">Native queries</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/query-execution.html">Query execution</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/troubleshooting.html">Troubleshooting</a></li><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Concepts</h4><ul><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/datasource.html">Datasources</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/joins.html">Joins</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/lookups.html">Lookups</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/multi-value-dimensions.html">Multi-value dimensions</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/nested-columns.html">Nested columns</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/multitenancy.html">Multitenancy</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/caching.html">Query caching</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/using-caching.html">Using query caching</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/querying/timeseriesquery.html">Timeseries</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/topnquery.html">TopN</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/groupbyquery.html">GroupBy</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/scan-query.html">Scan</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/searchquery.html">Search</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/timeboundaryquery.html">TimeBoundary</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/segmentmetadataquery.html">SegmentMetadata</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/querying/filters.html">Filters</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/granularities.html">Granularities</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/dimensionspecs.html">Dimensions</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/aggregations.html">Aggregations</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/post-aggregations.html">Post-aggregations</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/misc/math-expr.html">Expressions</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/having.html">Having filters (groupBy)</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/limitspec.html">Sorting and limiting (groupBy)</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/topnmetricspec.html">Sorting (topN)</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/sorting-orders.html">String comparators</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/virtual-columns.html">Virtual columns</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/configuration/index.html">Configuration reference</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions.html">Extensions</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/operations/web-console.html">Web console</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/java.html">Java runtime</a></li><div class="navGroup subNavGroup"><h4 class="navGroupSubcategoryTitle">Security</h4><ul><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/security-overview.html">Security overview</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/security-user-auth.html">User authentication and authorization</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/auth-ldap.html">LDAP auth</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/password-provider.html">Password providers</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/dynamic-config-provider.html">Dynamic Config Providers</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/operations/basic-cluster-tuning.html">Basic cluster tuning</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/segment-optimization.html">Segment size optimization</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/mixed-workloads.html">Mixed workloads</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/http-compression.html">HTTP compression</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/operations/request-logging.html">Request logging</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/metrics.html">Metrics</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/alerts.html">Alerts</a></li></ul></div><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/api-reference.html">API reference</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/high-availability.html">High availability</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/rolling-updates.html">Rolling updates</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/rule-configuration.html">Retaining or automatically dropping data</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/operations/dump-segment.html">dump-segment tool</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/reset-cluster.html">reset-cluster tool</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/insert-segment-to-db.html">insert-segment-to-db tool</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/pull-deps.html">pull-deps tool</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/deep-storage-migration.html">Deep storage migration</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/export-metadata.html">Export Metadata Tool</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/metadata-migration.html">Metadata Migration</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/development/overview.html">Developing on Druid</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/modules.html">Creating extensions</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/javascript.html">JavaScript functionality</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/build.html">Build from source</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/versioning.html">Versioning</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/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/24.0.0/comparisons/druid-vs-elasticsearch.html">Apache Druid vs Elasticsearch</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/24.0.0/comparisons/druid-vs-kudu.html">Apache Druid vs Kudu</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/comparisons/druid-vs-redshift.html">Apache Druid vs Redshift</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/comparisons/druid-vs-spark.html">Apache Druid vs Spark</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/comparisons/druid-vs-sql-on-hadoop.html">Apache Druid vs SQL-on-Hadoop</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/design/auth.html">Authentication and Authorization</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/design/broker.html">Broker</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/design/coordinator.html">Coordinator Process</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/design/historical.html">Historical Process</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/design/indexer.html">Indexer Process</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/design/indexing-service.html">Indexing Service</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/design/middlemanager.html">MiddleManager Process</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/design/overlord.html">Overlord Process</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/design/router.html">Router Process</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/design/peons.html">Peons</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/approximate-histograms.html">Approximate Histogram aggregators</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/avro.html">Apache Avro</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/azure.html">Microsoft Azure</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/bloom-filter.html">Bloom Filter</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/datasketches-extension.html">DataSketches extension</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/datasketches-hll.html">DataSketches HLL Sketch module</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/datasketches-quantiles.html">DataSketches Quantiles Sketch module</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/datasketches-theta.html">DataSketches Theta Sketch module</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/datasketches-tuple.html">DataSketches Tuple Sketch module</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/druid-basic-security.html">Basic Security</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/druid-kerberos.html">Kerberos</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/druid-lookups.html">Cached Lookup Module</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/druid-ranger-security.html">Apache Ranger Security</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/google.html">Google Cloud Storage</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/hdfs.html">HDFS</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/kafka-extraction-namespace.html">Apache Kafka Lookups</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/lookups-cached-global.html">Globally Cached Lookups</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/mysql.html">MySQL Metadata Store</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/orc.html">ORC Extension</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/druid-pac4j.html">Druid pac4j based Security extension</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/parquet.html">Apache Parquet Extension</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/postgresql.html">PostgreSQL Metadata Store</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/protobuf.html">Protobuf</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/s3.html">S3-compatible</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/simple-client-sslcontext.html">Simple SSLContext Provider Module</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/stats.html">Stats aggregator</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/test-stats.html">Test Stats Aggregators</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/druid-aws-rds.html">Druid AWS RDS Module</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-core/kubernetes.html">Kubernetes</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/ambari-metrics-emitter.html">Ambari Metrics Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/cassandra.html">Apache Cassandra</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/cloudfiles.html">Rackspace Cloud Files</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/distinctcount.html">DistinctCount Aggregator</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/graphite.html">Graphite Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/influx.html">InfluxDB Line Protocol Parser</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/influxdb-emitter.html">InfluxDB Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/kafka-emitter.html">Kafka Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/materialized-view.html">Materialized View</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/momentsketch-quantiles.html">Moment Sketches for Approximate Quantiles module</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/moving-average-query.html">Moving Average Query</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/opentsdb-emitter.html">OpenTSDB Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/redis-cache.html">Druid Redis Cache</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/sqlserver.html">Microsoft SQLServer</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/statsd.html">StatsD Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/tdigestsketch-quantiles.html">T-Digest Quantiles Sketch module</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/thrift.html">Thrift</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/time-min-max.html">Timestamp Min/Max aggregators</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/gce-extensions.html">GCE Extensions</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/aliyun-oss.html">Aliyun OSS</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/development/extensions-contrib/prometheus.html">Prometheus Emitter</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/operations/kubernetes.html">kubernetes</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/hll-old.html">Cardinality/HyperUnique aggregators</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/querying/select-query.html">Select</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/ingestion/native-batch-firehose.html">Firehose (deprecated)</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/ingestion/native-batch-simple-task.html">Native batch (simple)</a></li><li class="navListItem"><a class="navItem" href="/docs/24.0.0/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/multi-stage-query/api.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">SQL-based ingestion and multi-stage query task API</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>This page describes SQL-based batch ingestion using the <a href="/docs/24.0.0/multi-stage-query/index.html"><code>druid-multi-stage-query</code></a>
extension, new in Druid 24.0. Refer to the <a href="/docs/24.0.0/ingestion/index.html#batch">ingestion methods</a> table to determine which
ingestion method is right for you.</p>
</blockquote>
<p>The <strong>Query</strong> view in the web console provides a friendly experience for the multi-stage query task engine (MSQ task
engine) and multi-stage query architecture. We recommend using the web console if you do not need a programmatic
interface.</p>
<p>When using the API for the MSQ task engine, the action you want to take determines the endpoint you use:</p>
<ul>
<li><code>/druid/v2/sql/task</code> endpoint: Submit a query for ingestion.</li>
<li><code>/druid/indexer/v1/task</code> endpoint: Interact with a query, including getting its status, getting its details, or canceling it. This page describes a few of the Overlord Task APIs that you can use with the MSQ task engine. For information about Druid APIs, see the <a href="/docs/24.0.0/operations/api-reference.html#tasks">API reference for Druid</a>.</li>
</ul>
<h2><a class="anchor" aria-hidden="true" id="submit-a-query"></a><a href="#submit-a-query" 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>Submit a query</h2>
<p>You submit queries to the MSQ task engine using the <code>POST /druid/v2/sql/task/</code> endpoint.</p>
<h4><a class="anchor" aria-hidden="true" id="request"></a><a href="#request" 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>Request</h4>
<p>The SQL task endpoint accepts <a href="/docs/24.0.0/querying/sql-api.html#request-body">SQL requests in the JSON-over-HTTP form</a> using the
<code>query</code>, <code>context</code>, and <code>parameters</code> fields, but ignoring the <code>resultFormat</code>, <code>header</code>, <code>typesHeader</code>, and
<code>sqlTypesHeader</code> fields.</p>
<p>This endpoint accepts <a href="/docs/24.0.0/multi-stage-query/reference.html#insert">INSERT</a> and <a href="/docs/24.0.0/multi-stage-query/reference.html#replace">REPLACE</a> statements.</p>
<p>As an experimental feature, this endpoint also accepts SELECT queries. SELECT query results are collected from workers
by the controller, and written into the <a href="#get-the-report-for-a-query-task">task report</a> as an array of arrays. The
behavior and result format of plain SELECT queries (without INSERT or REPLACE) is subject to change.</p>
<div class="tabs"><div class="nav-tabs"><div id="tab-group-1-tab-2" class="nav-link active" data-group="group_1" data-tab="tab-group-1-content-2">HTTP</div><div id="tab-group-1-tab-3" class="nav-link" data-group="group_1" data-tab="tab-group-1-content-3">curl</div><div id="tab-group-1-tab-4" class="nav-link" data-group="group_1" data-tab="tab-group-1-content-4">Python</div></div><div class="tab-content"><div id="tab-group-1-content-2" class="tab-pane active" data-group="group_1" tabindex="-1"><div><span><pre><code class="hljs">POST <span class="hljs-regexp">/druid/</span>v2<span class="hljs-regexp">/sql/</span><span class="hljs-keyword">task</span><br /></code></pre>
<pre><code class="hljs css language-json">{<br /> <span class="hljs-attr">"query"</span>: <span class="hljs-string">"INSERT INTO wikipedia\nSELECT\n TIME_PARSE(\"timestamp\") AS __time,\n *\nFROM TABLE(\n EXTERN(\n '{\"type\": \"http\", \"uris\": [\"https://druid.apache.org/data/wikipedia.json.gz\"]}',\n '{\"type\": \"json\"}',\n '[{\"name\": \"added\", \"type\": \"long\"}, {\"name\": \"channel\", \"type\": \"string\"}, {\"name\": \"cityName\", \"type\": \"string\"}, {\"name\": \"comment\", \"type\": \"string\"}, {\"name\": \"commentLength\", \"type\": \"long\"}, {\"name\": \"countryIsoCode\", \"type\": \"string\"}, {\"name\": \"countryName\", \"type\": \"string\"}, {\"name\": \"deleted\", \"type\": \"long\"}, {\"name\": \"delta\", \"type\": \"long\"}, {\"name\": \"deltaBucket\", \"type\": \"string\"}, {\"name\": \"diffUrl\", \"type\": \"string\"}, {\"name\": \"flags\", \"type\": \"string\"}, {\"name\": \"isAnonymous\", \"type\": \"string\"}, {\"name\": \"isMinor\", \"type\": \"string\"}, {\"name\": \"isNew\", \"type\": \"string\"}, {\"name\": \"isRobot\", \"type\": \"string\"}, {\"name\": \"isUnpatrolled\", \"type\": \"string\"}, {\"name\": \"metroCode\", \"type\": \"string\"}, {\"name\": \"namespace\", \"type\": \"string\"}, {\"name\": \"page\", \"type\": \"string\"}, {\"name\": \"regionIsoCode\", \"type\": \"string\"}, {\"name\": \"regionName\", \"type\": \"string\"}, {\"name\": \"timestamp\", \"type\": \"string\"}, {\"name\": \"user\", \"type\": \"string\"}]'\n )\n)\nPARTITIONED BY DAY"</span>,<br /> <span class="hljs-attr">"context"</span>: {<br /> <span class="hljs-attr">"maxNumTasks"</span>: <span class="hljs-number">3</span><br /> }<br />}<br /></code></pre>
</span></div></div><div id="tab-group-1-content-3" class="tab-pane" data-group="group_1" tabindex="-1"><div><span><pre><code class="hljs css language-bash"><span class="hljs-comment"># Make sure you replace `username`, `password`, `your-instance`, and `port` with the values for your deployment.</span><br />curl --location --request POST <span class="hljs-string">'https://&lt;username&gt;:&lt;password&gt;@&lt;your-instance&gt;:&lt;port&gt;/druid/v2/sql/task/'</span> \<br /> --header <span class="hljs-string">'Content-Type: application/json'</span> \<br /> --data-raw <span class="hljs-string">'{<br /> "query": "INSERT INTO wikipedia\nSELECT\n TIME_PARSE(\"timestamp\") AS __time,\n *\nFROM TABLE(\n EXTERN(\n '</span>\<span class="hljs-string">''</span>{\"<span class="hljs-built_in">type</span>\": \"http\", \"uris\": [\"https://druid.apache.org/data/wikipedia.json.gz\"]}<span class="hljs-string">'\'</span><span class="hljs-string">',\n '</span>\<span class="hljs-string">''</span>{\"<span class="hljs-built_in">type</span>\": \"json\"}<span class="hljs-string">'\'</span><span class="hljs-string">',\n '</span>\<span class="hljs-string">''</span>[{\"name\": \"added\", \"<span class="hljs-built_in">type</span>\": \"long\"}, {\"name\": \"channel\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"cityName\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"comment\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"commentLength\", \"<span class="hljs-built_in">type</span>\": \"long\"}, {\"name\": \"countryIsoCode\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"countryName\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"deleted\", \"<span class="hljs-built_in">type</span>\": \"long\"}, {\"name\": \"delta\", \"<span class="hljs-built_in">type</span>\": \"long\"}, {\"name\": \"deltaBucket\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"diffUrl\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"flags\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"isAnonymous\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"isMinor\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"isNew\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"isRobot\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"isUnpatrolled\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"metroCode\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"namespace\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"page\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"regionIsoCode\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"regionName\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"timestamp\", \"<span class="hljs-built_in">type</span>\": \"string\"}, {\"name\": \"user\", \"<span class="hljs-built_in">type</span>\": \"string\"}]<span class="hljs-string">'\'</span><span class="hljs-string">'\n )\n)\nPARTITIONED BY DAY",<br /> "context": {<br /> "maxNumTasks": 3<br /> }<br /> }'</span><br /></code></pre>
</span></div></div><div id="tab-group-1-content-4" class="tab-pane" data-group="group_1" tabindex="-1"><div><span><pre><code class="hljs css language-python"><span class="hljs-keyword">import</span> json<br /><span class="hljs-keyword">import</span> requests<br /><br /><span class="hljs-comment"># Make sure you replace `username`, `password`, `your-instance`, and `port` with the values for your deployment.</span><br />url = <span class="hljs-string">"https://&lt;username&gt;:&lt;password&gt;@&lt;your-instance&gt;:&lt;port&gt;/druid/v2/sql/task/"</span><br /><br />payload = json.dumps({<br /> <span class="hljs-string">"query"</span>: <span class="hljs-string">"INSERT INTO wikipedia\nSELECT\n TIME_PARSE(\"timestamp\") AS __time,\n *\nFROM TABLE(\n EXTERN(\n '{\"type\": \"http\", \"uris\": [\"https://druid.apache.org/data/wikipedia.json.gz\"]}',\n '{\"type\": \"json\"}',\n '[{\"name\": \"added\", \"type\": \"long\"}, {\"name\": \"channel\", \"type\": \"string\"}, {\"name\": \"cityName\", \"type\": \"string\"}, {\"name\": \"comment\", \"type\": \"string\"}, {\"name\": \"commentLength\", \"type\": \"long\"}, {\"name\": \"countryIsoCode\", \"type\": \"string\"}, {\"name\": \"countryName\", \"type\": \"string\"}, {\"name\": \"deleted\", \"type\": \"long\"}, {\"name\": \"delta\", \"type\": \"long\"}, {\"name\": \"deltaBucket\", \"type\": \"string\"}, {\"name\": \"diffUrl\", \"type\": \"string\"}, {\"name\": \"flags\", \"type\": \"string\"}, {\"name\": \"isAnonymous\", \"type\": \"string\"}, {\"name\": \"isMinor\", \"type\": \"string\"}, {\"name\": \"isNew\", \"type\": \"string\"}, {\"name\": \"isRobot\", \"type\": \"string\"}, {\"name\": \"isUnpatrolled\", \"type\": \"string\"}, {\"name\": \"metroCode\", \"type\": \"string\"}, {\"name\": \"namespace\", \"type\": \"string\"}, {\"name\": \"page\", \"type\": \"string\"}, {\"name\": \"regionIsoCode\", \"type\": \"string\"}, {\"name\": \"regionName\", \"type\": \"string\"}, {\"name\": \"timestamp\", \"type\": \"string\"}, {\"name\": \"user\", \"type\": \"string\"}]'\n )\n)\nPARTITIONED BY DAY"</span>,<br /> <span class="hljs-string">"context"</span>: {<br /> <span class="hljs-string">"maxNumTasks"</span>: <span class="hljs-number">3</span><br /> }<br />})<br />headers = {<br /> <span class="hljs-string">'Content-Type'</span>: <span class="hljs-string">'application/json'</span><br />}<br /><br />response = requests.request(<span class="hljs-string">"POST"</span>, url, headers=headers, data=payload)<br /><br />print(response.text)<br /><br /></code></pre>
</span></div></div></div></div>
<h4><a class="anchor" aria-hidden="true" id="response"></a><a href="#response" 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>Response</h4>
<pre><code class="hljs css language-json">{
<span class="hljs-attr">"taskId"</span>: <span class="hljs-string">"query-f795a235-4dc7-4fef-abac-3ae3f9686b79"</span>,
<span class="hljs-attr">"state"</span>: <span class="hljs-string">"RUNNING"</span>,
}
</code></pre>
<p><strong>Response fields</strong></p>
<table>
<thead>
<tr><th>Field</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td>taskId</td><td>Controller task ID. You can use Druid's standard <a href="/docs/24.0.0/operations/api-reference.html#overlord">task APIs</a> to interact with this controller task.</td></tr>
<tr><td>state</td><td>Initial state for the query, which is &quot;RUNNING&quot;.</td></tr>
</tbody>
</table>
<h2><a class="anchor" aria-hidden="true" id="get-the-status-for-a-query-task"></a><a href="#get-the-status-for-a-query-task" 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>Get the status for a query task</h2>
<p>You can retrieve status of a query to see if it is still running, completed successfully, failed, or got canceled.</p>
<h4><a class="anchor" aria-hidden="true" id="request-1"></a><a href="#request-1" 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>Request</h4>
<div class="tabs"><div class="nav-tabs"><div id="tab-group-5-tab-6" class="nav-link active" data-group="group_5" data-tab="tab-group-5-content-6">HTTP</div><div id="tab-group-5-tab-7" class="nav-link" data-group="group_5" data-tab="tab-group-5-content-7">curl</div><div id="tab-group-5-tab-8" class="nav-link" data-group="group_5" data-tab="tab-group-5-content-8">Python</div></div><div class="tab-content"><div id="tab-group-5-content-6" class="tab-pane active" data-group="group_5" tabindex="-1"><div><span><pre><code class="hljs">GET <span class="hljs-meta-keyword">/druid/</span>indexer<span class="hljs-meta-keyword">/v1/</span>task/<span class="hljs-params">&lt;taskId&gt;</span><br /></code></pre>
</span></div></div><div id="tab-group-5-content-7" class="tab-pane" data-group="group_5" tabindex="-1"><div><span><pre><code class="hljs css language-bash"><span class="hljs-comment"># Make sure you replace `username`, `password`, `your-instance`, `port`, and `taskId` with the values for your deployment.</span><br />curl --location --request GET <span class="hljs-string">'https://&lt;username&gt;:&lt;password&gt;@&lt;hostname&gt;:&lt;port&gt;/druid/indexer/v1/task/&lt;taskId&gt;/status'</span><br /></code></pre>
</span></div></div><div id="tab-group-5-content-8" class="tab-pane" data-group="group_5" tabindex="-1"><div><span><pre><code class="hljs css language-python"><span class="hljs-keyword">import</span> requests<br /><br /><span class="hljs-comment"># Make sure you replace `username`, `password`, `your-instance`, `port`, and `taskId` with the values for your deployment.</span><br />url = <span class="hljs-string">"https://&lt;username&gt;:&lt;password&gt;@&lt;hostname&gt;:&lt;port&gt;/druid/indexer/v1/task/&lt;taskId&gt;/status"</span><br /><br />payload={}<br />headers = {}<br /><br />response = requests.request(<span class="hljs-string">"GET"</span>, url, headers=headers, data=payload)<br /><br />print(response.text)<br /></code></pre>
</span></div></div></div></div>
<h4><a class="anchor" aria-hidden="true" id="response-1"></a><a href="#response-1" 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>Response</h4>
<pre><code class="hljs">{
<span class="hljs-attr">"task"</span>: <span class="hljs-string">"query-3dc0c45d-34d7-4b15-86c9-cdb2d3ebfc4e"</span>,
<span class="hljs-attr">"status"</span>: {
<span class="hljs-attr">"id"</span>: <span class="hljs-string">"query-3dc0c45d-34d7-4b15-86c9-cdb2d3ebfc4e"</span>,
<span class="hljs-attr">"groupId"</span>: <span class="hljs-string">"query-3dc0c45d-34d7-4b15-86c9-cdb2d3ebfc4e"</span>,
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"query_controller"</span>,
<span class="hljs-attr">"createdTime"</span>: <span class="hljs-string">"2022-09-14T22:12:00.183Z"</span>,
<span class="hljs-attr">"queueInsertionTime"</span>: <span class="hljs-string">"1970-01-01T00:00:00.000Z"</span>,
<span class="hljs-attr">"statusCode"</span>: <span class="hljs-string">"RUNNING"</span>,
<span class="hljs-attr">"status"</span>: <span class="hljs-string">"RUNNING"</span>,
<span class="hljs-attr">"runnerStatusCode"</span>: <span class="hljs-string">"RUNNING"</span>,
<span class="hljs-attr">"duration"</span>: <span class="hljs-number">-1</span>,
<span class="hljs-attr">"location"</span>: {
<span class="hljs-attr">"host"</span>: <span class="hljs-string">"localhost"</span>,
<span class="hljs-attr">"port"</span>: <span class="hljs-number">8100</span>,
<span class="hljs-attr">"tlsPort"</span>: <span class="hljs-number">-1</span>
},
<span class="hljs-attr">"dataSource"</span>: <span class="hljs-string">"kttm_simple"</span>,
<span class="hljs-attr">"errorMsg"</span>: <span class="hljs-literal">null</span>
}
}
</code></pre>
<h2><a class="anchor" aria-hidden="true" id="get-the-report-for-a-query-task"></a><a href="#get-the-report-for-a-query-task" 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>Get the report for a query task</h2>
<p>A report provides detailed information about a query task, including things like the stages, warnings, and errors.</p>
<p>Keep the following in mind when using the task API to view reports:</p>
<ul>
<li>The task report for an entire job is associated with the <code>query_controller</code> task. The <code>query_worker</code> tasks do not have
their own reports; their information is incorporated into the controller report.</li>
<li>The task report API may report <code>404 Not Found</code> temporarily while the task is in the process of starting up.</li>
<li>As an experimental feature, the MSQ task engine supports running SELECT queries. SELECT query results are written into
the <code>multiStageQuery.payload.results.results</code> task report key as an array of arrays. The behavior and result format of plain
SELECT queries (without INSERT or REPLACE) is subject to change.</li>
</ul>
<p>For an explanation of the fields in a report, see <a href="#report-response-fields">Report response fields</a>.</p>
<h4><a class="anchor" aria-hidden="true" id="request-2"></a><a href="#request-2" 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>Request</h4>
<div class="tabs"><div class="nav-tabs"><div id="tab-group-9-tab-10" class="nav-link active" data-group="group_9" data-tab="tab-group-9-content-10">HTTP</div><div id="tab-group-9-tab-11" class="nav-link" data-group="group_9" data-tab="tab-group-9-content-11">curl</div><div id="tab-group-9-tab-12" class="nav-link" data-group="group_9" data-tab="tab-group-9-content-12">Python</div></div><div class="tab-content"><div id="tab-group-9-content-10" class="tab-pane active" data-group="group_9" tabindex="-1"><div><span><pre><code class="hljs">GET <span class="hljs-regexp">/druid/i</span>ndexer<span class="hljs-regexp">/v1/</span><span class="hljs-keyword">task</span><span class="hljs-regexp">/&lt;taskId&gt;/</span>reports<br /></code></pre>
</span></div></div><div id="tab-group-9-content-11" class="tab-pane" data-group="group_9" tabindex="-1"><div><span><pre><code class="hljs css language-bash"><span class="hljs-comment"># Make sure you replace `username`, `password`, `your-instance`, `port`, and `taskId` with the values for your deployment.</span><br />curl --location --request GET <span class="hljs-string">'https://&lt;username&gt;:&lt;password&gt;@&lt;hostname&gt;:&lt;port&gt;/druid/indexer/v1/task/&lt;taskId&gt;/reports'</span><br /></code></pre>
</span></div></div><div id="tab-group-9-content-12" class="tab-pane" data-group="group_9" tabindex="-1"><div><span><pre><code class="hljs css language-python"><span class="hljs-keyword">import</span> requests<br /><br /><span class="hljs-comment"># Make sure you replace `username`, `password`, `your-instance`, `port`, and `taskId` with the values for your deployment.</span><br />url = <span class="hljs-string">"https://&lt;username&gt;:&lt;password&gt;@&lt;hostname&gt;:&lt;port&gt;/druid/indexer/v1/task/&lt;taskId&gt;/reports"</span><br /><br />headers = {}<br />response = requests.request(<span class="hljs-string">"GET"</span>, url, headers=headers)<br />print(response.text)<br /></code></pre>
</span></div></div></div></div>
<h4><a class="anchor" aria-hidden="true" id="response-2"></a><a href="#response-2" 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>Response</h4>
<p>The response shows an example report for a query.</p>
<p><details><summary>Show the response</summary></p>
<pre><code class="hljs css language-json">{
<span class="hljs-attr">"multiStageQuery"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"multiStageQuery"</span>,
<span class="hljs-attr">"taskId"</span>: <span class="hljs-string">"query-3dc0c45d-34d7-4b15-86c9-cdb2d3ebfc4e"</span>,
<span class="hljs-attr">"payload"</span>: {
<span class="hljs-attr">"status"</span>: {
<span class="hljs-attr">"status"</span>: <span class="hljs-string">"SUCCESS"</span>,
<span class="hljs-attr">"startTime"</span>: <span class="hljs-string">"2022-09-14T22:12:09.266Z"</span>,
<span class="hljs-attr">"durationMs"</span>: <span class="hljs-number">28227</span>
},
<span class="hljs-attr">"stages"</span>: [
{
<span class="hljs-attr">"stageNumber"</span>: <span class="hljs-number">0</span>,
<span class="hljs-attr">"definition"</span>: {
<span class="hljs-attr">"id"</span>: <span class="hljs-string">"71ecb11e-09d7-42f8-9225-1662c8e7e121_0"</span>,
<span class="hljs-attr">"input"</span>: [
{
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"external"</span>,
<span class="hljs-attr">"inputSource"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"http"</span>,
<span class="hljs-attr">"uris"</span>: [
<span class="hljs-string">"https://static.imply.io/example-data/kttm-v2/kttm-v2-2019-08-25.json.gz"</span>
],
<span class="hljs-attr">"httpAuthenticationUsername"</span>: <span class="hljs-literal">null</span>,
<span class="hljs-attr">"httpAuthenticationPassword"</span>: <span class="hljs-literal">null</span>
},
<span class="hljs-attr">"inputFormat"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"json"</span>,
<span class="hljs-attr">"flattenSpec"</span>: <span class="hljs-literal">null</span>,
<span class="hljs-attr">"featureSpec"</span>: {},
<span class="hljs-attr">"keepNullColumns"</span>: <span class="hljs-literal">false</span>
},
<span class="hljs-attr">"signature"</span>: [
{
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"timestamp"</span>,
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"STRING"</span>
},
{
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"agent_category"</span>,
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"STRING"</span>
},
{
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"agent_type"</span>,
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"STRING"</span>
}
]
}
],
<span class="hljs-attr">"processor"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"scan"</span>,
<span class="hljs-attr">"query"</span>: {
<span class="hljs-attr">"queryType"</span>: <span class="hljs-string">"scan"</span>,
<span class="hljs-attr">"dataSource"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"inputNumber"</span>,
<span class="hljs-attr">"inputNumber"</span>: <span class="hljs-number">0</span>
},
<span class="hljs-attr">"intervals"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"intervals"</span>,
<span class="hljs-attr">"intervals"</span>: [
<span class="hljs-string">"-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z"</span>
]
},
<span class="hljs-attr">"resultFormat"</span>: <span class="hljs-string">"compactedList"</span>,
<span class="hljs-attr">"columns"</span>: [
<span class="hljs-string">"agent_category"</span>,
<span class="hljs-string">"agent_type"</span>,
<span class="hljs-string">"timestamp"</span>
],
<span class="hljs-attr">"legacy"</span>: <span class="hljs-literal">false</span>,
<span class="hljs-attr">"context"</span>: {
<span class="hljs-attr">"finalize"</span>: <span class="hljs-literal">false</span>,
<span class="hljs-attr">"finalizeAggregations"</span>: <span class="hljs-literal">false</span>,
<span class="hljs-attr">"groupByEnableMultiValueUnnesting"</span>: <span class="hljs-literal">false</span>,
<span class="hljs-attr">"scanSignature"</span>: <span class="hljs-string">"[{\"name\":\"agent_category\",\"type\":\"STRING\"},{\"name\":\"agent_type\",\"type\":\"STRING\"},{\"name\":\"timestamp\",\"type\":\"STRING\"}]"</span>,
<span class="hljs-attr">"sqlInsertSegmentGranularity"</span>: <span class="hljs-string">"{\"type\":\"all\"}"</span>,
<span class="hljs-attr">"sqlQueryId"</span>: <span class="hljs-string">"3dc0c45d-34d7-4b15-86c9-cdb2d3ebfc4e"</span>,
<span class="hljs-attr">"sqlReplaceTimeChunks"</span>: <span class="hljs-string">"all"</span>
},
<span class="hljs-attr">"granularity"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"all"</span>
}
}
},
<span class="hljs-attr">"signature"</span>: [
{
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"__boost"</span>,
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"LONG"</span>
},
{
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"agent_category"</span>,
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"STRING"</span>
},
{
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"agent_type"</span>,
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"STRING"</span>
},
{
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"timestamp"</span>,
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"STRING"</span>
}
],
<span class="hljs-attr">"shuffleSpec"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"targetSize"</span>,
<span class="hljs-attr">"clusterBy"</span>: {
<span class="hljs-attr">"columns"</span>: [
{
<span class="hljs-attr">"columnName"</span>: <span class="hljs-string">"__boost"</span>
}
]
},
<span class="hljs-attr">"targetSize"</span>: <span class="hljs-number">3000000</span>
},
<span class="hljs-attr">"maxWorkerCount"</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">"shuffleCheckHasMultipleValues"</span>: <span class="hljs-literal">true</span>
},
<span class="hljs-attr">"phase"</span>: <span class="hljs-string">"FINISHED"</span>,
<span class="hljs-attr">"workerCount"</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">"partitionCount"</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">"startTime"</span>: <span class="hljs-string">"2022-09-14T22:12:11.663Z"</span>,
<span class="hljs-attr">"duration"</span>: <span class="hljs-number">19965</span>,
<span class="hljs-attr">"sort"</span>: <span class="hljs-literal">true</span>
},
{
<span class="hljs-attr">"stageNumber"</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">"definition"</span>: {
<span class="hljs-attr">"id"</span>: <span class="hljs-string">"71ecb11e-09d7-42f8-9225-1662c8e7e121_1"</span>,
<span class="hljs-attr">"input"</span>: [
{
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"stage"</span>,
<span class="hljs-attr">"stage"</span>: <span class="hljs-number">0</span>
}
],
<span class="hljs-attr">"processor"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"segmentGenerator"</span>,
<span class="hljs-attr">"dataSchema"</span>: {
<span class="hljs-attr">"dataSource"</span>: <span class="hljs-string">"kttm_simple"</span>,
<span class="hljs-attr">"timestampSpec"</span>: {
<span class="hljs-attr">"column"</span>: <span class="hljs-string">"__time"</span>,
<span class="hljs-attr">"format"</span>: <span class="hljs-string">"millis"</span>,
<span class="hljs-attr">"missingValue"</span>: <span class="hljs-literal">null</span>
},
<span class="hljs-attr">"dimensionsSpec"</span>: {
<span class="hljs-attr">"dimensions"</span>: [
{
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"string"</span>,
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"timestamp"</span>,
<span class="hljs-attr">"multiValueHandling"</span>: <span class="hljs-string">"SORTED_ARRAY"</span>,
<span class="hljs-attr">"createBitmapIndex"</span>: <span class="hljs-literal">true</span>
},
{
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"string"</span>,
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"agent_category"</span>,
<span class="hljs-attr">"multiValueHandling"</span>: <span class="hljs-string">"SORTED_ARRAY"</span>,
<span class="hljs-attr">"createBitmapIndex"</span>: <span class="hljs-literal">true</span>
},
{
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"string"</span>,
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"agent_type"</span>,
<span class="hljs-attr">"multiValueHandling"</span>: <span class="hljs-string">"SORTED_ARRAY"</span>,
<span class="hljs-attr">"createBitmapIndex"</span>: <span class="hljs-literal">true</span>
}
],
<span class="hljs-attr">"dimensionExclusions"</span>: [
<span class="hljs-string">"__time"</span>
],
<span class="hljs-attr">"includeAllDimensions"</span>: <span class="hljs-literal">false</span>
},
<span class="hljs-attr">"metricsSpec"</span>: [],
<span class="hljs-attr">"granularitySpec"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"arbitrary"</span>,
<span class="hljs-attr">"queryGranularity"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"none"</span>
},
<span class="hljs-attr">"rollup"</span>: <span class="hljs-literal">false</span>,
<span class="hljs-attr">"intervals"</span>: [
<span class="hljs-string">"-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z"</span>
]
},
<span class="hljs-attr">"transformSpec"</span>: {
<span class="hljs-attr">"filter"</span>: <span class="hljs-literal">null</span>,
<span class="hljs-attr">"transforms"</span>: []
}
},
<span class="hljs-attr">"columnMappings"</span>: [
{
<span class="hljs-attr">"queryColumn"</span>: <span class="hljs-string">"timestamp"</span>,
<span class="hljs-attr">"outputColumn"</span>: <span class="hljs-string">"timestamp"</span>
},
{
<span class="hljs-attr">"queryColumn"</span>: <span class="hljs-string">"agent_category"</span>,
<span class="hljs-attr">"outputColumn"</span>: <span class="hljs-string">"agent_category"</span>
},
{
<span class="hljs-attr">"queryColumn"</span>: <span class="hljs-string">"agent_type"</span>,
<span class="hljs-attr">"outputColumn"</span>: <span class="hljs-string">"agent_type"</span>
}
],
<span class="hljs-attr">"tuningConfig"</span>: {
<span class="hljs-attr">"maxNumWorkers"</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">"maxRowsInMemory"</span>: <span class="hljs-number">100000</span>,
<span class="hljs-attr">"rowsPerSegment"</span>: <span class="hljs-number">3000000</span>
}
},
<span class="hljs-attr">"signature"</span>: [],
<span class="hljs-attr">"maxWorkerCount"</span>: <span class="hljs-number">1</span>
},
<span class="hljs-attr">"phase"</span>: <span class="hljs-string">"FINISHED"</span>,
<span class="hljs-attr">"workerCount"</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">"partitionCount"</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">"startTime"</span>: <span class="hljs-string">"2022-09-14T22:12:31.602Z"</span>,
<span class="hljs-attr">"duration"</span>: <span class="hljs-number">5891</span>
}
],
<span class="hljs-attr">"counters"</span>: {
<span class="hljs-attr">"0"</span>: {
<span class="hljs-attr">"0"</span>: {
<span class="hljs-attr">"input0"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"channel"</span>,
<span class="hljs-attr">"rows"</span>: [
<span class="hljs-number">465346</span>
],
<span class="hljs-attr">"files"</span>: [
<span class="hljs-number">1</span>
],
<span class="hljs-attr">"totalFiles"</span>: [
<span class="hljs-number">1</span>
]
},
<span class="hljs-attr">"output"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"channel"</span>,
<span class="hljs-attr">"rows"</span>: [
<span class="hljs-number">465346</span>
],
<span class="hljs-attr">"bytes"</span>: [
<span class="hljs-number">43694447</span>
],
<span class="hljs-attr">"frames"</span>: [
<span class="hljs-number">7</span>
]
},
<span class="hljs-attr">"shuffle"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"channel"</span>,
<span class="hljs-attr">"rows"</span>: [
<span class="hljs-number">465346</span>
],
<span class="hljs-attr">"bytes"</span>: [
<span class="hljs-number">41835307</span>
],
<span class="hljs-attr">"frames"</span>: [
<span class="hljs-number">73</span>
]
},
<span class="hljs-attr">"sortProgress"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"sortProgress"</span>,
<span class="hljs-attr">"totalMergingLevels"</span>: <span class="hljs-number">3</span>,
<span class="hljs-attr">"levelToTotalBatches"</span>: {
<span class="hljs-attr">"0"</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">"1"</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">"2"</span>: <span class="hljs-number">1</span>
},
<span class="hljs-attr">"levelToMergedBatches"</span>: {
<span class="hljs-attr">"0"</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">"1"</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">"2"</span>: <span class="hljs-number">1</span>
},
<span class="hljs-attr">"totalMergersForUltimateLevel"</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">"progressDigest"</span>: <span class="hljs-number">1</span>
}
}
},
<span class="hljs-attr">"1"</span>: {
<span class="hljs-attr">"0"</span>: {
<span class="hljs-attr">"input0"</span>: {
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"channel"</span>,
<span class="hljs-attr">"rows"</span>: [
<span class="hljs-number">465346</span>
],
<span class="hljs-attr">"bytes"</span>: [
<span class="hljs-number">41835307</span>
],
<span class="hljs-attr">"frames"</span>: [
<span class="hljs-number">73</span>
]
}
}
}
}
}
}
}
</code></pre>
<p></details></p>
<p><a name="report-response-fields"></a></p>
<p>The following table describes the response fields when you retrieve a report for a MSQ task engine using the <code>/druid/indexer/v1/task/&lt;taskId&gt;/reports</code> endpoint:</p>
<table>
<thead>
<tr><th>Field</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td>multiStageQuery.taskId</td><td>Controller task ID.</td></tr>
<tr><td>multiStageQuery.payload.status</td><td>Query status container.</td></tr>
<tr><td>multiStageQuery.payload.status.status</td><td>RUNNING, SUCCESS, or FAILED.</td></tr>
<tr><td>multiStageQuery.payload.status.startTime</td><td>Start time of the query in ISO format. Only present if the query has started running.</td></tr>
<tr><td>multiStageQuery.payload.status.durationMs</td><td>Milliseconds elapsed after the query has started running. -1 denotes that the query hasn't started running yet.</td></tr>
<tr><td>multiStageQuery.payload.status.errorReport</td><td>Error object. Only present if there was an error.</td></tr>
<tr><td>multiStageQuery.payload.status.errorReport.taskId</td><td>The task that reported the error, if known. May be a controller task or a worker task.</td></tr>
<tr><td>multiStageQuery.payload.status.errorReport.host</td><td>The hostname and port of the task that reported the error, if known.</td></tr>
<tr><td>multiStageQuery.payload.status.errorReport.stageNumber</td><td>The stage number that reported the error, if it happened during execution of a specific stage.</td></tr>
<tr><td>multiStageQuery.payload.status.errorReport.error</td><td>Error object. Contains <code>errorCode</code> at a minimum, and may contain other fields as described in the <a href="/docs/24.0.0/multi-stage-query/reference.html#error-codes">error code table</a>. Always present if there is an error.</td></tr>
<tr><td>multiStageQuery.payload.status.errorReport.error.errorCode</td><td>One of the error codes from the <a href="/docs/24.0.0/multi-stage-query/reference.html#error-codes">error code table</a>. Always present if there is an error.</td></tr>
<tr><td>multiStageQuery.payload.status.errorReport.error.errorMessage</td><td>User-friendly error message. Not always present, even if there is an error.</td></tr>
<tr><td>multiStageQuery.payload.status.errorReport.exceptionStackTrace</td><td>Java stack trace in string form, if the error was due to a server-side exception.</td></tr>
<tr><td>multiStageQuery.payload.stages</td><td>Array of query stages.</td></tr>
<tr><td>multiStageQuery.payload.stages[].stageNumber</td><td>Each stage has a number that differentiates it from other stages.</td></tr>
<tr><td>multiStageQuery.payload.stages[].phase</td><td>Either NEW, READING_INPUT, POST_READING, RESULTS_COMPLETE, or FAILED. Only present if the stage has started.</td></tr>
<tr><td>multiStageQuery.payload.stages[].workerCount</td><td>Number of parallel tasks that this stage is running on. Only present if the stage has started.</td></tr>
<tr><td>multiStageQuery.payload.stages[].partitionCount</td><td>Number of output partitions generated by this stage. Only present if the stage has started and has computed its number of output partitions.</td></tr>
<tr><td>multiStageQuery.payload.stages[].startTime</td><td>Start time of this stage. Only present if the stage has started.</td></tr>
<tr><td>multiStageQuery.payload.stages[].duration</td><td>The number of milliseconds that the stage has been running. Only present if the stage has started.</td></tr>
<tr><td>multiStageQuery.payload.stages[].sort</td><td>A boolean that is set to <code>true</code> if the stage does a sort as part of its execution.</td></tr>
<tr><td>multiStageQuery.payload.stages[].definition</td><td>The object defining what the stage does.</td></tr>
<tr><td>multiStageQuery.payload.stages[].definition.id</td><td>The unique identifier of the stage.</td></tr>
<tr><td>multiStageQuery.payload.stages[].definition.input</td><td>Array of inputs that the stage has.</td></tr>
<tr><td>multiStageQuery.payload.stages[].definition.broadcast</td><td>Array of input indexes that get broadcasted. Only present if there are inputs that get broadcasted.</td></tr>
<tr><td>multiStageQuery.payload.stages[].definition.processor</td><td>An object defining the processor logic.</td></tr>
<tr><td>multiStageQuery.payload.stages[].definition.signature</td><td>The output signature of the stage.</td></tr>
</tbody>
</table>
<h2><a class="anchor" aria-hidden="true" id="cancel-a-query-task"></a><a href="#cancel-a-query-task" 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>Cancel a query task</h2>
<h4><a class="anchor" aria-hidden="true" id="request-3"></a><a href="#request-3" 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>Request</h4>
<div class="tabs"><div class="nav-tabs"><div id="tab-group-13-tab-14" class="nav-link active" data-group="group_13" data-tab="tab-group-13-content-14">HTTP</div><div id="tab-group-13-tab-15" class="nav-link" data-group="group_13" data-tab="tab-group-13-content-15">curl</div><div id="tab-group-13-tab-16" class="nav-link" data-group="group_13" data-tab="tab-group-13-content-16">Python</div></div><div class="tab-content"><div id="tab-group-13-content-14" class="tab-pane active" data-group="group_13" tabindex="-1"><div><span><pre><code class="hljs">POST <span class="hljs-regexp">/druid/i</span>ndexer<span class="hljs-regexp">/v1/</span><span class="hljs-keyword">task</span><span class="hljs-regexp">/&lt;taskId&gt;/</span>shutdown<br /></code></pre>
</span></div></div><div id="tab-group-13-content-15" class="tab-pane" data-group="group_13" tabindex="-1"><div><span><pre><code class="hljs css language-bash"><span class="hljs-comment"># Make sure you replace `username`, `password`, `your-instance`, `port`, and `taskId` with the values for your deployment.</span><br />curl --location --request POST <span class="hljs-string">'https://&lt;username&gt;:&lt;password&gt;@&lt;your-instance&gt;:&lt;port&gt;/druid/indexer/v1/task/&lt;taskId&gt;/shutdown'</span><br /></code></pre>
</span></div></div><div id="tab-group-13-content-16" class="tab-pane" data-group="group_13" tabindex="-1"><div><span><pre><code class="hljs"><span class="hljs-built_in">import</span> requests<br /><br /><span class="hljs-comment"># Make sure you replace `username`, `password`, `your-instance`, `port`, and `taskId` with the values for your deployment.</span><br /><span class="hljs-attr">url</span> = <span class="hljs-string">"https://&lt;username&gt;:&lt;password&gt;@&lt;your-instance&gt;:&lt;port&gt;/druid/indexer/v1/task/&lt;taskId&gt;/shutdown"</span><br /><br /><span class="hljs-attr">payload={}</span><br /><span class="hljs-attr">headers</span> = {}<br /><br /><span class="hljs-attr">response</span> = requests.request(<span class="hljs-string">"POST"</span>, url, <span class="hljs-attr">headers=headers,</span> <span class="hljs-attr">data=payload)</span><br /><br />print(response.text)<br /></code></pre>
</span></div></div></div></div>
<h4><a class="anchor" aria-hidden="true" id="response-3"></a><a href="#response-3" 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>Response</h4>
<pre><code class="hljs">{
<span class="hljs-attr">"task"</span>: <span class="hljs-string">"query-655efe33-781a-4c50-ae84-c2911b42d63c"</span>
}
</code></pre>
</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/24.0.0/multi-stage-query/concepts.html"><span class="arrow-prev">โ† </span><span>Key concepts</span></a><a class="docs-next button" href="/docs/24.0.0/multi-stage-query/security.html"><span>Security</span><span class="arrow-next"> โ†’</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#submit-a-query">Submit a query</a></li><li><a href="#get-the-status-for-a-query-task">Get the status for a query task</a></li><li><a href="#get-the-report-for-a-query-task">Get the report for a query task</a></li><li><a href="#cancel-a-query-task">Cancel a query task</a></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/24.0.0/">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 ยฉ 2022 <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:24.0.0"]}
});
</script></body></html>