Подключение к базе данных в базе данных Redshift через RStudio с использованием r-dbi и dbplyr

Я относительно новичок как в базах данных, так и в Redshift, и я хотел бы использовать Connections в R Studio, чтобы иметь возможность запрашивать набор баз данных для извлечения подмножеств данных.

Конкретный вопрос: после подключения к правильной базе данных в Redshift, как мне указать вложенные базы данных и их таблицы с помощью dbplyr?

Основная база данных production, и в ней есть несколько подбаз данных (?), таких как customerdb, supplierdb, membersdb .. и каждая из них имеет несколько таблиц. Скажем, я хочу подмножить данные таблицы companies в customerdb, я пытаюсь сделать это:

# `con` is the connection to Redshift database via DBI and it connects successfully
dataset <- tbl(con, "customerdb.companies")

Error in new_result(connection@ptr, statement) : 
nanodbc/nanodbc.cpp:1344: 42P01: [Amazon][Amazon Redshift] (30) 
Error occurred while trying to execute a query: [SQLState 42P01] 
ERROR:  relation "customerdb.companies" does not exist

Просмотрели различные ресурсы, от AWS до страницы dbplyr, а также другие вопросы SO, и ни один из них, похоже, не показывает этот стиль настройки или методы подключения к базовым таблицам.


person daRknight    schedule 16.11.2018    source источник
comment
Я не уверен, что вы подразумеваете под базами данных. Вы пробовали dataset <- tbl(con, "companies")?   -  person dmca    schedule 16.11.2018
comment
Я не был уверен ни в одном из терминов, следовательно, (?) .. в основном база данных Redshift включает в себя несколько баз данных и их собственный набор таблиц. Ваша команда возвращает ту же ошибку в моем вопросе. Я также пытался изменить соединение с Redshift с production на production.customerdb или напрямую на customerdb, но не удалось подключиться. Под этим я подразумеваю значение database в: dbConnect(odbc::odbc(), Driver = <driver>, server name = <servername.location.redshift.amazonaws.com>, database = production, ... например до , database = customerdb или database = production.customerdb   -  person daRknight    schedule 16.11.2018
comment
Подбаза данных на самом деле называется схемой. Вы можете посмотреть этот ответ.   -  person Scarabee    schedule 19.11.2018
comment
@Scarabee Я думаю, что это именно то, что нужно .. Благодаря вашему предложению я смог успешно выполнить tbl(con, in_schema("customerdb", "companies") и применил к нему базовый глагол filter(), а затем сохранил результат в моей локальной среде как data.frame .. также спасибо за выделение правильного термина , схема; Я свяжу это с ответом, который вы предоставили   -  person daRknight    schedule 20.11.2018
comment
Красиво, рад, что помогло! И не нужно создавать здесь новый ответ, лучше пометить этот вопрос как дубликат, как вы только что сделали :)   -  person Scarabee    schedule 20.11.2018
comment
Странность, которую я заметил, заключается в том, что имена таблиц и имена полей усечены и показывают только первую букву, поэтому из примера схема customerdb, supplierdb, membersdb отображается в моей среде в разделе Connections вкладка как c, s, m и т. д. ... а имена полей id, name, .. отображаются как i, n .. но теперь я не уверен, что это проблема dbplyr, проблема соединения DBI, или проблема с RStudio......   -  person daRknight    schedule 20.11.2018
comment
Вы видели эту страницу? Похоже, они точно описывают вашу проблему: Почему в каталоге моей базы данных отображаются только первые буквы каждой таблицы?   -  person Scarabee    schedule 20.11.2018
comment
@Scarabee еще раз спасибо .. это точно решило проблему, UTF-16 v UTF-32   -  person daRknight    schedule 20.11.2018