R dbplyr SQL проблема с фильтром даты - PullRequest
0 голосов
/ 19 июня 2020

Я подключился к базе данных сервера SQL с показанным здесь кодом, а затем я пытаюсь запустить запрос для сбора данных, отфильтрованных по дате, которая хранится как целое число в таблице в формате ГГГГММДД

con <- DBI::dbConnect(odbc::odbc(), driver = "SQL Server", server = "***")
fact_transaction_line <- tbl(con,in_schema('***', '***'))

data <- fact_transaction_line %>% 
  filter(key_date_trade == 20200618)

Это сохраняется как запрос, но не работает, когда я использую glimpse для просмотра данных, с ошибкой ниже

"dbplyr_031"
WHERE ("key_date_trade" = 20200618.0) '

Почему это не работает, есть ли лучший способ отформатировать запрос для получения этих данных?

1 Ответ

0 голосов
/ 22 июня 2020

Оба fact_transaction_line и data в вашем примере кода являются удаленными таблицами. Одним из важных следствий этого является то, что вы ограничены взаимодействием с ними определенными командами dplyr. glimpse может не быть командой, которая поддерживается для удаленных таблиц.

Что вы можете сделать вместо этого (включая предложения @ Bruno):

  1. Используйте head, чтобы просмотреть верхнюю часть несколько строк ваших удаленных данных.
  2. Если вы получаете ошибки, попробуйте show_query(data), чтобы увидеть базовый запрос SQL для удаленной таблицы. Проверьте правильность этого запроса.
  3. Проверьте размер удаленной таблицы с помощью remote_table%>% ungroup() %>% summarise(num = n()). Если удаленная таблица достаточно мала, чтобы поместиться в вашу локальную память R, то local_table = collect(remote_table) скопирует таблицу в память R.
  4. Варианты объединения 1 и 3: local_table = data %>% head(100) %>% collect() загрузит первые 100 строк вашего удаленный стол в R.Тогда вы можете glimpse(local_table).
...