синтаксис для database.table в dbplyr? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть соединение с нашей базой данных:

con <- dbConnect(odbc::odbc(), "myHive")

Я знаю, что это успешно, потому что когда я запускаю его, в правом верхнем углу RStudio я вижу все наши базы данных и таблицы.

Мой вопрос: как выбрать конкретную комбинацию таблиц базы данных?Документация показывает, что пользователь скрывает одну таблицу, «полеты», но мне нужно сделать эквивалент somedatabase.sometable.

Пробовал:

mytable <- tbl(con, "somedb.sometable")
    Error in new_result(connection@ptr, statement) : 
      nanodbc/nanodbc.cpp:1344: 42S02: [Hortonworks][SQLEngine] (31740) Table or view not found: HIVE..dp_enterprise.uds_order 

Затем попытался:

mytable <- tbl(con, "somedb::sometable")

Error in new_result(connection@ptr, statement) : 
  nanodbc/nanodbc.cpp:1344: 42S02: [Hortonworks][SQLEngine] (31740) Table or view not found: HIVE..somedb::sometable

Я тоже пытался удалить кавычки "".

В панели соединений RStudio я вижу somedb.sometable.Это здесь!Как я могу сохранить его в переменной mytable?

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Вы выбираете базу данных при создании соединения и таблицу при создании таблицы (с аргументом from).

Стандартного интерфейса для dbConnect не существует, поэтому точный способ передачи имени базы данных зависит от используемого вами DBDriver. Действительно, DBI::dbConnect - это просто общая отправка для конкретного драйвера dbConnect.

В вашем случае драйвер odbc, так что вы можете ознакомиться с документацией для odbc::dbConnect, и вы увидите соответствующий аргумент database.

Это будет работать:

con <- dbConnect(odbc::odbc(), "myHive", database = "somedb")
df <- tbl(con, from = "sometable")

Для большинства других драйверов (например, RMariaDB, RMySQL, RPostgres, RSQLite) аргумент называется dbname, поэтому вы должны сделать это:

con <- dbConnect(RMariaDB::MariaDB(), dbname = "somedb")
df <- tbl(con, from = "sometable")
0 голосов
/ 15 ноября 2018

Я думаю, что нашел его, используйте in_schema

mytable <- tbl(con, in_schema("somedb", "sometable"))

Это возвращает список, но не tbl, так что я не уверен.

...