【问题标题】:Running dplyr, grepl in MySQL在 MySQL 中运行 dplyr、grepl
【发布时间】:2017-01-29 20:07:06
【问题描述】:

我在 SQL 中有一个表,我正在测试 dplyr。 我有两个输入一个日期范围和一个公司的文本字段

我在下面运行以下 R 代码

  # Filter on the Customer and the date range the user selects
  mydf <- db %>%
    tbl(table) %>%
    filter(TableDate >= start_date & TableDate <= end_date) %>% 
    filter(grepl('company', company_name)) %>% 
    collect()

所以理论上,这应该从start_dateend_date 之间的单个表中为公司company like a fuzzy match 选择信息,因为公司名称包含X 行业和Y 合并等内容

我收到如下错误

.local(conn, statement, ...) 中的错误: 无法运行语句:执行命令拒绝用户 'shiny'@'%' 用于例程 'mydb.GREPL'

当我查看 sql 时

myDF <- tbl(db,table)
myDF1 <- filter(myDF, TableDate >= start_date & TableDate <= end_date)
myDF2 <- filter(myDF1, grepl('company', company_name))

explain(myDF2)

我得到了输出

<SQL>
SELECT *
FROM (SELECT *
FROM `table`
WHERE (`TableDate ` >= '2015-01-01' AND `TableDate ` <= '2015-06-01')) `lpknlorhcn`
WHERE (GREPL('company', `company_name`))

.local(conn, statement, ...) 中的错误: 无法运行语句:执行命令拒绝用户 'shiny'@'%' 用于例程 'mydb.GREPL'

出于隐私原因,我稍微修改了代码和输出

问题

  • 有谁知道如何正确设置它(我知道它在 mysql 方面是一个权限问题,但我不确定用户 Shiny 的执行权限在哪里

  • 为什么解释计划中的 SQL 看起来如此有趣(例如它有两个 where 子句)以及 lpknlorhcn 是什么@

感谢您的帮助

【问题讨论】:

    标签: mysql r dplyr grepl


    【解决方案1】:

    MySQL 不支持grepl()。您可以使用%like% 或先收集数据,然后使用grepl()

    有关更多信息和示例,请参阅this question about using grepl in dply/MySQL

    【讨论】:

      猜你喜欢
      • 2015-02-12
      • 2022-01-15
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      相关资源
      最近更新 更多