mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-11-01 19:18:05 +00:00
* Fix #9227: Fix metabase connector to work with non-admin user * Fix #9227: Fix metabase connector to work with non-admin user * fix pycheck * fix pycheck * fix pycheck
This commit is contained in:
parent
2e1fb96751
commit
145e9d48f6
@ -21,7 +21,6 @@ from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
||||
from metadata.generated.schema.entity.data.dashboard import (
|
||||
Dashboard as LineageDashboard,
|
||||
)
|
||||
from metadata.generated.schema.entity.data.table import Table
|
||||
from metadata.generated.schema.entity.services.connections.dashboard.metabaseConnection import (
|
||||
MetabaseConnection,
|
||||
)
|
||||
@ -134,7 +133,8 @@ class MetabaseSource(DashboardServiceSource):
|
||||
for chart in charts:
|
||||
try:
|
||||
chart_details = chart["card"]
|
||||
|
||||
if "id" not in chart_details:
|
||||
continue
|
||||
chart_url = (
|
||||
f"/question/{chart_details['id']}-"
|
||||
f"{replace_special_with(raw=chart_details['name'].lower(), replacement='-')}"
|
||||
@ -232,7 +232,11 @@ class MetabaseSource(DashboardServiceSource):
|
||||
resp_database = self.req_get(f"/api/database/{chart_details['database_id']}")
|
||||
if resp_database.status_code == 200:
|
||||
database = resp_database.json()
|
||||
query = chart_details["dataset_query"]["native"]["query"]
|
||||
query = (
|
||||
chart_details.get("dataset_query", {})
|
||||
.get("native", {})
|
||||
.get("query", "")
|
||||
)
|
||||
lineage_parser = LineageParser(query)
|
||||
for table in lineage_parser.source_tables:
|
||||
database_schema_name, table = fqn.split(str(table))[-2:]
|
||||
@ -241,24 +245,36 @@ class MetabaseSource(DashboardServiceSource):
|
||||
if database_schema_name == "<default>"
|
||||
else database_schema_name
|
||||
)
|
||||
from_entities = search_table_entities(
|
||||
metadata=self.metadata,
|
||||
database=database["details"]["db"],
|
||||
service_name=db_service_name,
|
||||
database_schema=database_schema_name,
|
||||
table=table,
|
||||
database = database.get("details", {}).get("db", None)
|
||||
if database:
|
||||
from_entities = search_table_entities(
|
||||
metadata=self.metadata,
|
||||
database=database,
|
||||
service_name=db_service_name,
|
||||
database_schema=database_schema_name,
|
||||
table=table,
|
||||
)
|
||||
else:
|
||||
from_entities = search_table_entities(
|
||||
metadata=self.metadata,
|
||||
service_name=db_service_name,
|
||||
database=None,
|
||||
database_schema=database_schema_name,
|
||||
table=table,
|
||||
)
|
||||
|
||||
to_fqn = fqn.build(
|
||||
self.metadata,
|
||||
entity_type=LineageDashboard,
|
||||
service_name=self.config.serviceName,
|
||||
dashboard_name=dashboard_name,
|
||||
)
|
||||
to_entity = self.metadata.get_by_name(
|
||||
entity=LineageDashboard,
|
||||
fqn=to_fqn,
|
||||
)
|
||||
|
||||
for from_entity in from_entities:
|
||||
to_fqn = fqn.build(
|
||||
self.metadata,
|
||||
entity_type=LineageDashboard,
|
||||
service_name=self.config.serviceName,
|
||||
dashboard_name=dashboard_name,
|
||||
)
|
||||
to_entity = self.metadata.get_by_name(
|
||||
entity=LineageDashboard,
|
||||
fqn=to_fqn,
|
||||
)
|
||||
yield self._get_add_lineage_request(
|
||||
to_entity=to_entity, from_entity=from_entity
|
||||
)
|
||||
@ -269,18 +285,24 @@ class MetabaseSource(DashboardServiceSource):
|
||||
resp_tables = self.req_get(f"/api/table/{chart_details['table_id']}")
|
||||
if resp_tables.status_code == 200:
|
||||
table = resp_tables.json()
|
||||
from_fqn = fqn.build(
|
||||
self.metadata,
|
||||
entity_type=Table,
|
||||
service_name=db_service_name,
|
||||
database_name=table["db"]["details"]["db"],
|
||||
schema_name=table.get("schema"),
|
||||
table_name=table.get("display_name"),
|
||||
)
|
||||
from_entity = self.metadata.get_by_name(
|
||||
entity=Table,
|
||||
fqn=from_fqn,
|
||||
)
|
||||
database_name = table.get("db", {}).get("details", {}).get("db", None)
|
||||
if database_name:
|
||||
from_entities = search_table_entities(
|
||||
metadata=self.metadata,
|
||||
database=database_name,
|
||||
service_name=db_service_name,
|
||||
database_schema=table.get("schema"),
|
||||
table=table.get("display_name"),
|
||||
)
|
||||
else:
|
||||
from_entities = search_table_entities(
|
||||
metadata=self.metadata,
|
||||
service_name=db_service_name,
|
||||
database=None,
|
||||
database_schema=table.get("schema"),
|
||||
table=table.get("display_name"),
|
||||
)
|
||||
|
||||
to_fqn = fqn.build(
|
||||
self.metadata,
|
||||
entity_type=LineageDashboard,
|
||||
@ -291,6 +313,8 @@ class MetabaseSource(DashboardServiceSource):
|
||||
entity=LineageDashboard,
|
||||
fqn=to_fqn,
|
||||
)
|
||||
yield self._get_add_lineage_request(
|
||||
to_entity=to_entity, from_entity=from_entity
|
||||
)
|
||||
|
||||
for from_entity in from_entities:
|
||||
yield self._get_add_lineage_request(
|
||||
to_entity=to_entity, from_entity=from_entity
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user