r - 在 R 中为 Google BigQuery 使用 IN 运算符
问题描述
我将从 XLSX 文件中读取的网页向量传递给要在 BigQuery 中使用的 SQL 语句,但在使用 IN 运算符时出现错误。
library(xlsx)
library(dplyr)
library(bigrquery)
test_control_group <- xlsx::read.xlsx('./test_control_group.xlsx',
sheetName = 'Test_Control')
pages <- test_control_group %>%
dplyr::select(page) %>%
distinct()
projectid <- "googleproject"
sql <- paste0(
"SELECT * FROM `googleproject.dataset.table`
WHERE page IN (", pages, ")"
)
tb <- bigrquery::bq_project_query(projectid, sql)
我得到错误:
Error: Job 'googleproject.job_bheGLdlR4_WqQ4iMu2G8UcFNscEc.europe-west2' failed
x Function not found: c at [5:24] [invalidQuery]
因为它正在识别 R 的 c() 表示法。
"\n SELECT * FROM `googleproject.dataset.table`\n WHERE page IN (c(\"https:...))"
请问我该如何解决这个问题?
解决方案
将以下行添加到代码中。
pages <- dput(as.character(pages))
pages <- str_replace_all(pages, "(c\\(|\\))","")
所以脚本现在看起来像:
library(xlsx)
library(dplyr)
library(bigrquery)
test_control_group <- xlsx::read.xlsx('./test_control_group.xlsx',
sheetName = 'Test_Control')
pages <- test_control_group %>%
dplyr::select(page) %>%
distinct()
pages <- dput(as.character(pages))
pages <- str_replace_all(pages, "(c\\(|\\))","")
projectid <- "googleproject"
sql <- paste0(
"SELECT * FROM `googleproject.dataset.table`
WHERE page IN (", pages, ")"
)
tb <- bigrquery::bq_project_query(projectid, sql)
推荐阅读
- sql - SQL查询比较2个日期值
- javascript - 如何在 IF 和 ELSE 都为真的 Blogger 中的 if 语句中中断语句?
- python - 如何在 VSCode 中运行 python3 代码?/bin/sh: 1: python: 未找到
- javascript - 如何在 Vue.js 中触发对动态元素的点击?
- json - 用 HTML 和 CSS 替换 JSON 结果中的值
- authorization - IdentityServer4 与 AspNetIdentity - 添加角色声明
- python - 使用烧瓶 mongoengine/pymongo 使用值数组查询 mongodb 数据库
- c++ - 在找不到导致错误答案的输入案例时,有哪些方法可以调试在线判断问题?
- sql - SQL 查询以检查当前行日期范围是否在前面的序列中
- asp.net-mvc - 在 Chrome 上使用 localhost 时,Google 身份验证会出错