R dbplyr проблема с фильтром даты SQL

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

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)

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

"dbplyr_031"
ГДЕ ("key_date_trade" = 20200618.0) '

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


person Erik Rasmussen    schedule 19.06.2020    source источник
comment
вы пробовали функцию collect? Он будет собирать результаты вашего запроса, вы также можете использовать show_query, чтобы увидеть, что происходит за кулисами.   -  person Bruno    schedule 19.06.2020


Ответы (1)


И 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).
person Simon.S.A.    schedule 21.06.2020