Amundsen
Official · maintained by Marmotmarmotdata/amundsen Import tables, columns, owners, usage, dashboards and lineage from an Amundsen metadata graph
The Amundsen plugin imports the contents of an Amundsen metadata graph over Bolt, reading Neo4j directly.
Amundsen is a catalog, so every entry in it describes something that lives somewhere else. Each table is projected onto the Marmot provider and MRN its own technology's plugin uses, so an Amundsen import and a later native run land on one asset instead of two. amundsen/projection.go holds that mapping; it agrees with the OpenMetadata plugin's projection for the technologies they share.
What it reads
Tables and views, their columns, owners, tags, badges and programmatic descriptions; dashboards and their charts; read counts as statistics; table to table lineage from HAS_UPSTREAM, and dashboard to table lineage from DASHBOARD_WITH_TABLE.
No database, cluster or schema assets are created. Those belong to the technology's own plugin.
Naming
The Amundsen hierarchy is Database -> Cluster -> Schema -> Table, where Database holds the technology name. The cluster enters an asset's name only where the technology's Marmot name has room for it, such as the leading part of a Snowflake database.schema.table. Everywhere else it is an environment label and is recorded in metadata.
Tests
Unit tests run without Neo4j. The end to end tests need a graph:
docker run -d --name marmot-test-amundsen -p 17687:7687 \
-e NEO4J_AUTH=neo4j/marmotpass neo4j:5-community
docker cp testdata/seed.cypher marmot-test-amundsen:/tmp/seed.cypher
docker exec marmot-test-amundsen cypher-shell -u neo4j -p marmotpass -f /tmp/seed.cypher
MARMOT_TEST_AMUNDSEN_URI=bolt://localhost:17687 \
MARMOT_TEST_AMUNDSEN_USER=neo4j \
MARMOT_TEST_AMUNDSEN_PASSWORD=marmotpass \
go test ./...
In the UI
Point-and-click, no config file needed.
- 1 Open Runs Create pipeline
- 2 Pick Amundsen from the plugin list.
- 3 Fill in the wizard, set a schedule, save.
With the CLI
Save a YAML config, then run marmot ingest.
name: my-amundsen-pipeline
runs:
- amundsen:
uri: "<uri>"
username: "<username>"
password: "***"$ marmot ingest -c ingest.yamlNot using plugins? Other ways to populate Marmot
Configuration
17 top-level fields. * marks required fields.
tags multiselect Tags to apply to discovered assets
external_links object[] External links to show on all assets
name string Display name for the link
icon string Icon identifier for the link
url string URL to the external resource
filter object Filter discovered assets by name (regex)
include multiselect Include patterns for resource names (regex)
exclude multiselect Exclude patterns for resource names (regex)
uri string Bolt address of Amundsen's Neo4j, for example bolt://neo4j.company.com:7687
username string Neo4j username
password password Neo4j password
database string Neo4j database holding the Amundsen graph
- default
- neo4j
encrypted bool Connect over TLS
- default
- false
trust_all_certificates bool Accept any TLS certificate, including self signed ones
- default
- false
amundsen_url string Address of the Amundsen web app, used to link each asset back to its page
include_users bool Record table owners from Amundsen
- default
- true
include_dashboards bool Import dashboards and their charts
- default
- true
include_tags bool Copy Amundsen tags onto assets
- default
- true
include_descriptions bool Copy Amundsen descriptions onto assets and columns
- default
- true
include_usage bool Import Amundsen read counts as statistics
- default
- true
query_timeout_seconds int Per-query timeout
- default
- 120
page_size int Records per query. Every query is paged, so a large graph does not have to fit in memory
- default
- 1000
Assets emitted
Metadata this plugin attaches to each discovered asset.
Table
AmundsenTableFieldsThe metadata fields the plugin emits on a table or view asset.
amundsen.key stringAmundsen node key, for example postgres://prod.public/orders
amundsen.database stringAmundsen database, which holds the technology name rather than a database
amundsen.cluster stringAmundsen cluster, usually an environment label such as prod or gold
amundsen.schema stringSchema holding the table
amundsen.table stringTable name as Amundsen records it
amundsen.badges string[]Badges applied to the table in Amundsen
amundsen.tags string[]Amundsen tags of type default
amundsen.programmatic_descriptions string[]Descriptions written by an automated source rather than by a person
amundsen.last_updated_at stringWhen the table last changed, as Amundsen recorded it
amundsen.url stringTable page in the Amundsen web app
schema_description stringDescription of the schema holding the table
owners string[]Owner display names
owner_emails string[]Owner email addresses
owner_teams string[]Teams the owners belong to
Column
AmundsenColumnFieldsThe per-column fields embedded in a table asset's schema.
column_name stringColumn name
data_type stringColumn type as the source system reports it
is_nullable boolAlways true: Amundsen does not record nullability
description stringColumn description
Dashboard
AmundsenDashboardFieldsThe metadata fields the plugin emits on a dashboard asset.
amundsen.key stringAmundsen node key, for example superset_dashboard://prod.finance/revenue
amundsen.cluster stringAmundsen cluster the dashboard group sits under
amundsen.group stringDashboard group name
amundsen.group_url stringDashboard group address in the BI tool
amundsen.group_description stringDashboard group description
amundsen.product stringBI tool the dashboard belongs to
amundsen.url stringDashboard address in the BI tool
amundsen.amundsen_url stringDashboard page in the Amundsen web app
amundsen.query_names string[]Names of the queries feeding the dashboard
amundsen.tags string[]Amundsen tags of type default
amundsen.badges string[]Badges applied to the dashboard in Amundsen
amundsen.last_successful_run stringWhen the dashboard last refreshed successfully
chart_count intNumber of charts on the dashboard
Chart
AmundsenChartFieldsThe metadata fields the plugin emits on a chart asset.
amundsen.dashboard_key stringAmundsen key of the dashboard holding the chart
amundsen.group stringDashboard group name
amundsen.dashboard stringDashboard name
amundsen.chart_id stringChart id in the BI tool
amundsen.url stringChart address in the BI tool
amundsen.product stringBI tool the chart belongs to
chart_type stringChart type, for example bar or line