{"version":3,"sources":["webpack:///./src/pages/docs/Connecting to Databases/druid.mdx"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","src","isMDXComponent"],"mappings":"wPAMaA,G,UAAe,S,kOAE5B,IAKMC,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,YAACJ,EAAD,eAAeD,EAAiBK,EAAhC,CAAuCD,WAAYA,EAAYE,QAAQ,cAC5E,iBAAQ,CACN,GAAM,gBADR,gBAGA,oFACE,yBAAgB,CACd,WAAc,KADhB,mBADF,iHAOE,gBAAO,CACL,KAAQ,oCACR,WAAc,KAFhB,mBAPF,KAYA,0DACA,uBAAK,mBAAU,CACX,WAAc,OADb,wEAIL,iBAAQ,CACN,GAAM,gCADR,gCAGA,yHAEE,qBAAY,CACV,WAAc,KADhB,gBAFF,UAMA,qBAAG,qBAAY,CACX,WAAc,KADf,uBAGH,wDACE,qBAAY,CACV,WAAc,KADhB,oBADF,kEAMA,qBAAG,mBAAKC,IAAI,kCACT,KACH,sGACA,qBAAG,qBAAY,CACX,WAAc,KADf,6BAGH,8EACE,qBAAY,CACV,WAAc,KADhB,UADF,WAKA,uBAAK,mBAAU,CACX,WAAc,OADb,2FAML,iBAAQ,CACN,GAAM,gBADR,gBAGA,wMAEE,qBAAY,CACV,WAAc,KADhB,qGAFF,MAWA,8PAGE,qBAAY,CACV,WAAc,KADhB,qBAHF,oCAOA,6LAEE,qBAAY,CACV,WAAc,KADhB,qBAFF,wCAOA,iBAAQ,CACN,GAAM,qBADR,qBAGA,4LAEE,yBAAgB,CACd,WAAc,KADhB,WAFF,SAME,yBAAgB,CACd,WAAc,KADhB,eANF,mI,gOAgBJJ,EAAWK,gBAAiB","file":"component---src-pages-docs-connecting-to-databases-druid-mdx-e7d80a2d727b1de1a1f3.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/srinify/Documents/incubator-superset/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\n\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return <div {...props} />;\n};\n\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n  components,\n  ...props\n}) {\n  return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n    <h2 {...{\n      \"id\": \"apache-druid\"\n    }}>{`Apache Druid`}</h2>\n    <p>{`A native connector to Druid ships with Superset (behind the `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`DRUID_IS_ACTIVE`}</inlineCode>\n      {` flag) but this is\nslowly getting deprecated in favor of SQLAlchemy / DBAPI connector made available in the\n`}\n      <a {...{\n        \"href\": \"https://pythonhosted.org/pydruid/\",\n        \"parentName\": \"p\"\n      }}>{`pydruid library`}</a>\n      {`.`}</p>\n    <p>{`The connection string looks like:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`druid://<User>:<password>@<Host>:<Port-default-9088>/druid/v2/sql\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"customizing-druid-connection\"\n    }}>{`Customizing Druid Connection`}</h3>\n    <p>{`When adding a connection to Druid, you can customize the connection a few different ways in the\n`}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`Add Database`}</strong>\n      {` form.`}</p>\n    <p><strong {...{\n        \"parentName\": \"p\"\n      }}>{`Custom Certificate`}</strong></p>\n    <p>{`You can add certificates in the `}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`Root Certificate`}</strong>\n      {` field when configuring the new database\nconnection to Druid:`}</p>\n    <p><img src=\"/images/root-cert-example.png\" />\n      {' '}</p>\n    <p>{`When using a custom certificate, pydruid will automatically use https scheme.`}</p>\n    <p><strong {...{\n        \"parentName\": \"p\"\n      }}>{`Disable SSL Verification`}</strong></p>\n    <p>{`To disable SSL verification, add the following to the `}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`Extras`}</strong>\n      {` field:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`engine_params:\n{\"connect_args\":\n    {\"scheme\": \"https\", \"ssl_verify_cert\": false}}\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"aggregations\"\n    }}>{`Aggregations`}</h3>\n    <p>{`Common aggregations or Druid metrics can be defined and used in Superset. The first and simpler use\ncase is to use the checkbox matrix exposed in your datasource’s edit view (`}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`Sources -> Druid\nDatasources -> `}\n        {`[your datasource]`}\n        {` -> Edit -> `}\n        {`[tab]`}\n        {` List Druid Column`}</strong>\n      {`).`}</p>\n    <p>{`Clicking the GroupBy and Filterable checkboxes will make the column appear in the related dropdowns\nwhile in the Explore view. Checking Count Distinct, Min, Max or Sum will result in creating new\nmetrics that will appear in the `}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`List Druid Metric`}</strong>\n      {` tab upon saving the datasource.`}</p>\n    <p>{`By editing these metrics, you’ll notice that their JSON element corresponds to Druid aggregation\ndefinition. You can create your own aggregations manually from the `}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`List Druid Metric`}</strong>\n      {` tab\nfollowing Druid documentation.`}</p>\n    <h3 {...{\n      \"id\": \"post-aggregations\"\n    }}>{`Post-Aggregations`}</h3>\n    <p>{`Druid supports post aggregation and this works in Superset. All you have to do is create a metric,\nmuch like you would create an aggregation manually, but specify `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`postagg`}</inlineCode>\n      {` as a `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`Metric Type`}</inlineCode>\n      {`. You\nthen have to provide a valid json post-aggregation definition (as specified in the Druid docs) in\nthe JSON field.`}</p>\n\n  </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}