Использование функции pl / sql trun c с dbplyr в R - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь использовать dbplyr и функцию trun c из pl / sql, чтобы преобразовать столбец даты в начало месяца.

df %>% mutate(start_month = sql(trunc(date_column, 'month')) 

, однако это приводит к ошибке недопустимой идентификатор при выполнении запроса. Я думаю, это потому, что когда он анализируется как pl / sql как строка, запрос читает select .... trunc("date_column",'month') as start_month, поэтому он не распознается как имя столбца из-за кавычек внутри функции sql .... Любые идеи о том, как сделать это по-другому или обойти эту ошибку было бы здорово.

1 Ответ

0 голосов
/ 11 марта 2020

Вероятно, этого можно добиться, удалив кавычки из month и, возможно, функцию sql изнутри вашего mutate.

dbplyr работает путем перевода команд dplyr в эквивалент sql. Там, где нет перевода, по умолчанию команда остается без изменений. Вы можете использовать эту функцию для передачи sql команд.

Я рекомендую попробовать

df %>% mutate(start_month = TRUNC(date_column, MONTH))

Поскольку переводы dbplyr не определены для TRUNC или MONTH, они должны появиться в вашем запросе pl sql точно так же, как они появляются в вашем коде R:

SELECT ... TRUNC(date_column, MONTH) AS start_month

Я рекомендую писать команды, которые вы не хотите переводить в заглавные буквы, потому что R чувствителен к регистру, но sql - не. Таким образом, даже если month является функцией R, MONTH, вероятно, не является функцией R, и, следовательно, нет никаких шансов, что dbplyr попытается ее перевести.

...