@Override
  public void dropTables() {
    List<AnalyticsTable> tables = tableManager.getAllTables();

    for (AnalyticsTable table : tables) {
      tableManager.dropTable(table.getTableName());
      tableManager.dropTable(table.getTempTableName());
    }
  }
  private void createIndexes(List<AnalyticsTable> tables) {
    ConcurrentLinkedQueue<AnalyticsIndex> indexes = new ConcurrentLinkedQueue<>();

    for (AnalyticsTable table : tables) {
      List<String[]> columns = table.getDimensionColumns();

      for (String[] column : columns) {
        indexes.add(new AnalyticsIndex(table.getTempTableName(), column[0]));
      }
    }

    log.info("No of analytics table indexes: " + indexes.size());

    List<Future<?>> futures = new ArrayList<>();

    for (int i = 0; i < getProcessNo(); i++) {
      futures.add(tableManager.createIndexesAsync(indexes));
    }

    ConcurrentUtils.waitForCompletion(futures);
  }