Skip to main content
Version: Preview

Amundsen

Experimental
Creates:
AssetsLineage

Configure in the UI

This plugin can be configured directly in the Marmot UI with a step-by-step wizard.

View Guide

The Amundsen plugin reads an Amundsen metadata graph straight from its Neo4j over Bolt. It imports tables and views with their columns, owners, tags and badges, dashboards with their charts, read counts as statistics, and the lineage Amundsen records between tables and between a dashboard and the tables behind it.

Assets land on the technology they belong to

Amundsen is a catalog, so everything in it describes something that lives somewhere else: a table under Amundsen's postgres database is a Postgres table. Each entry is projected onto the provider and name the technology's own Marmot plugin uses, so an Amundsen import and a later native run merge onto one asset rather than leaving two half populated ones.

A Postgres table becomes mrn://table/postgresql/orders, a Hive one mrn://table/hive/sales.orders, a Snowflake one mrn://table/snowflake/analytics.public.orders. A technology with no entry in the table keeps its Amundsen name as the provider and is named schema.table.

No database, cluster or schema assets are created, because those belong to the technology's own plugin.

Naming and the cluster

Amundsen's hierarchy is Database -> Cluster -> Schema -> Table, one level deeper than Marmot's, and its Database holds the technology rather than a database. The cluster enters an asset's name only where the technology's own naming has room for it, which is the leading part of a three part name such as a Snowflake or Presto table. Everywhere else the cluster is an environment label like prod or gold, so it is recorded under amundsen.cluster in metadata instead.

Statistics

Amundsen counts how often something was read rather than how large it is, so this plugin emits asset.read_count and asset.unique_readers for every table and dashboard that has been read at least once, not the asset.row_count family the database plugins use.

Connecting

The Neo4j Go driver takes encryption from the address scheme. Set encrypted: true and the plugin upgrades bolt:// to bolt+s:// for you, or to bolt+ssc:// when trust_all_certificates is also set. An address that already names an encrypted scheme is used as it is.

Example Configuration


uri: "bolt://neo4j.company.com:7687"
username: "neo4j"
password: "secret"
amundsen_url: "https://amundsen.company.com"
include_dashboards: true
tags:
- "amundsen"

Configuration

The following configuration options are available:

PropertyTypeRequiredDescription
amundsen_urlstringfalseAddress of the Amundsen web app, used to link each asset back to its page
databasestringfalseNeo4j database holding the Amundsen graph
encryptedboolfalseConnect over TLS
external_links[]ExternalLinkfalseExternal links to show on all assets
filterFilterfalseFilter discovered assets by name (regex)
include_dashboardsboolfalseImport dashboards and their charts
include_descriptionsboolfalseCopy Amundsen descriptions onto assets and columns
include_tagsboolfalseCopy Amundsen tags onto assets
include_usageboolfalseImport Amundsen read counts as statistics
include_usersboolfalseRecord table owners from Amundsen
page_sizeintfalseRecords per query. Every query is paged, so a large graph does not have to fit in memory
passwordstringtrueNeo4j password
query_timeout_secondsintfalsePer-query timeout
tagsTagsConfigfalseTags to apply to discovered assets
trust_all_certificatesboolfalseAccept any TLS certificate, including self signed ones
uristringtrueBolt address of Amundsen's Neo4j, for example bolt://neo4j.company.com:7687
usernamestringtrueNeo4j username

Available Metadata

The following metadata fields are available:

FieldTypeDescription
amundsen.amundsen_urlstringDashboard page in the Amundsen web app
amundsen.badges[]stringBadges applied to the table or dashboard in Amundsen
amundsen.chart_idstringChart id in the BI tool
amundsen.clusterstringAmundsen cluster, usually an environment label such as prod or gold
amundsen.dashboardstringDashboard name
amundsen.dashboard_keystringAmundsen key of the dashboard holding the chart
amundsen.databasestringAmundsen database, which holds the technology name rather than a database
amundsen.groupstringDashboard group name
amundsen.group_descriptionstringDashboard group description
amundsen.group_urlstringDashboard group address in the BI tool
amundsen.keystringAmundsen node key, for example postgres://prod.public/orders
amundsen.last_successful_runstringWhen the dashboard last refreshed successfully
amundsen.last_updated_atstringWhen the table last changed, as Amundsen recorded it
amundsen.productstringBI tool the dashboard or chart belongs to
amundsen.programmatic_descriptions[]stringDescriptions written by an automated source rather than by a person
amundsen.query_names[]stringNames of the queries feeding the dashboard
amundsen.schemastringSchema holding the table
amundsen.tablestringTable name as Amundsen records it
amundsen.tags[]stringAmundsen tags of type default
amundsen.urlstringPage in the Amundsen web app, or the chart address in the BI tool
chart_countintNumber of charts on the dashboard
chart_typestringChart type, for example bar or line
column_namestringColumn name
data_typestringColumn type as the source system reports it
descriptionstringColumn description
is_nullableboolAlways true: Amundsen does not record nullability
owner_emails[]stringOwner email addresses
owner_teams[]stringTeams the owners belong to
owners[]stringOwner display names
schema_descriptionstringDescription of the schema holding the table