Hi,
I am trying to export data using the GeoMesa export command.
GeoMesa version = 2.0.2
Accumullo = 1.9.2
- I can successfully export data as long as I am not using a transform function or the transform function is taking a single argument.
Example:
sudo docker exec accumulo-master geomesa-accumulo export -c geomesa.x_catalog -f x_feature -u root -p secret -a uid,'strTrim(name)',date,year -m 10 -o export-data.csv -F csv
- Export is failing when using a transform function that takes more than one argument. In other words when a comma is introduced. This may be because the comma is confused for the attribute delmitter.
Example cmd failing:
sudo docker exec accumulo-master geomesa-accumulo export -c geomesa.x_catalog -f x_feature -u root -p secret -a uid,'strConcat(name,"POINT")',date,year -m 10 -o export-data.csv -F csv
Error:
ERROR Unable to parse _expression_ strConcat(name=strConcat(name org.geotools.filter.text.cql2.CQLException: Encountered "<EOF>" at line 1, column 14.
Was expecting one of:
")" ...
"," ...
"." ...
"/" ...
":" ...
"*" ...
"+" ...
"-" ...
<IDENTIFIER> ...
"(" ...
Parsing : strConcat(name.
java.lang.IllegalArgumentException: Unable to parse _expression_ strConcat(crop=strConcat(crop org.geotools.filter.text.cql2.CQLException: Encountered "<EOF>" at line 1, column 14.
Was expecting one of:
")" ...
"," ...
"." ...
"/" ...
":" ...
"*" ...
"+" ...
"-" ...
<IDENTIFIER> ...
"(" ...
Parsing : strConcat(name.
at org.geotools.process.vector.TransformProcess.toDefinition(TransformProcess.java:185)
at org.locationtech.geomesa.index.planning.QueryPlanner$.buildTransformSFT(QueryPlanner.scala:197)
at org.locationtech.geomesa.index.planning.QueryPlanner$.setQueryTransforms(QueryPlanner.scala:189)
at org.locationtech.geomesa.index.planning.QueryRunner$class.configureQuery(QueryRunner.scala:53)
at org.locationtech.geomesa.index.planning.QueryPlanner.configureQuery(QueryPlanner.scala:41)
at org.locationtech.geomesa.index.geotools.GeoMesaFeatureCollection.getSchema(GeoMesaFeatureSource.scala:127)
at org.locationtech.geomesa.index.geotools.GeoMesaFeatureCollection.getSchema(GeoMesaFeatureSource.scala:116)
at org.locationtech.geomesa.tools.export.ExportCommand$class.export(ExportCommand.scala:74)
at org.locationtech.geomesa.accumulo.tools.export.AccumuloExportCommand.export(AccumuloExportCommand.scala:17)
at org.locationtech.geomesa.tools.export.ExportCommand$$anonfun$execute$1$$anonfun$apply$1.apply(ExportCommand.scala:40)
at org.locationtech.geomesa.tools.export.ExportCommand$$anonfun$execute$1$$anonfun$apply$1.apply(ExportCommand.scala:40)
at org.locationtech.geomesa.tools.DataStoreCommand$class.withDataStore(Command.scala:59)
at org.locationtech.geomesa.accumulo.tools.export.AccumuloExportCommand.withDataStore(AccumuloExportCommand.scala:17)
at org.locationtech.geomesa.tools.export.ExportCommand$$anonfun$execute$1.apply(ExportCommand.scala:40)
at org.locationtech.geomesa.tools.export.ExportCommand$$anonfun$execute$1.apply(ExportCommand.scala:40)
at org.locationtech.geomesa.utils.stats.MethodProfiling$class.profile(MethodProfiling.scala:19)
at org.locationtech.geomesa.accumulo.tools.export.AccumuloExportCommand.profile(AccumuloExportCommand.scala:17)
at org.locationtech.geomesa.tools.export.ExportCommand$class.execute(ExportCommand.scala:40)
at org.locationtech.geomesa.accumulo.tools.export.AccumuloExportCommand.execute(AccumuloExportCommand.scala:17)
at org.locationtech.geomesa.tools.Runner$class.main(Runner.scala:28)
at org.locationtech.geomesa.accumulo.tools.AccumuloRunner$.main(AccumuloRunner.scala:29)
at org.locationtech.geomesa.accumulo.tools.AccumuloRunner.main(AccumuloRunner.scala)
Caused by: org.geotools.filter.text.cql2.CQLException: Encountered "<EOF>" at line 1, column 14.
Was expecting one of:
")" ...
"," ...
"." ...
"/" ...
":" ...
"*" ...
"+" ...
"-" ...
<IDENTIFIER> ...
"(" ...
Parsing : strConcat(name.
at org.geotools.filter.text.ecql.ECQLCompiler.compileExpression(ECQLCompiler.java:117)
at org.geotools.filter.text.commons.CompilerUtil.parseExpression(CompilerUtil.java:175)
at org.geotools.filter.text.ecql.ECQL.toExpression(ECQL.java:157)
at org.geotools.filter.text.ecql.ECQL.toExpression(ECQL.java:136)
at org.geotools.process.vector.TransformProcess.toDefinition(TransformProcess.java:183)
... 21 more
.
An example of using a transform function is given
in GeoMesa Doc>
https://www.geomesa.org/documentation/2.0.2/user/cli/export.html
Transforms can be accomplished by specifying transform functions:
--attributes
id,name,name_transform=strConcat(name,
'foo')
But is tested? What am I doing wrong?
Thanks,
MerAGeb