mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-11-13 17:32:53 +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 (
|
from metadata.generated.schema.entity.data.dashboard import (
|
||||||
Dashboard as LineageDashboard,
|
Dashboard as LineageDashboard,
|
||||||
)
|
)
|
||||||
from metadata.generated.schema.entity.data.table import Table
|
|
||||||
from metadata.generated.schema.entity.services.connections.dashboard.metabaseConnection import (
|
from metadata.generated.schema.entity.services.connections.dashboard.metabaseConnection import (
|
||||||
MetabaseConnection,
|
MetabaseConnection,
|
||||||
)
|
)
|
||||||
@ -134,7 +133,8 @@ class MetabaseSource(DashboardServiceSource):
|
|||||||
for chart in charts:
|
for chart in charts:
|
||||||
try:
|
try:
|
||||||
chart_details = chart["card"]
|
chart_details = chart["card"]
|
||||||
|
if "id" not in chart_details:
|
||||||
|
continue
|
||||||
chart_url = (
|
chart_url = (
|
||||||
f"/question/{chart_details['id']}-"
|
f"/question/{chart_details['id']}-"
|
||||||
f"{replace_special_with(raw=chart_details['name'].lower(), replacement='-')}"
|
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']}")
|
resp_database = self.req_get(f"/api/database/{chart_details['database_id']}")
|
||||||
if resp_database.status_code == 200:
|
if resp_database.status_code == 200:
|
||||||
database = resp_database.json()
|
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)
|
lineage_parser = LineageParser(query)
|
||||||
for table in lineage_parser.source_tables:
|
for table in lineage_parser.source_tables:
|
||||||
database_schema_name, table = fqn.split(str(table))[-2:]
|
database_schema_name, table = fqn.split(str(table))[-2:]
|
||||||
@ -241,24 +245,36 @@ class MetabaseSource(DashboardServiceSource):
|
|||||||
if database_schema_name == "<default>"
|
if database_schema_name == "<default>"
|
||||||
else database_schema_name
|
else database_schema_name
|
||||||
)
|
)
|
||||||
from_entities = search_table_entities(
|
database = database.get("details", {}).get("db", None)
|
||||||
metadata=self.metadata,
|
if database:
|
||||||
database=database["details"]["db"],
|
from_entities = search_table_entities(
|
||||||
service_name=db_service_name,
|
metadata=self.metadata,
|
||||||
database_schema=database_schema_name,
|
database=database,
|
||||||
table=table,
|
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:
|
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(
|
yield self._get_add_lineage_request(
|
||||||
to_entity=to_entity, from_entity=from_entity
|
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']}")
|
resp_tables = self.req_get(f"/api/table/{chart_details['table_id']}")
|
||||||
if resp_tables.status_code == 200:
|
if resp_tables.status_code == 200:
|
||||||
table = resp_tables.json()
|
table = resp_tables.json()
|
||||||
from_fqn = fqn.build(
|
database_name = table.get("db", {}).get("details", {}).get("db", None)
|
||||||
self.metadata,
|
if database_name:
|
||||||
entity_type=Table,
|
from_entities = search_table_entities(
|
||||||
service_name=db_service_name,
|
metadata=self.metadata,
|
||||||
database_name=table["db"]["details"]["db"],
|
database=database_name,
|
||||||
schema_name=table.get("schema"),
|
service_name=db_service_name,
|
||||||
table_name=table.get("display_name"),
|
database_schema=table.get("schema"),
|
||||||
)
|
table=table.get("display_name"),
|
||||||
from_entity = self.metadata.get_by_name(
|
)
|
||||||
entity=Table,
|
else:
|
||||||
fqn=from_fqn,
|
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(
|
to_fqn = fqn.build(
|
||||||
self.metadata,
|
self.metadata,
|
||||||
entity_type=LineageDashboard,
|
entity_type=LineageDashboard,
|
||||||
@ -291,6 +313,8 @@ class MetabaseSource(DashboardServiceSource):
|
|||||||
entity=LineageDashboard,
|
entity=LineageDashboard,
|
||||||
fqn=to_fqn,
|
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