{"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-0609fc79ea3fb9fb0eab.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/max/code/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":""}