編集:以下の例でエラーを見つけました。stored_group
フィルターでタイプミスをしました。期待どおりに動作します。
文字値を使用してデータベース テーブルをフィルター処理したいと考えています。dplyr
接続オブジェクトで関数を直接使用します。以下の私の手順を参照してください。
MariaDB データベースに接続しました。
con <- dbConnect(RMariaDB::MariaDB(),
dbname = mariadb.database,
user = mariadb.username,
password = mariadb.password,
host = mariadb.host,
port = mariadb.port)
dplyr
次に、上記の接続でコードを直接使用して、データベース内のテーブルでフィルターを使用したいと考えています。
stored_group <- "some_group"
con %>%
tbl("Table") %>%
select(id, group) %>%
filter(group == stored_group) %>%
collect()
というエラーが出ましたUnknown column 'stored_group' in 'where clause'
。だから私はshow_query()
このように使用しました:
stored_group <- "some_group"
con %>%
tbl("Table") %>%
select(id, group) %>%
filter(group == stored_group) %>%
show_query()
そして、私は得ました:
<SQL>
SELECT `id`, `group`
FROM `Table`
WHERE (`group` = `stored_group`)
翻訳でstored_group
は、R では値ではなく列名と見なされます。これを防ぐにはどうすればよいですか?
Rの通常のdata.framesでは、これは機能します。お気に入り:
stored_group <- "some_group"
data %>%
select(id, group) %>%
filter(group == stored_group)
以下のソリューションをテストしたところ、うまくいきました。しかし、私のデータベース テーブルは大きくなります。収集する前にデータベースで直接フィルタリングしたい。
stored_group <- "some_group"
con %>%
tbl("Table") %>%
select(id, group) %>%
collect() %>%
filter(group == stored_group)
助言がありますか?