Arrow 数据集不支持过滤器表达式
Filter expression not supported for Arrow Datasets
我在 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\.+", Posteringstekst, value = TRUE)
Call collect() first to pull data into R.
Timing stopped at: 0.01 0 0.01
我也使用过具有相同结果的字符串,可能就像错误提示“不支持过滤表达式”一样简单,如果是的话,何时支持这些?
也许以后新的SQL查询方式会更好?
错误信息是正确的:从3.0.0版本开始,arrow R包不支持像grep这样的字符串函数来过滤数据集。 https://issues.apache.org/jira/browse/ARROW-10305 是跟踪该功能的问题。我们希望在下一个版本(4.0.0)中实现这些字符串函数。
我在 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\.+", Posteringstekst, value = TRUE)
Call collect() first to pull data into R.
Timing stopped at: 0.01 0 0.01
我也使用过具有相同结果的字符串,可能就像错误提示“不支持过滤表达式”一样简单,如果是的话,何时支持这些?
也许以后新的SQL查询方式会更好?
错误信息是正确的:从3.0.0版本开始,arrow R包不支持像grep这样的字符串函数来过滤数据集。 https://issues.apache.org/jira/browse/ARROW-10305 是跟踪该功能的问题。我们希望在下一个版本(4.0.0)中实现这些字符串函数。