43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
import json
|
|
from superset.app import create_app
|
|
|
|
app = create_app()
|
|
with app.app_context():
|
|
from superset import db
|
|
from superset.models.core import Database
|
|
from superset.connectors.sqla.models import SqlaTable
|
|
|
|
name = "Trino \u00b7 Iceberg Lakehouse"
|
|
uri = "trino://admin@10.0.21.50:8089/iceberg"
|
|
|
|
dbobj = db.session.query(Database).filter_by(database_name=name).first()
|
|
if not dbobj:
|
|
dbobj = Database(database_name=name, sqlalchemy_uri=uri)
|
|
dbobj.expose_in_sqllab = True
|
|
db.session.add(dbobj)
|
|
db.session.commit()
|
|
print("created database id", dbobj.id)
|
|
else:
|
|
print("database exists id", dbobj.id)
|
|
|
|
tbl = (
|
|
db.session.query(SqlaTable)
|
|
.filter_by(table_name="historical_sales", schema="historical", database_id=dbobj.id)
|
|
.first()
|
|
)
|
|
if not tbl:
|
|
tbl = SqlaTable(table_name="historical_sales", schema="historical", database=dbobj)
|
|
db.session.add(tbl)
|
|
db.session.commit()
|
|
try:
|
|
tbl.fetch_metadata()
|
|
db.session.commit()
|
|
except Exception as e:
|
|
print("fetch_metadata warning:", str(e)[:200])
|
|
print("created dataset id", tbl.id)
|
|
else:
|
|
print("dataset exists id", tbl.id)
|
|
|
|
print("COLUMNS:", [c.column_name for c in tbl.columns])
|
|
print("DB_ID", dbobj.id, "TABLE_ID", tbl.id)
|