Skip to content

Commit

Permalink
Visibility type for models
Browse files Browse the repository at this point in the history
  • Loading branch information
gouline committed Jul 6, 2022
1 parent ba44c1c commit 15c95a1
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 20 deletions.
20 changes: 7 additions & 13 deletions dbtmetabase/metabase.py
Original file line number Diff line number Diff line change
Expand Up @@ -231,26 +231,20 @@ def export_model(
return

# Empty strings not accepted by Metabase
if not model.description:
model_description = None
else:
model_description = model.description
if not model.points_of_interest:
model_points_of_interest = None
else:
model_points_of_interest = model.points_of_interest
if not model.caveats:
model_caveats = None
else:
model_caveats = model.caveats
model_description = model.description or None
model_points_of_interest = model.points_of_interest or None
model_caveats = model.caveats or None
model_visibility = model.visibility_type or "normal"

body_table = {}
if api_table["description"] != model_description:
if api_table.get("description") != model_description:
body_table["description"] = model_description
if api_table.get("points_of_interest") != model_points_of_interest:
body_table["points_of_interest"] = model_points_of_interest
if api_table.get("caveats") != model_caveats:
body_table["caveats"] = model_caveats
if api_table.get("visibility_type") != model_visibility:
body_table["visibility_type"] = model_visibility

table_id = api_table["id"]
if bool(body_table):
Expand Down
2 changes: 2 additions & 0 deletions dbtmetabase/models/metabase.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ class MetabaseModel:
dbt_name: Optional[str] = None
source: Optional[str] = None
unique_id: Optional[str] = None

visibility_type: Optional[str] = None

@property
def ref(self) -> Optional[str]:
Expand Down
28 changes: 21 additions & 7 deletions dbtmetabase/parsers/dbt_manifest.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,10 +271,11 @@ def _read_model(
unique_id=unique_id,
source=source,
dbt_name=dbt_name,
**DbtManifestReader._read_meta_fields(model),
)

@staticmethod
def _read_column(
self,
column: Mapping,
relationship: Optional[Mapping],
) -> MetabaseColumn:
Expand All @@ -293,6 +294,7 @@ def _read_column(
metabase_column = MetabaseColumn(
name=column_name,
description=column_description,
**DbtManifestReader._read_meta_fields(column),
)

if relationship:
Expand All @@ -306,10 +308,22 @@ def _read_column(
metabase_column.fk_target_field,
)

if column["meta"]:
meta = column.get("meta", [])
for field in METABASE_META_FIELDS:
if f"metabase.{field}" in meta:
setattr(metabase_column, field, meta[f"metabase.{field}"])

return metabase_column

@staticmethod
def _read_meta_fields(obj: dict) -> Mapping:
"""Reads meta fields from a schem object.
Args:
obj (dict): Schema object.
Returns:
Mapping: Field values.
"""

meta = obj.get("meta", [])
return {
k: meta[f"metabase.{k}"]
for k in METABASE_META_FIELDS
if f"metabase.{k}" in meta
}

0 comments on commit 15c95a1

Please sign in to comment.