diff --git a/mitm_tooling/representation/sql_representation.py b/mitm_tooling/representation/sql_representation.py index 3a111d4a92bbc9c43dd33624443b5a905fa04bc0..e88c684fb0b03d6a3c54ba8b707ca97d4d4f0b14 100644 --- a/mitm_tooling/representation/sql_representation.py +++ b/mitm_tooling/representation/sql_representation.py @@ -1,4 +1,7 @@ +from __future__ import annotations + from collections.abc import Callable, Generator, Mapping +from typing import TYPE_CHECKING import pydantic import sqlalchemy as sa @@ -8,7 +11,6 @@ from mitm_tooling.data_types import MITMDataType from mitm_tooling.definition import MITMDefinition, ConceptProperties, OwnedRelations, ConceptName, MITM, get_mitm_def, \ RelationName from mitm_tooling.definition.definition_tools import map_col_groups, ColGroupMaps -from mitm_tooling.extraction.sql.data_models import Queryable, TableName from .intermediate_representation import Header, MITMData from mitm_tooling.utilities.sql_utils import create_sa_engine, qualify from mitm_tooling.utilities import python_utils @@ -16,6 +18,10 @@ from mitm_tooling.utilities.io_utils import FilePath from sqlalchemy_utils.view import create_view +if TYPE_CHECKING: + from mitm_tooling.extraction.sql.data_models import Queryable +from mitm_tooling.extraction.sql.data_models.table_identifiers import TableName + SQL_REPRESENTATION_DEFAULT_SCHEMA = 'main' diff --git a/mitm_tooling/transformation/superset/dataset_definition.py b/mitm_tooling/transformation/superset/dataset_definition.py index 92190d46300bd723eb6740fd04062622b458a4c6..7f0a6dc4b7cf48c6df7a7fee573320e4325af11b 100644 --- a/mitm_tooling/transformation/superset/dataset_definition.py +++ b/mitm_tooling/transformation/superset/dataset_definition.py @@ -80,6 +80,7 @@ class SupersetTableDef(SupersetDefFile): table_name: str schema_name: str = pydantic.Field(alias='schema') uuid: BetterUUID + database_uuid: BetterUUID main_dttm_col: str | None = None description: str | None = None default_endpoint: str | None = None diff --git a/mitm_tooling/transformation/superset/superset_representation.py b/mitm_tooling/transformation/superset/superset_representation.py index 7fe29aa25d415e6809e0a4ac60716fefd2f6d819..b40cda47e78b627684ae5f3545c18ff611933881 100644 --- a/mitm_tooling/transformation/superset/superset_representation.py +++ b/mitm_tooling/transformation/superset/superset_representation.py @@ -64,6 +64,7 @@ def infer_superset_dataset_def(sqlite_file_path: FilePath) -> SupersetDef: meta, _ = connect_and_reflect(engine) db_meta = DBMetaInfo.from_sa_meta(meta, default_schema=SQL_REPRESENTATION_DEFAULT_SCHEMA) + database_uuid = uuid.uuid4() datasets = [] for schema_name, schema_tables in db_meta.db_structure.items(): for table_name, table in schema_tables.items(): @@ -81,13 +82,13 @@ def infer_superset_dataset_def(sqlite_file_path: FilePath) -> SupersetDef: dialect=engine.dialect) )) datasets.append( - SupersetTableDef(table_name=table_name, schema_name=schema_name, uuid=uuid.uuid4(), columns=cols)) + SupersetTableDef(table_name=table_name, schema_name=schema_name, uuid=uuid.uuid4(), database_uuid=database_uuid, columns=cols)) db_name = os.path.splitext(os.path.basename(sqlite_file_path))[0] return SupersetDef( database=SupersetDatabaseDef(database_name=db_name, sqlalchemy_uri=tentative_superset_mount_url(db_name), - uuid=uuid.uuid4()), + uuid=database_uuid), datasets=datasets) diff --git a/pyproject.toml b/pyproject.toml index f37e9de5b1fcc19da4afbf173a98fcff96d1aadf..c331ee1dc0d20319406378c926c32639bff80a71 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "mitm-tooling" -version = "0.3.0" +version = "0.3.1" description = "" authors = ["Leah Tacke genannt Unterberg <leah.tgu@pads.rwth-aachen.de>"] readme = "README.md" @@ -13,7 +13,7 @@ pyyaml = "6.0.2" genson = "^1.3.0" sqlalchemy = { version = "^2.0.34", extras = ["postgresql-psycopg", "postgresql"] } -sqlalchemy-utils = "0.41.2" +sqlalchemy-utils = ">=0.38.0" pandas = { version = "^2.0", extras = ["performance", "excel", "hdf5", "output_formatting", "computation", "postgresql", "mysql", "sql-other", "plot", "compression"] } # visualization