| # 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. |
| import random |
| import string |
| from typing import List |
| |
| import sqlalchemy.sql.sqltypes |
| |
| from superset.utils.mock_data import add_data, ColumnInfo |
| |
| COLUMN_TYPES = [ |
| sqlalchemy.sql.sqltypes.INTEGER(), |
| sqlalchemy.sql.sqltypes.VARCHAR(length=255), |
| sqlalchemy.sql.sqltypes.TEXT(), |
| sqlalchemy.sql.sqltypes.BOOLEAN(), |
| sqlalchemy.sql.sqltypes.FLOAT(), |
| sqlalchemy.sql.sqltypes.DATE(), |
| sqlalchemy.sql.sqltypes.TIME(), |
| sqlalchemy.sql.sqltypes.DATETIME(), |
| ] |
| |
| |
| def load_big_data() -> None: |
| print("Creating table `wide_table` with 100 columns") |
| columns: List[ColumnInfo] = [] |
| for i in range(100): |
| column: ColumnInfo = { |
| "name": f"col{i}", |
| "type": COLUMN_TYPES[i % len(COLUMN_TYPES)], |
| "nullable": False, |
| "default": None, |
| "autoincrement": "auto", |
| "primary_key": 1 if i == 0 else 0, |
| } |
| columns.append(column) |
| add_data(columns=columns, num_rows=1000, table_name="wide_table") |
| |
| print("Creating 1000 small tables") |
| columns = [ |
| { |
| "name": "id", |
| "type": sqlalchemy.sql.sqltypes.INTEGER(), |
| "nullable": False, |
| "default": None, |
| "autoincrement": "auto", |
| "primary_key": 1, |
| }, |
| { |
| "name": "value", |
| "type": sqlalchemy.sql.sqltypes.VARCHAR(length=255), |
| "nullable": False, |
| "default": None, |
| "autoincrement": "auto", |
| "primary_key": 0, |
| }, |
| ] |
| for i in range(1000): |
| add_data(columns=columns, num_rows=10, table_name=f"small_table_{i}") |
| |
| print("Creating table with long name") |
| name = "".join(random.choices(string.ascii_letters + string.digits, k=64)) |
| add_data(columns=columns, num_rows=10, table_name=name) |