private TableResult getQueriesFromIS()

in bigquery-antipattern-recognition/src/main/java/com/google/zetasql/toolkit/antipattern/util/BigQueryHelper.java [113:158]


  private TableResult getQueriesFromIS(
      Long timeoutInSecs,
      String timeCriteria,
      String ISTable,
      Integer slotsMsMin,
      Float topNPercent,
      String region)
      throws InterruptedException {

    String query =
        "SELECT\n"
            + "  project_id,\n"
            + "  CONCAT(project_id, \":"
            + region.toUpperCase()
            + ".\",  job_id) job_id, \n"
            + "  query, \n"
            + "  total_slot_ms / (1000 * 60 * 60 ) AS slot_hours, \n"
            + "  user_email, \n"
            + "  PERCENT_RANK() OVER(ORDER BY total_slot_ms desc) perc_rnk \n"
            + "FROM\n"
            + ISTable
            + "\n"
            + "WHERE \n"
            + timeCriteria
            + "  AND total_slot_ms > "
            + slotsMsMin
            + "\n"
            + "  AND reservation_id != 'default-pipeline' \n"
            + "  AND query not like '%INFORMATION_SCHEMA%' \n"
            + "QUALIFY perc_rnk < "
            + topNPercent
            + "\n"
            + "ORDER BY \n"
            + "  project_id, start_time desc\n";

    logger.info("Reading from INFORMATION_SCHEMA: \n" + query);
    QueryJobConfiguration queryConfig =
        QueryJobConfiguration.newBuilder(query)
            .setUseLegacySql(false)
            .setJobTimeoutMs(TimeUnit.SECONDS.toMillis(timeoutInSecs))
            .build();

    logger.debug("Running query:\n" + queryConfig.getQuery());
    Job queryJob = bigquery.create(JobInfo.newBuilder(queryConfig).build());
    return queryJob.getQueryResults();
  }