This is an automated email from the ASF dual-hosted git repository.

hugh pushed a commit to branch update-dataset-schema
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 4758b014ad53b13395267cc13a7d5cd89e2f5fe7
Author: hughhhh <hughmi...@gmail.com>
AuthorDate: Tue Mar 29 22:07:37 2022 -0700

    add migration for adding default db and schema to model
---
 superset/datasets/models.py                        |   11 +-
 ...075540d1_add_default_db_schema_dataset_model.py | 3894 ++++++++++++++++++++
 2 files changed, 3904 insertions(+), 1 deletion(-)

diff --git a/superset/datasets/models.py b/superset/datasets/models.py
index 56a6fbf..b887ebb 100644
--- a/superset/datasets/models.py
+++ b/superset/datasets/models.py
@@ -24,13 +24,15 @@ dataset, new models for columns, metrics, and tables were 
also introduced.
 These models are not fully implemented, and shouldn't be used yet.
 """
 
+from email.policy import default
 from typing import List
 
 import sqlalchemy as sa
 from flask_appbuilder import Model
-from sqlalchemy.orm import relationship
+from sqlalchemy.orm import backref, relationship
 
 from superset.columns.models import Column
+from superset.models.core import Database
 from superset.models.helpers import (
     AuditMixinNullable,
     ExtraJSONMixin,
@@ -75,6 +77,13 @@ class Dataset(Model, AuditMixinNullable, ExtraJSONMixin, 
ImportExportMixin):
 
     expression = sa.Column(sa.Text)
 
+    default_schema = sa.Column(sa.Text)
+    database_id = sa.Column(sa.Integer, sa.ForeignKey("dbs.id"), 
nullable=False)
+    default_database: Database = relationship(
+        "Database",
+        foreign_keys=[database_id],
+    )
+
     # n:n relationship
     tables: List[Table] = relationship("Table", 
secondary=table_association_table)
 
diff --git 
a/superset/migrations/versions/d77e075540d1_add_default_db_schema_dataset_model.py
 
b/superset/migrations/versions/d77e075540d1_add_default_db_schema_dataset_model.py
new file mode 100644
index 0000000..51fb409
--- /dev/null
+++ 
b/superset/migrations/versions/d77e075540d1_add_default_db_schema_dataset_model.py
@@ -0,0 +1,3894 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+"""add_default_db_schema_dataset_model
+
+Revision ID: d77e075540d1
+Revises: 58df9d617f14
+Create Date: 2022-03-29 22:03:50.533742
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = "d77e075540d1"
+down_revision = "58df9d617f14"
+
+import sqlalchemy as sa
+from alembic import op
+from sqlalchemy.dialects import postgresql
+
+
+def upgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.drop_index(
+        "ix_dashboard_email_schedules_active", 
table_name="dashboard_email_schedules"
+    )
+    op.drop_table("dashboard_email_schedules")
+    op.drop_table("users_channels")
+    op.drop_table("FCC 2018 Survey")
+    op.drop_index("ix_alerts_active", table_name="alerts")
+    op.drop_table("alerts")
+    op.drop_table("covid_vaccines")
+    op.drop_table("embedded_dashboards")
+    op.drop_table("unicode_test")
+    op.drop_table("messages")
+    op.drop_table("channel_members")
+    op.drop_table("long_lat")
+    op.drop_table("birth_names")
+    op.drop_table("alert_logs")
+    op.drop_table("alert_owner")
+    op.drop_table("birth_france_by_region")
+    op.drop_table("users")
+    op.drop_table("sf_population_polygons")
+    op.drop_table("bart_lines")
+    op.drop_index("ix_slice_email_schedules_active", 
table_name="slice_email_schedules")
+    op.drop_table("slice_email_schedules")
+    op.drop_table("wb_health_population")
+    op.drop_table("exported_stats")
+    op.drop_index("ix_sql_observations_dttm", table_name="sql_observations")
+    op.drop_table("sql_observations")
+    op.drop_table("channels")
+    op.drop_table("cleaned_sales_data")
+    op.drop_table("threads")
+    op.drop_table("video_game_sales")
+    op.drop_table("flights")
+    op.alter_column(
+        "annotation", "layer_id", existing_type=sa.INTEGER(), nullable=False
+    )
+    op.alter_column(
+        "dashboard_roles", "dashboard_id", existing_type=sa.INTEGER(), 
nullable=False
+    )
+    op.create_foreign_key(None, "datasources", "ab_user", ["changed_by_fk"], 
["id"])
+    op.alter_column(
+        "dbs",
+        "allow_file_upload",
+        existing_type=sa.BOOLEAN(),
+        nullable=True,
+        existing_server_default=sa.text("true"),
+    )
+    op.create_unique_constraint(None, "dynamic_plugin", ["bundle_url"])
+    op.alter_column(
+        "filter_sets", "dashboard_id", existing_type=sa.INTEGER(), 
nullable=True
+    )
+    op.create_unique_constraint(None, "filter_sets", ["name"])
+    op.drop_index("ix_key_value_expires_on", table_name="key_value")
+    op.drop_index("ix_key_value_uuid", table_name="key_value")
+    op.create_unique_constraint(None, "key_value", ["uuid"])
+    op.alter_column("report_schedule", "extra", existing_type=sa.TEXT(), 
nullable=True)
+    op.drop_index("ix_creation_method", table_name="report_schedule")
+    op.create_unique_constraint(
+        None, "report_schedule_user", ["user_id", "report_schedule_id"]
+    )
+    op.drop_index(
+        "ix_row_level_security_filters_filter_type",
+        table_name="row_level_security_filters",
+    )
+    op.alter_column("sl_columns", "name", existing_type=sa.TEXT(), 
nullable=True)
+    op.alter_column("sl_columns", "type", existing_type=sa.TEXT(), 
nullable=True)
+    op.alter_column("sl_columns", "expression", existing_type=sa.TEXT(), 
nullable=True)
+    op.alter_column(
+        "sl_columns", "is_physical", existing_type=sa.BOOLEAN(), nullable=True
+    )
+    op.alter_column(
+        "sl_columns", "is_temporal", existing_type=sa.BOOLEAN(), nullable=True
+    )
+    op.alter_column(
+        "sl_columns", "is_spatial", existing_type=sa.BOOLEAN(), nullable=True
+    )
+    op.alter_column(
+        "sl_columns", "is_partition", existing_type=sa.BOOLEAN(), nullable=True
+    )
+    op.alter_column(
+        "sl_columns", "is_aggregation", existing_type=sa.BOOLEAN(), 
nullable=True
+    )
+    op.alter_column(
+        "sl_columns", "is_additive", existing_type=sa.BOOLEAN(), nullable=True
+    )
+    op.alter_column(
+        "sl_columns", "is_increase_desired", existing_type=sa.BOOLEAN(), 
nullable=True
+    )
+    op.create_foreign_key(None, "sl_columns", "ab_user", ["created_by_fk"], 
["id"])
+    op.create_foreign_key(None, "sl_columns", "ab_user", ["changed_by_fk"], 
["id"])
+    op.alter_column(
+        "sl_dataset_columns", "dataset_id", existing_type=sa.INTEGER(), 
nullable=True
+    )
+    op.alter_column(
+        "sl_dataset_columns", "column_id", existing_type=sa.INTEGER(), 
nullable=True
+    )
+    op.alter_column(
+        "sl_dataset_tables", "dataset_id", existing_type=sa.INTEGER(), 
nullable=True
+    )
+    op.alter_column(
+        "sl_dataset_tables", "table_id", existing_type=sa.INTEGER(), 
nullable=True
+    )
+    op.add_column("sl_datasets", sa.Column("default_schema", sa.Text(), 
nullable=True))
+    op.add_column("sl_datasets", sa.Column("database_id", sa.Integer(), 
nullable=False))
+    op.alter_column("sl_datasets", "name", existing_type=sa.TEXT(), 
nullable=True)
+    op.alter_column("sl_datasets", "expression", existing_type=sa.TEXT(), 
nullable=True)
+    op.alter_column(
+        "sl_datasets", "is_physical", existing_type=sa.BOOLEAN(), nullable=True
+    )
+    op.create_foreign_key(None, "sl_datasets", "ab_user", ["changed_by_fk"], 
["id"])
+    op.create_foreign_key(None, "sl_datasets", "dbs", ["database_id"], ["id"])
+    op.create_foreign_key(None, "sl_datasets", "ab_user", ["created_by_fk"], 
["id"])
+    op.alter_column(
+        "sl_table_columns", "table_id", existing_type=sa.INTEGER(), 
nullable=True
+    )
+    op.alter_column(
+        "sl_table_columns", "column_id", existing_type=sa.INTEGER(), 
nullable=True
+    )
+    op.alter_column("sl_tables", "name", existing_type=sa.TEXT(), 
nullable=True)
+    op.create_unique_constraint(
+        None, "sl_tables", ["database_id", "catalog", "schema", "name"]
+    )
+    op.create_foreign_key(None, "sl_tables", "ab_user", ["changed_by_fk"], 
["id"])
+    op.create_foreign_key(None, "sl_tables", "ab_user", ["created_by_fk"], 
["id"])
+    op.alter_column("tab_state", "autorun", existing_type=sa.BOOLEAN(), 
nullable=True)
+    op.alter_column(
+        "tab_state",
+        "hide_left_bar",
+        existing_type=sa.BOOLEAN(),
+        nullable=True,
+        existing_server_default=sa.text("false"),
+    )
+    op.drop_index("ix_tab_state_id", table_name="tab_state")
+    op.drop_index("ix_table_schema_id", table_name="table_schema")
+    op.drop_index("ix_tagged_object_object_id", table_name="tagged_object")
+    # ### end Alembic commands ###
+
+
+def downgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.create_index(
+        "ix_tagged_object_object_id", "tagged_object", ["object_id"], 
unique=False
+    )
+    op.create_index("ix_table_schema_id", "table_schema", ["id"], unique=False)
+    op.create_index("ix_tab_state_id", "tab_state", ["id"], unique=False)
+    op.alter_column(
+        "tab_state",
+        "hide_left_bar",
+        existing_type=sa.BOOLEAN(),
+        nullable=False,
+        existing_server_default=sa.text("false"),
+    )
+    op.alter_column("tab_state", "autorun", existing_type=sa.BOOLEAN(), 
nullable=False)
+    op.drop_constraint(None, "sl_tables", type_="foreignkey")
+    op.drop_constraint(None, "sl_tables", type_="foreignkey")
+    op.drop_constraint(None, "sl_tables", type_="unique")
+    op.alter_column("sl_tables", "name", existing_type=sa.TEXT(), 
nullable=False)
+    op.alter_column(
+        "sl_table_columns", "column_id", existing_type=sa.INTEGER(), 
nullable=False
+    )
+    op.alter_column(
+        "sl_table_columns", "table_id", existing_type=sa.INTEGER(), 
nullable=False
+    )
+    op.drop_constraint(None, "sl_datasets", type_="foreignkey")
+    op.drop_constraint(None, "sl_datasets", type_="foreignkey")
+    op.drop_constraint(None, "sl_datasets", type_="foreignkey")
+    op.alter_column(
+        "sl_datasets", "is_physical", existing_type=sa.BOOLEAN(), 
nullable=False
+    )
+    op.alter_column(
+        "sl_datasets", "expression", existing_type=sa.TEXT(), nullable=False
+    )
+    op.alter_column("sl_datasets", "name", existing_type=sa.TEXT(), 
nullable=False)
+    op.drop_column("sl_datasets", "database_id")
+    op.drop_column("sl_datasets", "default_schema")
+    op.alter_column(
+        "sl_dataset_tables", "table_id", existing_type=sa.INTEGER(), 
nullable=False
+    )
+    op.alter_column(
+        "sl_dataset_tables", "dataset_id", existing_type=sa.INTEGER(), 
nullable=False
+    )
+    op.alter_column(
+        "sl_dataset_columns", "column_id", existing_type=sa.INTEGER(), 
nullable=False
+    )
+    op.alter_column(
+        "sl_dataset_columns", "dataset_id", existing_type=sa.INTEGER(), 
nullable=False
+    )
+    op.drop_constraint(None, "sl_columns", type_="foreignkey")
+    op.drop_constraint(None, "sl_columns", type_="foreignkey")
+    op.alter_column(
+        "sl_columns", "is_increase_desired", existing_type=sa.BOOLEAN(), 
nullable=False
+    )
+    op.alter_column(
+        "sl_columns", "is_additive", existing_type=sa.BOOLEAN(), nullable=False
+    )
+    op.alter_column(
+        "sl_columns", "is_aggregation", existing_type=sa.BOOLEAN(), 
nullable=False
+    )
+    op.alter_column(
+        "sl_columns", "is_partition", existing_type=sa.BOOLEAN(), 
nullable=False
+    )
+    op.alter_column(
+        "sl_columns", "is_spatial", existing_type=sa.BOOLEAN(), nullable=False
+    )
+    op.alter_column(
+        "sl_columns", "is_temporal", existing_type=sa.BOOLEAN(), nullable=False
+    )
+    op.alter_column(
+        "sl_columns", "is_physical", existing_type=sa.BOOLEAN(), nullable=False
+    )
+    op.alter_column("sl_columns", "expression", existing_type=sa.TEXT(), 
nullable=False)
+    op.alter_column("sl_columns", "type", existing_type=sa.TEXT(), 
nullable=False)
+    op.alter_column("sl_columns", "name", existing_type=sa.TEXT(), 
nullable=False)
+    op.create_index(
+        "ix_row_level_security_filters_filter_type",
+        "row_level_security_filters",
+        ["filter_type"],
+        unique=False,
+    )
+    op.drop_constraint(None, "report_schedule_user", type_="unique")
+    op.create_index(
+        "ix_creation_method", "report_schedule", ["creation_method"], 
unique=False
+    )
+    op.alter_column("report_schedule", "extra", existing_type=sa.TEXT(), 
nullable=False)
+    op.drop_constraint(None, "key_value", type_="unique")
+    op.create_index("ix_key_value_uuid", "key_value", ["uuid"], unique=False)
+    op.create_index(
+        "ix_key_value_expires_on", "key_value", ["expires_on"], unique=False
+    )
+    op.drop_constraint(None, "filter_sets", type_="unique")
+    op.alter_column(
+        "filter_sets", "dashboard_id", existing_type=sa.INTEGER(), 
nullable=False
+    )
+    op.drop_constraint(None, "dynamic_plugin", type_="unique")
+    op.alter_column(
+        "dbs",
+        "allow_file_upload",
+        existing_type=sa.BOOLEAN(),
+        nullable=False,
+        existing_server_default=sa.text("true"),
+    )
+    op.drop_constraint(None, "datasources", type_="foreignkey")
+    op.alter_column(
+        "dashboard_roles", "dashboard_id", existing_type=sa.INTEGER(), 
nullable=True
+    )
+    op.alter_column("annotation", "layer_id", existing_type=sa.INTEGER(), 
nullable=True)
+    op.create_table(
+        "flights",
+        sa.Column("YEAR", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("MONTH", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("DAY", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("DAY_OF_WEEK", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column("AIRLINE", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("FLIGHT_NUMBER", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column("TAIL_NUMBER", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("ORIGIN_AIRPORT", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("DESTINATION_AIRPORT", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "SCHEDULED_DEPARTURE", sa.BIGINT(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "DEPARTURE_TIME",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "DEPARTURE_DELAY",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "TAXI_OUT",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "WHEELS_OFF",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("SCHEDULED_TIME", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "ELAPSED_TIME",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "AIR_TIME",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("DISTANCE", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "WHEELS_ON",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "TAXI_IN",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("SCHEDULED_ARRIVAL", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "ARRIVAL_TIME",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "ARRIVAL_DELAY",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("DIVERTED", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("CANCELLED", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column("CANCELLATION_REASON", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "AIR_SYSTEM_DELAY",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "SECURITY_DELAY",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "AIRLINE_DELAY",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "LATE_AIRCRAFT_DELAY",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "WEATHER_DELAY",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("ds", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True),
+        sa.Column("AIRPORT", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("CITY", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("STATE", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("COUNTRY", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "LATITUDE",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "LONGITUDE",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("AIRPORT_DEST", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("CITY_DEST", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("STATE_DEST", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("COUNTRY_DEST", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "LATITUDE_DEST",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "LONGITUDE_DEST",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+    )
+    op.create_table(
+        "video_game_sales",
+        sa.Column("rank", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "platform", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("year", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("genre", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "publisher", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "na_sales",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "eu_sales",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "jp_sales",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "other_sales",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "global_sales",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+    )
+    op.create_table(
+        "threads",
+        sa.Column("blocks", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "channel_id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "client_msg_id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "latest_reply", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("reply_count", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column("reply_users", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("reply_users_count", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column("subscribed", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("team", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column("text", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "thread_ts", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("ts", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True),
+        sa.Column("type", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column("user", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+    )
+    op.create_table(
+        "cleaned_sales_data",
+        sa.Column("order_number", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column("quantity_ordered", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "price_each",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("order_line_number", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "sales",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "order_date", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("status", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("quarter", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("month", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("year", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("product_line", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("msrp", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("product_code", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("customer_name", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("phone", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("address_line1", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("address_line2", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("city", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("state", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("postal_code", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("country", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("territory", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("contact_last_name", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("contact_first_name", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("deal_size", sa.TEXT(), autoincrement=False, nullable=True),
+    )
+    op.create_table(
+        "channels",
+        sa.Column(
+            "channel_id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "created", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "creator", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column("is_archived", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("is_channel", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("is_ext_shared", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("is_general", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("is_group", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("is_im", sa.BOOLEAN(), autoincrement=False, nullable=True),
+        sa.Column("is_member", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("is_mpim", sa.BOOLEAN(), autoincrement=False, nullable=True),
+        sa.Column("is_org_shared", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "is_pending_ext_shared", sa.BOOLEAN(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("is_private", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("is_shared", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("members", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "name_normalized",
+            sa.VARCHAR(length=255),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("num_members", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "parent_conversation",
+            sa.VARCHAR(length=255),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "pending_connected_team_ids", sa.TEXT(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("pending_shared", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("previous_names", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "purpose__creator",
+            sa.VARCHAR(length=255),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "purpose__last_set",
+            postgresql.TIMESTAMP(),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "purpose__value", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("shared_team_ids", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "topic__creator", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "topic__last_set",
+            postgresql.TIMESTAMP(),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("topic__value", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "unlinked", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+    )
+    op.create_table(
+        "sql_observations",
+        sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False),
+        sa.Column("dttm", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True),
+        sa.Column("alert_id", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "value",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "error_msg", sa.VARCHAR(length=500), autoincrement=False, 
nullable=True
+        ),
+        sa.ForeignKeyConstraint(
+            ["alert_id"], ["alerts.id"], name="sql_observations_alert_id_fkey"
+        ),
+        sa.PrimaryKeyConstraint("id", name="sql_observations_pkey"),
+    )
+    op.create_index(
+        "ix_sql_observations_dttm", "sql_observations", ["dttm"], unique=False
+    )
+    op.create_table(
+        "exported_stats",
+        sa.Column("date", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True),
+        sa.Column("total_membership", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column("full_members", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column("guests", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "daily_active_members", sa.BIGINT(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "daily_members_posting_messages",
+            sa.BIGINT(),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "weekly_active_members", sa.BIGINT(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "weekly_members_posting_messages",
+            sa.BIGINT(),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "messages_in_public_channels",
+            sa.BIGINT(),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "messages_in_private_channels",
+            sa.BIGINT(),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "messages_in_shared_channels",
+            sa.BIGINT(),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("messages_in_dms", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "percent_of_messages_public_channels",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "percent_of_messages_private_channels",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "percent_of_messages_dms",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "percent_of_views_public_channels",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "percent_of_views_private_channels",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "percent_of_views_dms",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("name", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "public_channels_single_workspace",
+            sa.BIGINT(),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("messages_posted", sa.BIGINT(), autoincrement=False, 
nullable=True),
+    )
+    op.create_table(
+        "wb_health_population",
+        *[
+            sa.Column(
+                "country_name",
+                sa.VARCHAR(length=255),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "country_code", sa.VARCHAR(length=3), autoincrement=False, 
nullable=True
+            ),
+            sa.Column(
+                "region", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+            ),
+            sa.Column(
+                "year", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+            ),
+            sa.Column(
+                "NY_GNP_PCAP_CD",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_ADT_1524_LT_FM_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_ADT_1524_LT_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_ADT_1524_LT_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_ADT_LITR_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_ADT_LITR_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_ADT_LITR_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_ENR_ORPH",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_PRM_CMPT_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_PRM_CMPT_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_PRM_CMPT_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_PRM_ENRR",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_PRM_ENRR_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_PRM_ENRR_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_PRM_NENR",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_PRM_NENR_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_PRM_NENR_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_SEC_ENRR",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_SEC_ENRR_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_SEC_ENRR_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_SEC_NENR",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_SEC_NENR_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_SEC_NENR_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_TER_ENRR",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_TER_ENRR_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SE_XPD_TOTL_GD_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_ANM_CHLD_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_ANM_NPRG_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_CON_1524_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_CON_1524_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_CON_AIDS_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_CON_AIDS_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DTH_COMM_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DTH_IMRT",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DTH_INJR_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DTH_MORT",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DTH_NCOM_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DTH_NMRT",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DYN_AIDS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DYN_AIDS_DH",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DYN_AIDS_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DYN_AIDS_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DYN_MORT",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DYN_MORT_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DYN_MORT_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_DYN_NMRT",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_FPL_SATI_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_H2O_SAFE_RU_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_H2O_SAFE_UR_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_H2O_SAFE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_HIV_0014",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_HIV_1524_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_HIV_1524_KW_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_HIV_1524_KW_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_HIV_1524_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_HIV_ARTC_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_HIV_KNOW_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_HIV_KNOW_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_HIV_ORPH",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_HIV_TOTL",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_IMM_HEPB",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_IMM_HIB3",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_IMM_IBCG",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_IMM_IDPT",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_IMM_MEAS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_IMM_POL3",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MED_BEDS_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MED_CMHW_P3",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MED_NUMW_P3",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MED_PHYS_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MLR_NETS_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MLR_PREG_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MLR_SPF2_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MLR_TRET_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MMR_DTHS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MMR_LEVE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MMR_RISK",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MMR_RISK_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_MMR_WAGE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_PRG_ANEM",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_PRG_ARTC_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_PRG_SYPH_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_PRV_SMOK_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_PRV_SMOK_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_ACSN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_ACSN_RU",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_ACSN_UR",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_ANV4_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_ANVC_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_ARIC_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_BFED_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_BRTC_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_BRTW_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_DIAB_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_IYCF_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_MALN_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_MALN_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_MALN_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_MALR",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_MMRT",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_MMRT_NE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_ORCF_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_ORTH",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_OW15_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_OW15_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_OW15_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_OWGH_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_OWGH_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_OWGH_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_PNVC_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_STNT_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_STNT_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_STNT_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_WAST_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_WAST_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_STA_WAST_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_SVR_WAST_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_SVR_WAST_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_SVR_WAST_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_TBS_CURE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_TBS_DTEC_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_TBS_INCD",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_TBS_MORT",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_TBS_PREV",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_VAC_TTNS_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_XPD_EXTR_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_XPD_OOPC_TO_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_XPD_OOPC_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_XPD_PCAP",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_XPD_PCAP_PP_KD",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_XPD_PRIV",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_XPD_PRIV_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_XPD_PUBL",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_XPD_PUBL_GX_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_XPD_PUBL_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_XPD_TOTL_CD",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SH_XPD_TOTL_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SI_POV_NAHC",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SI_POV_RUHC",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SI_POV_URHC",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SL_EMP_INSV_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SL_TLF_TOTL_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SL_TLF_TOTL_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SL_UEM_TOTL_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SL_UEM_TOTL_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SL_UEM_TOTL_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SM_POP_NETM",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SN_ITK_DEFC",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SN_ITK_DEFC_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SN_ITK_SALT_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SN_ITK_VITA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_ADO_TFRT",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_AMRT_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_AMRT_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_CBRT_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_CDRT_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_CONU_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_IMRT_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_IMRT_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_IMRT_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_LE00_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_LE00_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_LE00_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_SMAM_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_SMAM_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_TFRT_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_TO65_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_TO65_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_DYN_WFRT",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_HOU_FEMA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_MTR_1519_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_0004_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_0004_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_0004_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_0004_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_0014_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_0014_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_0014_TO",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_0014_TO_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_0509_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_0509_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_0509_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_0509_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_1014_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_1014_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_1014_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_1014_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_1519_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_1519_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_1519_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_1519_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_1564_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_1564_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_1564_TO",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_1564_TO_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_2024_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_2024_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_2024_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_2024_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_2529_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_2529_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_2529_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_2529_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_3034_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_3034_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_3034_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_3034_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_3539_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_3539_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_3539_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_3539_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_4044_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_4044_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_4044_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_4044_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_4549_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_4549_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_4549_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_4549_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_5054_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_5054_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_5054_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_5054_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_5559_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_5559_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_5559_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_5559_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_6064_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_6064_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_6064_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_6064_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_6569_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_6569_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_6569_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_6569_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_65UP_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_65UP_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_65UP_TO",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_65UP_TO_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_7074_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_7074_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_7074_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_7074_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_7579_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_7579_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_7579_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_7579_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_80UP_FE",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_80UP_FE_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_80UP_MA",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_80UP_MA_5Y",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG00_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG00_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG01_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG01_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG02_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG02_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG03_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG03_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG04_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG04_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG05_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG05_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG06_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG06_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG07_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG07_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG08_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG08_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG09_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG09_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG10_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG10_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG11_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG11_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG12_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG12_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG13_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG13_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG14_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG14_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG15_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG15_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG16_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG16_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG17_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG17_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG18_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG18_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG19_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG19_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG20_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG20_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG21_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG21_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG22_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG22_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG23_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG23_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG24_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG24_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG25_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_AG25_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_BRTH_MF",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_DPND",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_DPND_OL",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_DPND_YG",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_GROW",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_TOTL",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_TOTL_FE_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_TOTL_FE_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_TOTL_MA_IN",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_POP_TOTL_MA_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_REG_BRTH_RU_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_REG_BRTH_UR_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_REG_BRTH_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_REG_DTHS_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_RUR_TOTL",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_RUR_TOTL_ZG",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_RUR_TOTL_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_URB_GROW",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_URB_TOTL",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_URB_TOTL_IN_ZS",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+            sa.Column(
+                "SP_UWT_TFRT",
+                postgresql.DOUBLE_PRECISION(precision=53),
+                autoincrement=False,
+                nullable=True,
+            ),
+        ]
+    )
+    op.create_table(
+        "slice_email_schedules",
+        sa.Column(
+            "created_on", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "changed_on", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False),
+        sa.Column("active", sa.BOOLEAN(), autoincrement=False, nullable=True),
+        sa.Column("crontab", sa.VARCHAR(length=50), autoincrement=False, 
nullable=True),
+        sa.Column("recipients", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("deliver_as_group", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "delivery_type",
+            postgresql.ENUM("attachment", "inline", name="emaildeliverytype"),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("slice_id", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "email_format",
+            postgresql.ENUM("visualization", "data", 
name="sliceemailreportformat"),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("created_by_fk", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column("changed_by_fk", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column("user_id", sa.INTEGER(), autoincrement=False, nullable=True),
+        sa.Column("slack_channel", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("uuid", postgresql.UUID(), autoincrement=False, 
nullable=True),
+        sa.ForeignKeyConstraint(
+            ["changed_by_fk"],
+            ["ab_user.id"],
+            name="slice_email_schedules_changed_by_fk_fkey",
+        ),
+        sa.ForeignKeyConstraint(
+            ["created_by_fk"],
+            ["ab_user.id"],
+            name="slice_email_schedules_created_by_fk_fkey",
+        ),
+        sa.ForeignKeyConstraint(
+            ["slice_id"], ["slices.id"], 
name="slice_email_schedules_slice_id_fkey"
+        ),
+        sa.ForeignKeyConstraint(
+            ["user_id"], ["ab_user.id"], 
name="slice_email_schedules_user_id_fkey"
+        ),
+        sa.PrimaryKeyConstraint("id", name="slice_email_schedules_pkey"),
+        sa.UniqueConstraint("uuid", name="uq_slice_email_schedules_uuid"),
+    )
+    op.create_index(
+        "ix_slice_email_schedules_active",
+        "slice_email_schedules",
+        ["active"],
+        unique=False,
+    )
+    op.create_table(
+        "bart_lines",
+        sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column("color", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column("path_json", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("polyline", sa.TEXT(), autoincrement=False, nullable=True),
+    )
+    op.create_table(
+        "sf_population_polygons",
+        sa.Column("zipcode", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("population", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "area",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("contour", sa.TEXT(), autoincrement=False, nullable=True),
+    )
+    op.create_table(
+        "users",
+        sa.Column("color", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column("deleted", sa.BOOLEAN(), autoincrement=False, nullable=True),
+        sa.Column("has_2fa", sa.BOOLEAN(), autoincrement=False, nullable=True),
+        sa.Column("id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column("is_admin", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("is_app_user", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("is_bot", sa.BOOLEAN(), autoincrement=False, nullable=True),
+        sa.Column("is_owner", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("is_primary_owner", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("is_restricted", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "is_ultra_restricted", sa.BOOLEAN(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "real_name", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "team_id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("tz", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "tz_label", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("tz_offset", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "updated", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+    )
+    op.create_table(
+        "birth_france_by_region",
+        sa.Column("DEPT_ID", sa.VARCHAR(length=10), autoincrement=False, 
nullable=True),
+        sa.Column("2003", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("2004", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("2005", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("2006", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("2007", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("2008", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("2009", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("2010", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("2011", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("2012", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("2013", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("2014", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("dttm", sa.DATE(), autoincrement=False, nullable=True),
+    )
+    op.create_table(
+        "alert_owner",
+        sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False),
+        sa.Column("user_id", sa.INTEGER(), autoincrement=False, nullable=True),
+        sa.Column("alert_id", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.ForeignKeyConstraint(
+            ["alert_id"], ["alerts.id"], name="alert_owner_alert_id_fkey"
+        ),
+        sa.ForeignKeyConstraint(
+            ["user_id"], ["ab_user.id"], name="alert_owner_user_id_fkey"
+        ),
+        sa.PrimaryKeyConstraint("id", name="alert_owner_pkey"),
+    )
+    op.create_table(
+        "alert_logs",
+        sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False),
+        sa.Column(
+            "scheduled_dttm", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "dttm_start", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "dttm_end", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("alert_id", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column("state", sa.VARCHAR(length=10), autoincrement=False, 
nullable=True),
+        sa.ForeignKeyConstraint(
+            ["alert_id"], ["alerts.id"], name="alert_logs_alert_id_fkey"
+        ),
+        sa.PrimaryKeyConstraint("id", name="alert_logs_pkey"),
+    )
+    op.create_table(
+        "birth_names",
+        sa.Column("ds", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True),
+        sa.Column("gender", sa.VARCHAR(length=16), autoincrement=False, 
nullable=True),
+        sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column("num", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("state", sa.VARCHAR(length=10), autoincrement=False, 
nullable=True),
+        sa.Column("num_boys", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("num_girls", sa.BIGINT(), autoincrement=False, 
nullable=True),
+    )
+    op.create_table(
+        "long_lat",
+        sa.Column(
+            "LON",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "LAT",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("NUMBER", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("STREET", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("UNIT", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "CITY",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "DISTRICT",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "REGION",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("POSTCODE", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "ID",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "datetime", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "occupancy",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "radius_miles",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("geohash", sa.VARCHAR(length=12), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "delimited", sa.VARCHAR(length=60), autoincrement=False, 
nullable=True
+        ),
+    )
+    op.create_table(
+        "channel_members",
+        sa.Column(
+            "channel_id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "user_id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+    )
+    op.create_table(
+        "messages",
+        sa.Column("blocks", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("bot_id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "bot_profile__app_id",
+            sa.VARCHAR(length=255),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "bot_profile__deleted", sa.BOOLEAN(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "bot_profile__id",
+            sa.VARCHAR(length=255),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "bot_profile__name",
+            sa.VARCHAR(length=255),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "bot_profile__team_id",
+            sa.VARCHAR(length=255),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "bot_profile__updated",
+            postgresql.TIMESTAMP(),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "channel_id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "client_msg_id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("display_as_bot", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "file_id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("file_ids", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "icons__emoji", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "inviter", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "is_delayed_message", sa.BOOLEAN(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("is_intro", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column("is_starred", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "last_read", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "latest_reply", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "old_name", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "parent_user_id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "permalink", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("pinned_to", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "purpose", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("reactions", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("reply_count", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column("reply_users", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("reply_users_count", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "source_team", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("subscribed", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "subtype", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("team", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column("text", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "thread_ts", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("topic", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column("ts", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True),
+        sa.Column("type", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column("unread_count", sa.BIGINT(), autoincrement=False, 
nullable=True),
+        sa.Column("upload", sa.BOOLEAN(), autoincrement=False, nullable=True),
+        sa.Column("user", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "user_team", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "username", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+    )
+    op.create_table(
+        "unicode_test",
+        sa.Column("phrase", sa.VARCHAR(length=500), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "short_phrase", sa.VARCHAR(length=10), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "with_missing", sa.VARCHAR(length=100), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("dttm", sa.DATE(), autoincrement=False, nullable=True),
+        sa.Column(
+            "value",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+    )
+    op.create_table(
+        "embedded_dashboards",
+        sa.Column(
+            "created_on", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "changed_on", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("allow_domain_list", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("uuid", postgresql.UUID(), autoincrement=False, 
nullable=True),
+        sa.Column("dashboard_id", sa.INTEGER(), autoincrement=False, 
nullable=False),
+        sa.Column("changed_by_fk", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column("created_by_fk", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.ForeignKeyConstraint(
+            ["dashboard_id"],
+            ["dashboards.id"],
+            name="embedded_dashboards_dashboard_id_fkey",
+        ),
+    )
+    op.create_table(
+        "covid_vaccines",
+        sa.Column(
+            "developer_or_researcher", sa.TEXT(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("country_name", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("ioc_country_code", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "treatment_vs_vaccine", sa.TEXT(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("product_category", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "stage_of_development", sa.TEXT(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("date_last_updated", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "anticipated_next_steps", sa.TEXT(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("product_description", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("clinical_trials", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("funder", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("published_results", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "clinical_trials_for_other_diseases_or_related_use",
+            sa.TEXT(),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "fda_approved_indications",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("sources", sa.TEXT(), autoincrement=False, nullable=True),
+    )
+    op.create_table(
+        "alerts",
+        sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False),
+        sa.Column("label", sa.VARCHAR(length=150), autoincrement=False, 
nullable=False),
+        sa.Column("active", sa.BOOLEAN(), autoincrement=False, nullable=True),
+        sa.Column(
+            "crontab", sa.VARCHAR(length=50), autoincrement=False, 
nullable=False
+        ),
+        sa.Column(
+            "alert_type", sa.VARCHAR(length=50), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("log_retention", sa.INTEGER(), autoincrement=False, 
nullable=False),
+        sa.Column("grace_period", sa.INTEGER(), autoincrement=False, 
nullable=False),
+        sa.Column("recipients", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("slice_id", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column("dashboard_id", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "last_eval_dttm", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "last_state", sa.VARCHAR(length=10), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("slack_channel", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("changed_by_fk", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "changed_on", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("created_by_fk", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "created_on", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("validator_config", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("database_id", sa.INTEGER(), autoincrement=False, 
nullable=False),
+        sa.Column("sql", sa.TEXT(), autoincrement=False, nullable=False),
+        sa.Column(
+            "validator_type",
+            sa.VARCHAR(length=100),
+            autoincrement=False,
+            nullable=False,
+        ),
+        sa.ForeignKeyConstraint(
+            ["changed_by_fk"], ["ab_user.id"], name="alerts_ibfk_3"
+        ),
+        sa.ForeignKeyConstraint(
+            ["created_by_fk"], ["ab_user.id"], name="alerts_ibfk_4"
+        ),
+        sa.ForeignKeyConstraint(
+            ["dashboard_id"], ["dashboards.id"], 
name="alerts_dashboard_id_fkey"
+        ),
+        sa.ForeignKeyConstraint(
+            ["database_id"], ["dbs.id"], name="alerts_database_id_fkey"
+        ),
+        sa.ForeignKeyConstraint(
+            ["slice_id"], ["slices.id"], name="alerts_slice_id_fkey"
+        ),
+        sa.PrimaryKeyConstraint("id", name="alerts_pkey"),
+    )
+    op.create_index("ix_alerts_active", "alerts", ["active"], unique=False)
+    op.create_table(
+        "FCC 2018 Survey",
+        sa.Column("ID", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "is_software_dev",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "is_first_dev_job",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "months_job_search",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("job_pref", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "job_intr_fllstck",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "job_intr_backend",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "job_intr_frntend",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "job_intr_mobile",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "job_intr_devops",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "job_intr_datasci",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "job_intr_teacher",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "job_intr_qa_engn",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "job_intr_ux_engn",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "job_intr_projm",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "job_intr_gamedev",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "job_intr_infosec",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "job_intr_dataengn",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("job_intr_other", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("when_appl_job", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "expected_earn",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("job_lctn_pref", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "job_relocate",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("reasons_to_code", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "reasons_to_code_other", sa.TEXT(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "rsrc_fcc",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_mdn",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_so",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_edx",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_coursera",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_khan_acdm",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_pluralsght",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_codeacdm",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_udacity",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_udemy",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_code_wars",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_treehouse",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_hackerrank",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_frntendmstr",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_lynda",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_egghead",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "rsrc_css_tricks",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("rsrc_other", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "codeevnt_fcc",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_hackthn",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_confs",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_workshps",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_startupwknd",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_nodeschl",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_womenwc",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_girldevit",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_coderdojo",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_meetup",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_railsbrdg",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_gamejam",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_railsgrls",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_djangogrls",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "codeevnt_wkndbtcmp",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("codeevnt_other", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "podcast_fcc",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_codenewbie",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_changelog",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_sedaily",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_js_jabber",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_syntaxfm",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_ltcwm",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_fullstckrd",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_frnthppyhr",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_codingblcks",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_shoptalk",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_devtea",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_progthrwdwn",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_geekspeak",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_hanselmnts",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_talkpythonme",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_rubyrogues",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_codepenrd",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "podcast_seradio",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("podcast_other", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "yt_mit_ocw",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_fcc",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_computerphile",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_devtips",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_cs_dojo",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_engn_truth",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_learncodeacdm",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_lvluptuts",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_funfunfunct",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_codingtuts360",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_codingtrain",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_derekbanas",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_simplilearn",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_simpleprog",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_mozillahacks",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "yt_googledevs",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("yt_other", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "hours_learning",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "months_programming", sa.BIGINT(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "bootcamp_attend",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("bootcamp_name", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "bootcamp_finished",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "bootcamp_have_loan",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "bootcamp_recommend",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "money_for_learning",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("age", sa.BIGINT(), autoincrement=False, nullable=True),
+        sa.Column("gender", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("gender_other", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("country_citizen", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("country_live", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "live_city_population", sa.TEXT(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "is_ethnic_minority",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("lang_at_home", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("school_degree", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("school_major", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("marital_status", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "has_finance_depends",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "has_children",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "num_children",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "do_finance_support",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "debt_amt",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "home_mrtg_has",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "home_mrtg_owe",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "student_debt_has",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "student_debt_amt",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("curr_emplymnt", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("curr_emplymnt_other", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("curr_field", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column(
+            "last_yr_income",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("communite_time", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "is_self_employed",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "has_served_military",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "is_recv_disab_bnft",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "has_high_spd_ntnet",
+            postgresql.DOUBLE_PRECISION(precision=53),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column(
+            "time_start", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("time_end", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("network_id", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("time_total_sec", sa.BIGINT(), autoincrement=False, 
nullable=True),
+    )
+    op.create_table(
+        "users_channels",
+        sa.Column("name", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "user_id", sa.VARCHAR(length=255), autoincrement=False, 
nullable=True
+        ),
+    )
+    op.create_table(
+        "dashboard_email_schedules",
+        sa.Column(
+            "created_on", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column(
+            "changed_on", postgresql.TIMESTAMP(), autoincrement=False, 
nullable=True
+        ),
+        sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False),
+        sa.Column("active", sa.BOOLEAN(), autoincrement=False, nullable=True),
+        sa.Column("crontab", sa.VARCHAR(length=50), autoincrement=False, 
nullable=True),
+        sa.Column("recipients", sa.TEXT(), autoincrement=False, nullable=True),
+        sa.Column("deliver_as_group", sa.BOOLEAN(), autoincrement=False, 
nullable=True),
+        sa.Column(
+            "delivery_type",
+            postgresql.ENUM("attachment", "inline", name="emaildeliverytype"),
+            autoincrement=False,
+            nullable=True,
+        ),
+        sa.Column("dashboard_id", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column("created_by_fk", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column("changed_by_fk", sa.INTEGER(), autoincrement=False, 
nullable=True),
+        sa.Column("user_id", sa.INTEGER(), autoincrement=False, nullable=True),
+        sa.Column("slack_channel", sa.TEXT(), autoincrement=False, 
nullable=True),
+        sa.Column("uuid", postgresql.UUID(), autoincrement=False, 
nullable=True),
+        sa.ForeignKeyConstraint(
+            ["changed_by_fk"],
+            ["ab_user.id"],
+            name="dashboard_email_schedules_changed_by_fk_fkey",
+        ),
+        sa.ForeignKeyConstraint(
+            ["created_by_fk"],
+            ["ab_user.id"],
+            name="dashboard_email_schedules_created_by_fk_fkey",
+        ),
+        sa.ForeignKeyConstraint(
+            ["dashboard_id"],
+            ["dashboards.id"],
+            name="dashboard_email_schedules_dashboard_id_fkey",
+        ),
+        sa.ForeignKeyConstraint(
+            ["user_id"], ["ab_user.id"], 
name="dashboard_email_schedules_user_id_fkey"
+        ),
+        sa.PrimaryKeyConstraint("id", name="dashboard_email_schedules_pkey"),
+        sa.UniqueConstraint("uuid", name="uq_dashboard_email_schedules_uuid"),
+    )
+    op.create_index(
+        "ix_dashboard_email_schedules_active",
+        "dashboard_email_schedules",
+        ["active"],
+        unique=False,
+    )
+    # ### end Alembic commands ###

Reply via email to