箭头数据集不支持过滤器表达式

问题描述

我在 R 中使用箭头包。我需要过滤字符串,例如,我有 7 亿行,我只需要获取那些包含“Walmart”的行,但出现以下错误

    FileSystemDataset with 2886 Parquet files
DatoID: int32
BanktransaksjonID: int64
PosteringstypeID: int64
ForretningskategoriID: int64
KundeID: string
KortKildeID: string
TransaksjonDTM: timestamp[ns]
Posteringstekst: string
Kontovaluta: string
Kontobelop: decimal(38,18)
Transaksjonsvaluta: string
Forretningskategori: string
Forretningsnr: string
Posteringstypekode: string
Posteringstype: string
KortFlagg: string
year: int32
month: int32
+ system.time(ds %>%
+               filter(year==2019,month=1,grep('^cl\\.+',Posteringstekst,value=TRUE)) %>%
+               select(Kontobelop)%>%
+               collect() %>%
+               summarise(
+                 mean = mean(abs(Kontobelop)),+                 n = n()) %>%
+               print())
Error: Filter expression not supported for Arrow Datasets: grep("^cl\\.+",value = TRUE)
Call collect() first to pull data into R.
Timing stopped at: 0.01 0 0.01

我也使用了具有相同结果的字符串,也许就像错误说“不支持过滤器表达式”一样简单,如果支持,那么何时支持

也许一种新的类似 sql查询方式在未来会更好?

解决方法

错误信息是正确的:从3.0.0版本开始,箭头R包不支持grep这样的字符串函数来过滤数据集。 https://issues.apache.org/jira/browse/ARROW-10305 是跟踪该功能的问题。我们希望在下一个版本(4.0.0)中实现这些字符串函数。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...