Передача параметра синтаксиса SQL в R с помощью glue :: sql? - PullRequest
0 голосов
/ 24 апреля 2020

Я сейчас пытаюсь создать временную таблицу или таблицу или View на лету, используя glue :: sql.

Я понимаю и знаю, как создать запрос sql, используя клей, передавая R объекты в качестве параметров, однако:

Можно ли передать объект, преобразованный в SQL синтаксис для создания таблицы?

например, мой оператор sql glue следующий:

sql_query <- glue::glue_sql(

    "create {create_type} some_table as
    select * from {`table_name`}

      where 
        ({`table_name`}._start_time >= {start}
        and

        {`table_name`}._end_time <= {end})
      or

        ({`table_name`}.type == 'internet'

       and
        {`table_name`}._start_time >= {start}

        and
        {`table_name`}.end_time <= {end} + 604800)



    ", 
    .con = conn
  )

Я хочу иметь возможность передать параметр, такой как 'TEMP TABLE' to {create_type}, чтобы он мог стать: "create TEMP TABLE some_table as...."

Я не видел примеров, где это было сделано, поэтому задавался вопросом, возможно ли это?

1 Ответ

0 голосов
/ 24 апреля 2020

Похоже, что хорошим решением является создание объекта перед использованием, используя paste()

test <- "TEMP TABLE"

create_sql_line <-paste("create", test) 

    sql_query <- glue::glue_sql(
    create_sql_line,
        " some_table as
        select * from {`table_name`}

          where 
            ({`table_name`}._start_time >= {start}
            and

            {`table_name`}._end_time <= {end})
          or

            ({`table_name`}.type == 'internet'

           and
            {`table_name`}._start_time >= {start}

            and
            {`table_name`}.end_time <= {end} + 604800)



        ", 
        .con = conn
      )

Когда вы передаете объект в glue_ sql, который создан выше.

Хорошо работает и отлично создает синтаксис SQL!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...