Skip to main content

Looker dashboards

For context on getting started with ingestion, check out our metadata ingestion guide.

Setup#

To install this plugin, run pip install 'acryl-datahub[looker]'.

Capabilities#

This plugin extracts the following:

  • Looker dashboards, dashboard elements (charts) and explores
  • Names, descriptions, URLs, chart types, input explores for the charts
  • Schemas and input views for explores
  • Owners of dashboards

NOTE: To get complete Looker metadata integration (including Looker views and lineage to the underlying warehouse tables), you must ALSO use the LookML source. Documentation for that is here

Configuration Notes#

See the Looker authentication docs for the steps to create a client ID and secret. You need to provide the following permissions for ingestion to work correctly.

access_dataexploremanage_modelssee_datagroupssee_lookmlsee_lookml_dashboardssee_lookssee_pdtssee_queriessee_schedulessee_sqlsee_system_activitysee_user_dashboardssee_users

Here is an example permission set after configuration. Looker DataHub Permission Set

Quickstart recipe#

Check out the following recipe to get started with ingestion! See below for full configuration options.

For general pointers on writing and running a recipe, see our main recipe guide.

source:  type: "looker"  config:    # Coordinates    base_url: https://company.looker.com:19999
    # Credentials    client_id: admin    client_secret: password

sink:  # sink configs

Config details#

Note that a . is used to denote nested fields in the YAML recipe.

FieldRequiredDefaultDescription
client_idโœ…Looker API3 client ID.
client_secretโœ…Looker API3 client secret.
base_urlโœ…Url to your Looker instance: https://company.looker.com:19999 or https://looker.company.com, or similar.
platform_name"looker"Platform to use in namespace when constructing URNs.
extract_ownersTrueWhen enabled, extracts ownership from Looker directly. When disabled, ownership is left empty for dashboards and charts.
strip_user_ids_from_emailFalseWhen enabled, converts Looker user emails of the form name@domain.com to urn:li:corpuser:name when assigning ownership
actorโ›”๏ธ Deprecated"urn:li:corpuser:etl"This config is deprecated in favor of extract_owners. Previously, was the actor to use in ownership properties of ingested metadata
dashboard_pattern.allowList of regex patterns for dashboards to include in ingestion.
dashboard_pattern.denyList of regex patterns for dashboards to exclude from ingestion.
dashboard_pattern.ignoreCaseTrueWhether to ignore case sensitivity during pattern matching.
chart_pattern.allowList of regex patterns for charts to include in ingestion.
chart_pattern.denyList of regex patterns for charts to exclude from ingestion.
chart_pattern.ignoreCaseTrueWhether to ignore case sensitivity during pattern matching.
include_deletedFalseWhether to include deleted dashboards.
skip_personal_foldersFalseWhether to skip ingestion of dashboards in personal folders. Setting this to True will only ingest dashboards in the Shared folder space.
tag_measures_and_dimensionsTrueWhen enabled, attaches tags to measures, dimensions and dimension groups to make them more discoverable. When disabled, adds this information to the description of the column.
env"PROD"Environment to use in namespace when constructing URNs.
view_naming_pattern{project}.view.{name}Pattern for providing dataset names to views. Allowed variables are {project}, {model}, {name}
view_browse_pattern/{env}/{platform}/{project}/views/{name}Pattern for providing browse paths to views. Allowed variables are {project}, {model}, {name}, {platform} and {env}
explore_naming_pattern{model}.explore.{name}Pattern for providing dataset names to explores. Allowed variables are {project}, {model}, {name}
explore_browse_pattern/{env}/{platform}/{project}/explores/{model}.{name}Pattern for providing browse paths to explores. Allowed variables are {project}, {model}, {name}, {platform} and {env}

Compatibility#

Coming soon!

Questions#

If you've got any questions on configuring this source, feel free to ping us on our Slack!