从BigQuery导入到R

时间:2018-07-31 10:10:23

标签: r twitter google-bigquery

我有一个脚本,用于剪贴一些推文并将结果保存到Google BigQuery。当我看到存储的数据时,special,‍special️,Ñ,áéíóú等特殊字符会正确显示,但是当我尝试再次将数据导入R时,它们会被一些奇怪的字符替换。这是一个例子。

# Create df

id_tweet <- 1023985670224785408
tweet <- "◉ Neuroeducación y entornos digitales de aprendizaje: un paso obligado para educadores, pedagogos y psicólogos"
descripcion <- "Desde las alturas se ve todo de otra manera... ️ ➕ ‍♂️"

data <- data.frame(id, tweet, description)

# Save to Google BQ

library(bigrquery)

insert_upload_job("project-id", "dataset", "table", data , write_disposition = "WRITE_APPEND")

#Load from Gooble BQ

sql <- paste("SELECT *", "FROM", "`project-id.dataset.table`")
data <- query_exec(sql, project = "project-id", use_legacy_sql = FALSE)

我的输出如下:

> data
               id_tweet
283 1023985670224785408
                                                                                                                                         tweet
283 ◉ Neuroeducación y entornos digitales de aprendizaje: un paso obligado para educadores, pedagogos y psicólogos
                                                                                        descripcion
283 Desde las alturas se ve todo de otra manera... ï¿½ï¿½ï¸ âž• ��<U+200D>â™‚ï¸ ï¿½ï¿½ ��

我想要保留原始格式。

我该怎么办?

谢谢

2 个答案:

答案 0 :(得分:0)

我测试了一些可能有帮助的东西。

首先,我保存了空白的R脚本,并确保它采用UTF-8编码:File-> Encoding with Encoding-> UTF-8。然后仅将问题中的特殊字符用双引号保存为.csv(即"➕, ‍♂️, Ñ, áéíóú")。然后使用fileEncoding = "UTF-8"读取csv,即:

test <- read.csv("test.csv", fileEncoding = "UTF-8", header=FALSE, stringsAsFactors = FALSE)

在R Studio内部,test返回:

# > test
# V1
# 1 \u2795, ‍♂️, Ñ, áéíóú

因此,除➕以外的所有内容都可以在R Studio中很好地显示。但是,很多字符,甚至是诸如换行符和制表符之类的常见字符,在RStudio中都会有趣地显示,但通常在写入文件时会显示。这些没有什么不同。

在编写csv时(仅使用write.csv(test, 'test2.csv', row.names=FALSE)),它显示的效果与原始csv中的显示效果完全一样(即以崇高的文本格式打开)

所有这些之后,我建议您确保编码为UTF-8,并可能尝试将BQ输出保存为csv(如果可能的话),然后检查它是否是BQ或R引起的。它可以正确地从BQ中导出,那么只需更改RStudio中的编码即可。但是,如果它不是BQ所期望的那样,那么我建议您需要将BQ中的数据类型(更改为UTF-8)

答案 1 :(得分:0)

六个月后,我终于设法解决了这个问题。我没有使用功能query_exec,而是使用了同一个程序包中的bq_table_download。此功能解决了问题。希望对您有所帮助。