def METHOD_NAME(input_table, output_table, key_cols):
    """
    Args:
        input_table: (str) A BigQuery project.dataset.input_table reference.
        key_cols: (str) A comma separated list of field names for which joins
            will be benchmarked on. We will collect hashes of these values.
    """
    input_project, input_dataset, input_table_id = input_table.split('.')
    bq_cli = bq.Client(project=input_project)
    dataset_ref = bq_cli.dataset(input_dataset)
    input_table_ref = dataset_ref.table(input_table_id)
    print(input_table)
    output_project, output_dataset, output_table_id = output_table.split('.')
    bq_cli = bq.Client(project=output_project)
    dataset_ref = bq_cli.dataset(output_dataset)
    output_table_ref = dataset_ref.table(output_table_id)
    # Validate input_table exists.
    bq_input_table = bq_cli.get_table(input_table_ref)
    # Get fields in a list of dicts.
    schema = [field.to_api_repr() for field in bq_input_table.schema]
    sql = bq_key_column_histogram(key_cols=key_cols, input_table=input_table)
    # Define query job config.
    query_job_config = bq.job.QueryJobConfig(
        allow_large_results=True,
        create_disposition=bq.job.CreateDisposition.CREATE_IF_NEEDED,
        write_disposition=bq.job.WriteDisposition.WRITE_TRUNCATE,
        destination=output_table_ref,
        use_legacy_sql=False)
    # Define query API request.
    query_job = bq_cli.query(sql, job_config=query_job_config)
    print(('running query: \n {}'.format(sql)))
    t0 = time.time()
    # Synchronous API call to execute query.
    res = query_job.result()
    t1 = time.time()
    print(('query ran in {} seconds.'.format(t1 - t0)))
    count = res.num_results
    print(('resulting histogrram table has {} results.'.format(count)))