Поддерживает ли BigQuery команду «выполнить немедленно» для запуска динамического запроса? - PullRequest
0 голосов
/ 14 мая 2018

Я могу написать такой код в Oracle для динамического создания таблиц, используя команду ", немедленно выполнить команду sql query .. '".



    create or replace function make_a_table1(p_table_name varchar2, p_column_name varchar2, p_data_type varchar2) return varchar2 is
    var varchar2(150);
    sydt varchar2(30);
    pragma autonomous_transaction;
    begin
    select to_char(sysdate,'HH24_MI_SS') into sydt from dual;
    dbms_output.put_line(sydt);
    var :='create table '||p_table_name||'_'||sydt||' ( '||p_column_name||' '||p_data_type||')';
    dbms_output.put_line(var);
      execute immediate var;  
      commit;
      return 'Table Created Successfully';
    end;

Возможно ли добиться этого в BigQuery?функции?

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Вам придется использовать внешний вызов через API. Я использую Python для этого. Оба запроса базы параметров и динамические запросы. Большой запрос на данный момент, насколько я знаю, не поддерживает переменные или команду SQL выполнить, используя SQL напрямую (например, TSQL)

0 голосов
/ 27 февраля 2019

Чтобы запустить динамический запрос в SQL, вам необходимо:

  1. Построение запроса с использованием строковых операций и функций.
  2. Выполнить построенную строку как запрос.

BigQuery поддерживает # 1, но у него нет инструкции EXEC для # 2 на момент написания этой статьи.

Если вы хотите запускать динамические запросы в BigQuery, вам нужно будет создать строку в облачной функции (или аналогичной среде), а затем отправить запрос в BigQuery через API.

0 голосов
/ 14 мая 2018

Существует два «режима», в которых вы можете выполнить запрос BigQuery - interactive и batch.

По умолчанию BigQuery выполняет интерактивные запросы, что означает, что запрос выполняется как можно скорее. Интерактивные запросы учитываются как для вашего текущего лимита, так и для вашего дневного лимита.

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

Оба доступны в WebUI, командной строке, API и клиентах

...