Ошибка в max (.): Недопустимый 'тип' (список) аргумента при использовании dplyr dbplyr и bigrquery

Я запускаю очень простой dplyr код в таблице bigquery, используя dbplyr

transactions %>% select(date) %>% max(.)

Выдает ошибку

Ошибка в макс. (.): Недопустимый 'тип' (список) аргумента

Я проверил это

  • Таблица, в которой я запрашиваю запросы, как ожидалось (это так - другие операции dplyr работают)
  • Я могу фильтровать возможные НП, но записи не удаляются (нет НП)

Также обратите внимание, похоже, что похожий код на аналогичном data.frame работает, например

iris %>% select(Sepal.Length) %>% max
# [1] 7.9

person stevec    schedule 04.12.2019    source источник
comment
Вы проверяли вывод str(transactions)?   -  person dc37    schedule 04.12.2019
comment
Как выглядит transactions %>% select(date) %>% print(.)? Выдает ошибку или выглядит странно?   -  person Lyngbakr    schedule 04.12.2019


Ответы (2)


Вы пробовали max (unlist (.))?

Возьмем, к примеру:

my.list = list(1,2,3,4)
# This produces an error
max(my.list)
# This produces 4
max(unlist(my.list))

Вы также можете попробовать do.call (max, my.list).

person BPipher    schedule 04.12.2019

Большая часть работы, которую выполняет dbplyr, - это перевод dplyr команд в код базы данных (в вашем случае - bigquery). Цена этого в том, что не все команды R. Как правило, для определения перевода необходимо следовать стандартному dplyr синтаксису.

Так что пока

transactions %>% select(date) %>% max(.)

работает с фреймом данных R. Вероятно, не существует перевода для max(.), определенного в контексте, в котором вы его использовали.

Однако следующее должно работать, потому что оно следует стандартному синтаксису dplyr:

transactions %>% select(date) %>% summarise(max_date = max(date))

Следовательно, dbplyr может перевести его в код базы данных.

Чтобы проверить базовый запрос к базе данных, переведенный dbplyr, вы можете использовать команду show_query(). Например:

transactions %>% select(date) %>% summarise(max_date = max(date) %>% show_query()
person Simon.S.A.    schedule 04.12.2019