Hi team, if we have nested protobuf message, like ...
# troubleshooting
h
Hi team, if we have nested protobuf message, like
Copy code
message B {
   repeated message A = 1;
}
How can we extract message A with Table API?
r
repeated message can be created as an Array type. ARRAY<ROW<‘A’>>
👍 1
h
One more question, how can we query the ARRAY column with Table API? For instance, I want to extract the value equals to 1 in the ARRAY<INT> column.
r
You can query using ‘.’ For example, feature ARRAY<ROW<id STRING>> you can query using “feature.id”
h
It seems not working🤣. I have a column with array['Metric']. And Metric class a member variable called 'name'. Then I try to execute such query:
Copy code
tableEnv.from("MetricTbl").filter($("metrics.name").isEqual("aaaa"));
Now I faced with exception:
Copy code
Caused by: org.apache.flink.table.api.ValidationException: Cannot resolve field [metrics.name], input field list:[aaa, bbb, ccc, ddd, metrics].
        at org.apache.flink.table.expressions.resolver.rules.ReferenceResolverRule$ExpressionResolverVisitor.failForField(ReferenceResolverRule.java:93)
        at org.apache.flink.table.expressions.resolver.rules.ReferenceResolverRule$ExpressionResolverVisitor.lambda$null$3(ReferenceResolverRule.java:87)
        at java.base/java.util.Optional.orElseThrow(Optional.java:408)
        at org.apache.flink.table.expressions.resolver.rules.ReferenceResolverRule$ExpressionResolverVisitor.lambda$null$4(ReferenceResolverRule.java:85)
        at java.base/java.util.Optional.orElseGet(Optional.java:369)
        at org.apache.flink.table.expressions.resolver.rules.ReferenceResolverRule$ExpressionResolverVisitor.lambda$visit$5(ReferenceResolverRule.java:79)
        at java.base/java.util.Optional.orElseGet(Optional.java:369)
        at org.apache.flink.table.expressions.resolver.rules.ReferenceResolverRule$ExpressionResolverVisitor.visit(ReferenceResolverRule.java:73)
        at org.apache.flink.table.expressions.resolver.rules.ReferenceResolverRule$ExpressionResolverVisitor.visit(ReferenceResolverRule.java:51)
        at org.apache.flink.table.expressions.ApiExpressionVisitor.visit(ApiExpressionVisitor.java:29)
        at org.apache.flink.table.expressions.UnresolvedReferenceExpression.accept(UnresolvedReferenceExpression.java:59)
        at org.apache.flink.table.expressions.resolver.rules.ReferenceResolverRule$ExpressionResolverVisitor.lambda$visit$0(ReferenceResolverRule.java:61)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)