1

У меня есть вид в bigquery, который содержит поля из разных наборов данных и таблиц. Теперь я хотел бы запросить этот вид через мой скрипт google. Каков правильный способ сделать это.Как запросить представление bigquery из API-интерфейсов bigquery

Фактически В настоящее время я создал отдельную таблицу в bigquery и запрашиваю таблицу вместо представления, но мне нужно, чтобы представление стало обновляться при обновлении таблиц зависимостей.

Если я использую таблицу, он работает нормально, но в случае зрения я получаю ниже ошибки:

Exception: Response Code: 404. Message: Not Found. 

BigQuery API, чтобы вернуть результат запроса.

try { 
    var job = BigQuery.newJob(); 
    var config = BigQuery.newJobConfiguration(); 
    var queryConfig = BigQuery.newJobConfigurationQuery(); 
    queryConfig.setQuery(sql); 
    queryConfig.setMaximumBillingTier(5); 

    config.setQuery(queryConfig); 
    job.setConfiguration(config); 

    var jobid = BigQuery.Jobs.insert(job, projectNumber).jobReference; 
    queryResults = BigQuery.Jobs.getQueryResults(projectNumber, jobid.jobId); 

    } 
    catch (err) { 
    Logger.log(err); 
    Browser.msgBox(err); 
    return; 
    } 


    // Check on status of the Query Job : MONTHLY 
    while (queryResults.getJobComplete() == false) { 
    try { 
     queryResults = BigQuery.Jobs.getQueryResults(projectNumber, queryResults.jobId); 
     //queryResults = BigQuery.Jobs.getQueryResults(projectNumber, job.id); 
    } 
    catch (err) { 
     Logger.log(err); 
     Browser.msgBox(err); 
     return; 
    } 
    } 
    return queryResults; 

Если я закомментировать мой первый пункт попытаться использовать ниже одной

try { 
    var queryRequest = BigQuery.newQueryRequest(); 
    queryRequest.setQuery(sql).setTimeoutMs(100000); 
    queryResults = BigQuery.Jobs.query(queryRequest, projectNumber); 
    //Browser.msgBox(queryResults); 
    } 
    catch (err) { 
    Logger.log(err); 
    Browser.msgBox(err); 
    return; 
    } 

затем он начинает давать мне

Exception: Query exceeded resource limits for tier 1. Tier 3 or higher required. 
+0

Не должно быть разницы между представлениями и таблицами как все запросы должны быть действительными SQL-запросами. Возможно, ваша ошибка исходит из других источников. – Pentium10

+0

@ Pentium10, я согласен, но получаю эту ошибку только при изменении имени таблицы для просмотра имени – ashishk

+0

Опубликовать SQL, возможно, там есть проблема. – Pentium10

ответ

0

Похоже, свойство «configuration.query.maximumBillingTier» не получает когда вы вставляете задание. Метод использования «JobConfigurationQuery» и других классов, похоже, был оставлен без упоминания о них в текущих документах, и мне нужно было прибегнуть к использованию Wayback Machine до find them.

Последний доступный document от 11/12/2013 определяет только геттеры и сеттеры для нескольких свойств конфигурации, а «maximumBillingTier» не является одним из них.

Я предлагаю вручную установить свойства запроса, как это сделано в примерах использования, из current documentation, вместо того, чтобы полагаться на «старые» конструкторы объектов, поскольку они, кажется, оставлены только для целей совместимости и являются неполными.

Причина, по которой мнению будет требовать более высокий уровень оплаты в сравнении с таблицей, является то, что представление является только logical table, и запросы, которые определяют представление, должны быть повторно выполнены, когда запрашивается представление.

Смежные вопросы