order-by no working
Closed this issue · 4 comments
behrica commented
(tc/order-by [:panel-code :output-type-code])
gives exception.
I have unusal column names:
(:panel-code :output-type-code 2020 2021 2022 2023)
keys and lonsg,
maybe thats the reason
[{:type java.lang.ClassCastException
:message "class clojure.lang.Keyword cannot be cast to class java.lang.String (clojure.lang.Keyword is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')"
:at [java.lang.String compareTo "String.java" 142]}]
:trace
[[java.lang.String compareTo "String.java" 142]
[clojure.lang.Util compare "Util.java" 153]
[clojure.lang.APersistentVector compareTo "APersistentVector.java" 442]
[clojure.lang.Util compare "Util.java" 153]
[clojure.core$compare invokeStatic "core.clj" 842]
[clojure.core$compare invoke "core.clj" 833]
[clojure.lang.AFunction compare "AFunction.java" 51]
[tech.v3.datatype.argops$index_comparator$reify__31810 compareInts "argops.clj" 298]
[tech.v3.datatype.Comparators$IntComp compare "Comparators.java" 16]
[it.unimi.dsi.fastutil.ints.IntArrays quickSort "IntArrays.java" 482]
[it.unimi.dsi.fastutil.ints.IntArrays parallelQuickSort "IntArrays.java" 602]
[it.unimi.dsi.fastutil.ints.IntArrays parallelQuickSort "IntArrays.java" 621]
[tech.v3.datatype.argops$argsort invokeStatic "argops.clj" 366]
[tech.v3.datatype.argops$argsort invoke "argops.clj" 333]
[tech.v3.dataset.base$sort_by invokeStatic "base.clj" 589]
[tech.v3.dataset.base$sort_by doInvoke "base.clj" 569]
[clojure.lang.RestFn invoke "RestFn.java" 445]
[tech.v3.dataset.base$sort_by invokeStatic "base.clj" 592]
[tech.v3.dataset.base$sort_by invoke "base.clj" 569]
[tech.v3.dataset$sort_by invokeStatic "dataset.clj" 1385]
[tech.v3.dataset$sort_by invoke "dataset.clj" 1366]
[tablecloth.api.order_by$sort_fn$fn__40515 invoke "order_by.clj" 45]
[tablecloth.api.order_by$order_by invokeStatic "order_by.clj" 78]
[tablecloth.api.order_by$order_by invoke "order_by.clj" 56]
[tablecloth.api.order_by$order_by invokeStatic "order_by.clj" 67]
[tablecloth.api.order_by$order_by invoke "order_by.clj" 56]
[tablecloth.api.order_by$order_by invokeStatic "order_by.clj" 66]
[tablecloth.api.order_by$order_by invoke "order_by.clj" 56]
[tablecloth.api$order_by invokeStatic "api.clj" 710]
[tablecloth.api$order_by invoke "api.clj" 699]
behrica commented
It happens when having a mixed column, containing keywords and String values
genmeblog commented
What about the content? Could you please provide a minimal example of such dataset (few rows). Looks like it belongs to a TMD.
genmeblog commented
Ok. I think it's expected behaviour. Keywords and strings are not comparable.
(sort [:a :b "c"])
1. Unhandled java.lang.ClassCastException
class clojure.lang.Keyword cannot be cast to class java.lang.String
(clojure.lang.Keyword is in unnamed module of loader 'app';
java.lang.String is in module java.base of loader 'bootstrap')
String.java: 142 java.lang.String/compareTo
Util.java: 153 clojure.lang.Util/compare
core.clj: 842 clojure.core/compare
core.clj: 833 clojure.core/compare
AFunction.java: 51 clojure.lang.AFunction/compare
TimSort.java: 360 java.util.TimSort/countRunAndMakeAscending
TimSort.java: 220 java.util.TimSort/sort
Arrays.java: 1234 java.util.Arrays/sort
core.clj: 3116 clojure.core/sort
core.clj: 3103 clojure.core/sort
core.clj: 3103 clojure.core/sort
behrica commented
Ok, we close it.