# Query.jl fails handle CSV.Rows

**URL:** <https://discourse.julialang.org/t/query-jl-fails-handle-csv-rows/95063>\
**Category:** General Usage\
**Tags:** query, csv\
**Created:** [February 23, 2023, 6:53am UTC](https://discourse.julialang.org/t/query-jl-fails-handle-csv-rows/95063 "2023-02-23T06:53:54Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![purplesabbath](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/purplesabbath/32/30574_2.png) [@purplesabbath](https://discourse.julialang.org/u/purplesabbath)\
**Post date:** [February 23, 2023, 6:53am UTC](https://discourse.julialang.org/t/query-jl-fails-handle-csv-rows/95063/1 "2023-02-23T06:53:54Z")

</div>

I got an dataset too large for memory, I want to combine CSV.Rows and Query.jl to handle data, but after `@groupby`, I can’t use `@map` to summarize data.

```plaintext
using DataFrames 
using CSV 
using Query 
data_path = "D:\\chen\\detail.csv" 
data_itr = CSV.Rows(data_path, reusebuffer=true) 
data_itr |> @groupby(_.hospital) |> @map({Key=key(_), Total=sum(_.amount)}) |> DataFrame

```

ERROR: type Row2 has no field amount  
Stacktrace:  
[1] getproperty(g::Grouping{Any, CSV.Row2}, name::Symbol)  
@ QueryOperators C:\Users\gxjk009.julia\packages\QueryOperators\dF1vq\src\enumerable\enumerable\_groupby.jl:29  
[2] (::var"#94#99")(333::Grouping{Any, CSV.Row2})  
@ Main C:\Users\gxjk009.julia\packages\Query\85Sw7\src\query\_translation.jl:58  
[3] iterate  
@ C:\Users\gxjk009.julia\packages\QueryOperators\dF1vq\src\enumerable\enumerable\_map.jl:25 [inlined]  
[4] iterate  
@ C:\Users\gxjk009.julia\packages\Tables\T7rHm\src\tofromdatavalues.jl:45 [inlined]  
[5] buildcolumns  
@ C:\Users\gxjk009.julia\packages\Tables\T7rHm\src\fallbacks.jl:202 [inlined]  
[6] columns  
@ C:\Users\gxjk009.julia\packages\Tables\T7rHm\src\fallbacks.jl:265 [inlined]  
[7] DataFrame(x::QueryOperators.EnumerableMap{Union{}, QueryOperators.EnumerableIterable{Grouping{Any, CSV.Row2}, QueryOperators.EnumerableGroupBy{Grouping{Any, CSV.Row2}, Any, CSV.Row2, QueryOperators.EnumerableIterable{CSV.Row2, CSV.Rows{Vector{UInt8}, Tuple{}, PosLen, PosLenString}}, var"#91#96", var"#92#97"}}, var"#94#99"}; copycols::Nothing)  
…

---

<div class="post-metadata">

**Author:** ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)\
**Post date:** [February 23, 2023, 8:17am UTC](https://discourse.julialang.org/t/query-jl-fails-handle-csv-rows/95063/2 "2023-02-23T08:17:06Z")

</div>

When the dataset is too large for memory, you may want to avoid materialization and use single-pass algorithms. Try `OnlineStats.jl`:

```julia
fit!(GroupBy(String, Sum()), data_itr) # assuming there are two columns: hospital is a string, and amount is a number

```
