添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
从未表白的椰子  ·  Installation — ...·  1 月前    · 
玉树临风的书包  ·  Where to write the ...·  11 月前    · 
深情的大蒜  ·  SqlSugar 和 Oracle ...·  11 月前    · 

Is it possible to select with the QueryRecord processor also child fields of an given JSON structrue?

E.g. following JSON:

{
  "name" : "Max",
  "id" : 1,
  "location" : {
    "city" : "Frankfurt"
}

And I would do the following query:

SELECT name, location.city FROM FLOWFILE

But this throws an error:

QueryRecord[id=a4744340-017a-1000-6944-73fe4d362d90] Unable to query StandardFlowFileRecord[uuid=706e8ae8-f76c-4ebb-9c65-c46cb7026c89,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1626251405764-2, container=default, section=2], offset=790026, length=67],offset=0,name=55b72cfd-5308-4e83-9304-166193e76478,size=67] due to java.sql.SQLException: Error while preparing statement [SELECT "name", "location.city" FROM FLOWFILE]: org.apache.nifi.processor.exception.ProcessException: java.sql.SQLException: Error while preparing statement [SELECT "name", "location.city" FROM FLOWFILE]

Is there something that I'm doing wrong? Here is the configuration:

janis-ax_0-1626258776077.png

Hi @janis-ax ,

This reply comes a bit late but I was just researching the same issue. According to the official NiFi documentation, this should be possible using the "RPath" function in the 'Where' clause.

Check out the "SQL over hierarchical data" section here: https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/latest/org.apach...

As @mkohs mentioned, using the RPATH function is the way to go here.

It can be used on the SELECT clause, for projection, as well as on the WHERE cause, for filtering.

You can see a similar use of it in this post here: https://community.cloudera.com/t5/Support-Questions/QueryRecord-processor-issue-with-nested-JSON/td-...

Cheers,

André

Understood, had to make sure!    Next for good measure, make sure flow works for just name.  This will show you if the issue is the entire setup or with just "location.city".

Next look at the configurations for the Reader/Writer and share those for us to see incase they are not default configs,etc.  I believe the particular error:

SQLException: Error while preparing statement

occurs with a schema conflict or issue with flowfile being different than expected schema.

Hi @janis-ax ,

This reply comes a bit late but I was just researching the same issue. According to the official NiFi documentation, this should be possible using the "RPath" function in the 'Where' clause.

Check out the "SQL over hierarchical data" section here: https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/latest/org.apach...

Hi @mkohs ,

I am using QueryRecord processor and using SQL len function in the select statement. However, the processor results with the below error: "No match found for function signature len(CHARACTER)"

Kiranq_2-1686051694984.png

Is this the processor specific error because the same sql statement in running fine in sql server.
Any help would be appreciated.

Hi,

Nifi QueryRecord uses Apache Calcite SQL. Per the documentation ( https://calcite.apache.org/docs/reference.html ) you can use either CHAR_LENGTH or CHARACTER_LENGTH to get the string size. Both functions seem to have the same behavior according to the documentation.

If you find this helpful please accept solution.

Thanks

Apache Hadoop and associated open source project names are trademarks of the Apache Software Foundation. For a complete list of trademarks, click here.