Como usar o dplyr tbl em uma tabela de esquema não padrão do SQL Server
Minha pergunta é como posso usardplyr
funções, comotbl
, em tabelas do SQL Server que não usam o esquema "dbo" padrão?
Para mais contexto, estou tentando aplicar o exemplo de banco de dados R dado aqui às minhas próprias tabelas:https://db.rstudio.com/ (role para baixo até a seção intitulada "Exemplo rápido").
Tudo começa bem. Esta primeira seção funciona bem:
install.packages("dplyr")
install.packages("odbc")
install.packages("dbplyr")
install.packages("DBI")
con <- DBI::dbConnect(odbc::odbc(),
Driver = "SQL Server",
Server = [My Server Name],
Database = "mydatabase",
UID = [My User ID],
PWD = [My Password],
Port = 1433)
Consigo me conectar ao meu SQL Server e carregar as tabelas no meu banco de dados. Eu sei disso porque
DBI::dbListTables(con)
retorna os nomes das minhas tabelas disponíveis (mas sem nenhum esquema).
A próxima linha de código de exemplo também funciona quando aplicada a uma de minhas próprias tabelas, retornando os nomes das colunas na tabela.
DBI::dbListFields(con, "mytable1")
No entanto, uma vez que tento executar a próxima linha:
dplyr::tbl(con, "mytable1")
Eu recebo umInvalid object name 'mytable1'
erro, em vez da visualização esperada da tabela, como no exemplo.
Este erro não ocorre quando executo o mesmo código em uma tabela diferente, mytable2. Desta vez, como esperado, recebo uma prévia do mytable2 quando executo:
dplyr::tbl(con, "mytable2")
Uma diferença entre mytable1 e mytable2 é o esquema. mytable1 usa um esquema "abc" inventado, ou seja,mydatabase.abc.mytable1. mytable2 usa o esquema "dbo" padrão, ou seja,mydatabase.dbo.mytable2.
eu tenteidplyr::tbl(con, "abc.mytable1")
mas eu recebo o mesmoInvalid object name
erro. Da mesma forma, quando eu tenteidplyr::tbl(con, "dbo.mytable2")
(embora funcione bem quando excluo odbo
parte).
Então, como posso usardplyr
funções, comotbl
, em tabelas do SQL Server que não usam o esquema "dbo" padrão? Obrigado.