datahub/assets/js/b6f81a21.6ac8193a.js
2025-08-22 14:09:31 +00:00

1 line
24 KiB
JavaScript

"use strict";(self.webpackChunkdocs_website=self.webpackChunkdocs_website||[]).push([[90008],{43064:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>g,default:()=>f,frontMatter:()=>p,metadata:()=>d,toc:()=>y});n(96540);var a=n(15680),i=n(53720),l=n(5400);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}function o(e,t){if(null==e)return{};var n,a,i=function(e,t){if(null==e)return{};var n,a,i={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}const p={sidebar_position:56,title:"Qlik Sense",slug:"/generated/ingestion/sources/qlik-sense",custom_edit_url:"https://github.com/datahub-project/datahub/blob/master/docs/generated/ingestion/sources/qlik-sense.md"},g="Qlik Sense",d={unversionedId:"docs/generated/ingestion/sources/qlik-sense",id:"docs/generated/ingestion/sources/qlik-sense",title:"Qlik Sense",description:"Incubating",source:"@site/genDocs/docs/generated/ingestion/sources/qlik-sense.md",sourceDirName:"docs/generated/ingestion/sources",slug:"/generated/ingestion/sources/qlik-sense",permalink:"/docs/generated/ingestion/sources/qlik-sense",draft:!1,editUrl:"https://github.com/datahub-project/datahub/blob/master/docs/generated/ingestion/sources/qlik-sense.md",tags:[],version:"current",sidebarPosition:56,frontMatter:{sidebar_position:56,title:"Qlik Sense",slug:"/generated/ingestion/sources/qlik-sense",custom_edit_url:"https://github.com/datahub-project/datahub/blob/master/docs/generated/ingestion/sources/qlik-sense.md"},sidebar:"overviewSidebar",previous:{title:"Pulsar",permalink:"/docs/generated/ingestion/sources/pulsar"},next:{title:"Redash",permalink:"/docs/generated/ingestion/sources/redash"}},c={},y=[{value:"Important Capabilities",id:"important-capabilities",level:3},{value:"Integration Details",id:"integration-details",level:2},{value:"Configuration Notes",id:"configuration-notes",level:2},{value:"Concept mapping",id:"concept-mapping",level:2},{value:"CLI based Ingestion",id:"cli-based-ingestion",level:3},{value:"Starter Recipe",id:"starter-recipe",level:3},{value:"Config Details",id:"config-details",level:3},{value:"Code Coordinates",id:"code-coordinates",level:3}],m={toc:y},u="wrapper";function f(e){var{components:t}=e,n=o(e,["components"]);return(0,a.yg)(u,s(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),a.forEach((function(t){r(e,t,n[t])}))}return e}({},m,n),{components:t,mdxType:"MDXLayout"}),(0,a.yg)("h1",{id:"qlik-sense"},"Qlik Sense"),(0,a.yg)("p",null,(0,a.yg)("img",{parentName:"p",src:"https://img.shields.io/badge/support%20status-incubating-blue",alt:"Incubating"})),(0,a.yg)("h3",{id:"important-capabilities"},"Important Capabilities"),(0,a.yg)("table",null,(0,a.yg)("thead",{parentName:"table"},(0,a.yg)("tr",{parentName:"thead"},(0,a.yg)("th",{parentName:"tr",align:null},"Capability"),(0,a.yg)("th",{parentName:"tr",align:null},"Status"),(0,a.yg)("th",{parentName:"tr",align:null},"Notes"))),(0,a.yg)("tbody",{parentName:"table"},(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},"Asset Containers"),(0,a.yg)("td",{parentName:"tr",align:null},"\u2705"),(0,a.yg)("td",{parentName:"tr",align:null},"Enabled by default.")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},"Column-level Lineage"),(0,a.yg)("td",{parentName:"tr",align:null},"\u2705"),(0,a.yg)("td",{parentName:"tr",align:null},"Disabled by default. .")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},"Descriptions"),(0,a.yg)("td",{parentName:"tr",align:null},"\u2705"),(0,a.yg)("td",{parentName:"tr",align:null},"Enabled by default.")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("a",{parentName:"td",href:"/docs/metadata-ingestion/docs/dev_guides/stateful#stale-entity-removal"},"Detect Deleted Entities")),(0,a.yg)("td",{parentName:"tr",align:null},"\u2705"),(0,a.yg)("td",{parentName:"tr",align:null},"Enabled by default via stateful ingestion.")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},"Extract Ownership"),(0,a.yg)("td",{parentName:"tr",align:null},"\u2705"),(0,a.yg)("td",{parentName:"tr",align:null},"Enabled by default, configured using ",(0,a.yg)("inlineCode",{parentName:"td"},"ingest_owner"),".")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("a",{parentName:"td",href:"/docs/platform-instances"},"Platform Instance")),(0,a.yg)("td",{parentName:"tr",align:null},"\u2705"),(0,a.yg)("td",{parentName:"tr",align:null},"Enabled by default.")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},"Schema Metadata"),(0,a.yg)("td",{parentName:"tr",align:null},"\u2705"),(0,a.yg)("td",{parentName:"tr",align:null},"Enabled by default.")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},"Table-Level Lineage"),(0,a.yg)("td",{parentName:"tr",align:null},"\u2705"),(0,a.yg)("td",{parentName:"tr",align:null},"Enabled by default.")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},"Test Connection"),(0,a.yg)("td",{parentName:"tr",align:null},"\u2705"),(0,a.yg)("td",{parentName:"tr",align:null},"Enabled by default.")))),(0,a.yg)("p",null,"This plugin extracts the following:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Qlik Sense Spaces and Apps as Container."),(0,a.yg)("li",{parentName:"ul"},"Qlik Datasets"),(0,a.yg)("li",{parentName:"ul"},"Sheets as dashboard and its charts")),(0,a.yg)("h2",{id:"integration-details"},"Integration Details"),(0,a.yg)("p",null,"This source extracts the following:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Accessible spaces and apps within that spaces as Container."),(0,a.yg)("li",{parentName:"ul"},"Qlik Datasets as Datahub Datasets with schema metadata."),(0,a.yg)("li",{parentName:"ul"},"Sheets as Datahub dashboard and charts present inside sheets.")),(0,a.yg)("h2",{id:"configuration-notes"},"Configuration Notes"),(0,a.yg)("ol",null,(0,a.yg)("li",{parentName:"ol"},"Refer ",(0,a.yg)("a",{parentName:"li",href:"https://qlik.dev/authenticate/api-key/generate-your-first-api-key/"},"doc")," to generate an API key from the hub."),(0,a.yg)("li",{parentName:"ol"},"Get tenant hostname from About tab after login to qlik sense account.")),(0,a.yg)("h2",{id:"concept-mapping"},"Concept mapping"),(0,a.yg)("table",null,(0,a.yg)("thead",{parentName:"table"},(0,a.yg)("tr",{parentName:"thead"},(0,a.yg)("th",{parentName:"tr",align:null},"Qlik Sense"),(0,a.yg)("th",{parentName:"tr",align:null},"Datahub"),(0,a.yg)("th",{parentName:"tr",align:null},"Notes"))),(0,a.yg)("tbody",{parentName:"table"},(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"Space")),(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("a",{parentName:"td",href:"/docs/generated/metamodel/entities/container"},"Container")),(0,a.yg)("td",{parentName:"tr",align:null},"SubType ",(0,a.yg)("inlineCode",{parentName:"td"},'"Qlik Space"'))),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"App")),(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("a",{parentName:"td",href:"/docs/generated/metamodel/entities/container"},"Container")),(0,a.yg)("td",{parentName:"tr",align:null},"SubType ",(0,a.yg)("inlineCode",{parentName:"td"},'"Qlik App"'))),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"Sheet")),(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("a",{parentName:"td",href:"/docs/generated/metamodel/entities/dashboard"},"Dashboard")),(0,a.yg)("td",{parentName:"tr",align:null})),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"Chart")),(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("a",{parentName:"td",href:"/docs/generated/metamodel/entities/chart"},"Chart")),(0,a.yg)("td",{parentName:"tr",align:null})),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"Dataset")),(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("a",{parentName:"td",href:"/docs/generated/metamodel/entities/dataset"},"Dataset")),(0,a.yg)("td",{parentName:"tr",align:null},"SubType ",(0,a.yg)("inlineCode",{parentName:"td"},'"Qlik Dataset"'))),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"User")),(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("a",{parentName:"td",href:"/docs/generated/metamodel/entities/corpuser"},"User (a.k.a CorpUser)")),(0,a.yg)("td",{parentName:"tr",align:null},"Optionally Extracted")))),(0,a.yg)("h3",{id:"cli-based-ingestion"},"CLI based Ingestion"),(0,a.yg)("h3",{id:"starter-recipe"},"Starter Recipe"),(0,a.yg)("p",null,"Check out the following recipe to get started with ingestion! See ",(0,a.yg)("a",{parentName:"p",href:"#config-details"},"below")," for full configuration options."),(0,a.yg)("p",null,"For general pointers on writing and running a recipe, see our ",(0,a.yg)("a",{parentName:"p",href:"/docs/metadata-ingestion#recipes"},"main recipe guide"),"."),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-yaml"},"source:\n type: qlik-sense\n config:\n # Coordinates\n tenant_hostname: \"xyz12xz.us.qlikcloud.com\"\n # Credentials\n api_key: \"QLIK_API_KEY\"\n \n # Optional - filter for certain space names instead of ingesting everything.\n # Mention 'personal_space' if entities of personal space need to ingest\n # space_pattern:\n # allow:\n # - space_name\n\n ingest_owner: true\n \n # Optional -- This mapping is optional and only required to configure platform-instance for Qlik app dataset upstream source tables\n # A mapping of the Qlik app dataset upstream tables from data connection to platform instance. Use 'data_connection_name' as key.\n # data_connection_to_platform_instance:\n # data_connection_name:\n # platform_instance: cloud_instance\n # env: DEV\n\nsink:\n # sink configs\n\n")),(0,a.yg)("h3",{id:"config-details"},"Config Details"),(0,a.yg)(i.A,{mdxType:"Tabs"},(0,a.yg)(l.A,{value:"options",label:"Options",default:!0,mdxType:"TabItem"},(0,a.yg)("p",null,"Note that a ",(0,a.yg)("inlineCode",{parentName:"p"},".")," is used to denote nested fields in the YAML recipe."),(0,a.yg)("div",{className:"config-table"},(0,a.yg)("table",null,(0,a.yg)("thead",{parentName:"table"},(0,a.yg)("tr",{parentName:"thead"},(0,a.yg)("th",{parentName:"tr",align:"left"},"Field"),(0,a.yg)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.yg)("tbody",{parentName:"table"},(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:"left"},(0,a.yg)("div",{className:"path-line"},(0,a.yg)("span",{className:"path-main"},"api_key"),"\xa0",(0,a.yg)("abbr",{title:"Required"},"\u2705"))," ",(0,a.yg)("div",{className:"type-name-line"},(0,a.yg)("span",{className:"type-name"},"string"))),(0,a.yg)("td",{parentName:"tr",align:"left"},"Qlik API Key")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:"left"},(0,a.yg)("div",{className:"path-line"},(0,a.yg)("span",{className:"path-main"},"tenant_hostname"),"\xa0",(0,a.yg)("abbr",{title:"Required"},"\u2705"))," ",(0,a.yg)("div",{className:"type-name-line"},(0,a.yg)("span",{className:"type-name"},"string"))),(0,a.yg)("td",{parentName:"tr",align:"left"},"Qlik Tenant hostname")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:"left"},(0,a.yg)("div",{className:"path-line"},(0,a.yg)("span",{className:"path-main"},"ingest_owner"))," ",(0,a.yg)("div",{className:"type-name-line"},(0,a.yg)("span",{className:"type-name"},"boolean"))),(0,a.yg)("td",{parentName:"tr",align:"left"},"Ingest Owner from source. This will override Owner info entered from UI ",(0,a.yg)("div",{className:"default-line default-line-with-docs"},"Default: ",(0,a.yg)("span",{className:"default-value"},"True")))),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:"left"},(0,a.yg)("div",{className:"path-line"},(0,a.yg)("span",{className:"path-main"},"platform_instance"))," ",(0,a.yg)("div",{className:"type-name-line"},(0,a.yg)("span",{className:"type-name"},"string"))),(0,a.yg)("td",{parentName:"tr",align:"left"},"The instance of the platform that all assets produced by this recipe belong to. This should be unique within the platform. See ",(0,a.yg)("a",{parentName:"td",href:"https://docs.datahub.com/docs/platform-instances/"},"https://docs.datahub.com/docs/platform-instances/")," for more details.")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:"left"},(0,a.yg)("div",{className:"path-line"},(0,a.yg)("span",{className:"path-main"},"space_pattern"))," ",(0,a.yg)("div",{className:"type-name-line"},(0,a.yg)("span",{className:"type-name"},"AllowDenyPattern"))),(0,a.yg)("td",{parentName:"tr",align:"left"},"Regex patterns to filter Qlik spaces in ingestion.Mention 'personal_space' if entities of personal space need to ingest ",(0,a.yg)("div",{className:"default-line default-line-with-docs"},"Default: ",(0,a.yg)("span",{className:"default-value"},"{","'","allow","'",": ","[","'",".","*","'","]",", ","'","deny","'",": ","[","]",", ","'","ignoreCase","'",": True","}")))),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:"left"},(0,a.yg)("div",{className:"path-line"},(0,a.yg)("span",{className:"path-main"},"env"))," ",(0,a.yg)("div",{className:"type-name-line"},(0,a.yg)("span",{className:"type-name"},"string"))),(0,a.yg)("td",{parentName:"tr",align:"left"},"The environment that all assets produced by this connector belong to ",(0,a.yg)("div",{className:"default-line default-line-with-docs"},"Default: ",(0,a.yg)("span",{className:"default-value"},"PROD")))),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:"left"},(0,a.yg)("div",{className:"path-line"},(0,a.yg)("span",{className:"path-main"},"data_connection_to_platform_instance"))," ",(0,a.yg)("div",{className:"type-name-line"},(0,a.yg)("span",{className:"type-name"},"map(str,PlatformDetail)"))),(0,a.yg)("td",{parentName:"tr",align:"left"},"Any source that connects to a platform should inherit this class")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:"left"},(0,a.yg)("div",{className:"path-line"},(0,a.yg)("span",{className:"path-prefix"},"data_connection_to_platform_instance.",(0,a.yg)("inlineCode",{parentName:"td"},"key"),"."),(0,a.yg)("span",{className:"path-main"},"env"))," ",(0,a.yg)("div",{className:"type-name-line"},(0,a.yg)("span",{className:"type-name"},"string"))),(0,a.yg)("td",{parentName:"tr",align:"left"},"The environment that all assets produced by this connector belong to ",(0,a.yg)("div",{className:"default-line default-line-with-docs"},"Default: ",(0,a.yg)("span",{className:"default-value"},"PROD")))),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:"left"},(0,a.yg)("div",{className:"path-line"},(0,a.yg)("span",{className:"path-prefix"},"data_connection_to_platform_instance.",(0,a.yg)("inlineCode",{parentName:"td"},"key"),"."),(0,a.yg)("span",{className:"path-main"},"platform_instance"))," ",(0,a.yg)("div",{className:"type-name-line"},(0,a.yg)("span",{className:"type-name"},"string"))),(0,a.yg)("td",{parentName:"tr",align:"left"},"The instance of the platform that all assets produced by this recipe belong to. This should be unique within the platform. See ",(0,a.yg)("a",{parentName:"td",href:"https://docs.datahub.com/docs/platform-instances/"},"https://docs.datahub.com/docs/platform-instances/")," for more details.")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:"left"},(0,a.yg)("div",{className:"path-line"},(0,a.yg)("span",{className:"path-main"},"stateful_ingestion"))," ",(0,a.yg)("div",{className:"type-name-line"},(0,a.yg)("span",{className:"type-name"},"StatefulIngestionConfig"))),(0,a.yg)("td",{parentName:"tr",align:"left"},"Stateful Ingestion Config")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:"left"},(0,a.yg)("div",{className:"path-line"},(0,a.yg)("span",{className:"path-prefix"},"stateful_ingestion."),(0,a.yg)("span",{className:"path-main"},"enabled"))," ",(0,a.yg)("div",{className:"type-name-line"},(0,a.yg)("span",{className:"type-name"},"boolean"))),(0,a.yg)("td",{parentName:"tr",align:"left"},"Whether or not to enable stateful ingest. Default: True if a pipeline_name is set and either a datahub-rest sink or ",(0,a.yg)("inlineCode",{parentName:"td"},"datahub_api")," is specified, otherwise False ",(0,a.yg)("div",{className:"default-line default-line-with-docs"},"Default: ",(0,a.yg)("span",{className:"default-value"},"False")))))))),(0,a.yg)(l.A,{value:"schema",label:"Schema",mdxType:"TabItem"},(0,a.yg)("p",null,"The ",(0,a.yg)("a",{parentName:"p",href:"https://json-schema.org/"},"JSONSchema")," for this configuration is inlined below."),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-javascript"},'{\n "title": "QlikSourceConfig",\n "description": "Base configuration class for stateful ingestion for source configs to inherit from.",\n "type": "object",\n "properties": {\n "env": {\n "title": "Env",\n "description": "The environment that all assets produced by this connector belong to",\n "default": "PROD",\n "type": "string"\n },\n "platform_instance": {\n "title": "Platform Instance",\n "description": "The instance of the platform that all assets produced by this recipe belong to. This should be unique within the platform. See https://docs.datahub.com/docs/platform-instances/ for more details.",\n "type": "string"\n },\n "stateful_ingestion": {\n "title": "Stateful Ingestion",\n "description": "Stateful Ingestion Config",\n "allOf": [\n {\n "$ref": "#/definitions/StatefulIngestionConfig"\n }\n ]\n },\n "tenant_hostname": {\n "title": "Tenant Hostname",\n "description": "Qlik Tenant hostname",\n "type": "string"\n },\n "api_key": {\n "title": "Api Key",\n "description": "Qlik API Key",\n "type": "string"\n },\n "space_pattern": {\n "title": "Space Pattern",\n "description": "Regex patterns to filter Qlik spaces in ingestion.Mention \'personal_space\' if entities of personal space need to ingest",\n "default": {\n "allow": [\n ".*"\n ],\n "deny": [],\n "ignoreCase": true\n },\n "allOf": [\n {\n "$ref": "#/definitions/AllowDenyPattern"\n }\n ]\n },\n "ingest_owner": {\n "title": "Ingest Owner",\n "description": "Ingest Owner from source. This will override Owner info entered from UI",\n "default": true,\n "type": "boolean"\n },\n "data_connection_to_platform_instance": {\n "title": "Data Connection To Platform Instance",\n "description": "A mapping of the Qlik app dataset upstream tables from data connection to platform instance.Use \'data_connection_name\' as key.",\n "default": {},\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/PlatformDetail"\n }\n }\n },\n "required": [\n "tenant_hostname",\n "api_key"\n ],\n "additionalProperties": false,\n "definitions": {\n "DynamicTypedStateProviderConfig": {\n "title": "DynamicTypedStateProviderConfig",\n "type": "object",\n "properties": {\n "type": {\n "title": "Type",\n "description": "The type of the state provider to use. For DataHub use `datahub`",\n "type": "string"\n },\n "config": {\n "title": "Config",\n "description": "The configuration required for initializing the state provider. Default: The datahub_api config if set at pipeline level. Otherwise, the default DatahubClientConfig. See the defaults (https://github.com/datahub-project/datahub/blob/master/metadata-ingestion/src/datahub/ingestion/graph/client.py#L19).",\n "default": {},\n "type": "object"\n }\n },\n "required": [\n "type"\n ],\n "additionalProperties": false\n },\n "StatefulIngestionConfig": {\n "title": "StatefulIngestionConfig",\n "description": "Basic Stateful Ingestion Specific Configuration for any source.",\n "type": "object",\n "properties": {\n "enabled": {\n "title": "Enabled",\n "description": "Whether or not to enable stateful ingest. Default: True if a pipeline_name is set and either a datahub-rest sink or `datahub_api` is specified, otherwise False",\n "default": false,\n "type": "boolean"\n }\n },\n "additionalProperties": false\n },\n "AllowDenyPattern": {\n "title": "AllowDenyPattern",\n "description": "A class to store allow deny regexes",\n "type": "object",\n "properties": {\n "allow": {\n "title": "Allow",\n "description": "List of regex patterns to include in ingestion",\n "default": [\n ".*"\n ],\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "deny": {\n "title": "Deny",\n "description": "List of regex patterns to exclude from ingestion.",\n "default": [],\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "ignoreCase": {\n "title": "Ignorecase",\n "description": "Whether to ignore case sensitivity during pattern matching.",\n "default": true,\n "type": "boolean"\n }\n },\n "additionalProperties": false\n },\n "PlatformDetail": {\n "title": "PlatformDetail",\n "description": "Any source that connects to a platform should inherit this class",\n "type": "object",\n "properties": {\n "env": {\n "title": "Env",\n "description": "The environment that all assets produced by this connector belong to",\n "default": "PROD",\n "type": "string"\n },\n "platform_instance": {\n "title": "Platform Instance",\n "description": "The instance of the platform that all assets produced by this recipe belong to. This should be unique within the platform. See https://docs.datahub.com/docs/platform-instances/ for more details.",\n "type": "string"\n }\n },\n "additionalProperties": false\n }\n }\n}\n')))),(0,a.yg)("h3",{id:"code-coordinates"},"Code Coordinates"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Class Name: ",(0,a.yg)("inlineCode",{parentName:"li"},"datahub.ingestion.source.qlik_sense.qlik_sense.QlikSenseSource")),(0,a.yg)("li",{parentName:"ul"},"Browse on ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/datahub-project/datahub/blob/master/metadata-ingestion/src/datahub/ingestion/source/qlik_sense/qlik_sense.py"},"GitHub"))),(0,a.yg)("h2",null,"Questions"),(0,a.yg)("p",null,"If you've got any questions on configuring ingestion for Qlik Sense, feel free to ping us on ",(0,a.yg)("a",{parentName:"p",href:"https://datahub.com/slack"},"our Slack"),"."))}f.isMDXComponent=!0}}]);