-
Notifications
You must be signed in to change notification settings - Fork 66
Labels
opl-parserWork items related to OPL ParserWork items related to OPL Parserquery-engineQuery Engine / Transform related tasksQuery Engine / Transform related tasksquery-engine-columnarColumnar query engine which uses DataFusion to process OTAP BatchesColumnar query engine which uses DataFusion to process OTAP BatchesrustPull requests that update Rust codePull requests that update Rust codetransform-processorWork items related to transform-processorWork items related to transform-processor
Description
We'd like to have a way to specify in the query engine / transform processor to send the output of some pipeline to some next destination.
For example, imagine an OTAP DF engine like:
OTLP receiver -> Transform Processor ---> Exporter1 (for important telemetry)
|--> Exporter2 (for less important telemetry)
And a program like:
logs | if (severity_number > 10) {
route_to "exporter1_out_port"
} else {
route_to "exporter2_out_port"
}Note that:
- It would be nice if the columnar query engine remained decoupled from the OTAP DF Engine pipeline machinery. This would make it possible to use the columnar query-engine in a different system (like the SDK for example). This means whatever does the routing should be generic enough that it doesn't necessarily depend on something like
EffectHandler. - In the program above, the batch gets split, which for correct ack/nack semantics means we need to create new outgoing contexts, and ack the incomining context in response to Ack/Nacks received for the outgoing contexts (similar to how Batch Processor works).
- Transform Processor currently only accepts KQL program, but we'll only be supporting route_to in OPL initially, so we need to enhance the processor config to receive OPL programs and select the correct parser accordingly when deserializing the config.
To do for this issue:
- Add route_to operator to OPL Parser
- Add expressions for this operation to expressions AST
- Implement columnar query engine pipeline stage for this routing operation
- Add capability to transform_processor to be configured by OPL program
- Add tests to transform processor to ensure batches are correctly routed (via calls to effect handler)
- Handle proper Ack/Nack behaviour in transform processor.
Metadata
Metadata
Assignees
Labels
opl-parserWork items related to OPL ParserWork items related to OPL Parserquery-engineQuery Engine / Transform related tasksQuery Engine / Transform related tasksquery-engine-columnarColumnar query engine which uses DataFusion to process OTAP BatchesColumnar query engine which uses DataFusion to process OTAP BatchesrustPull requests that update Rust codePull requests that update Rust codetransform-processorWork items related to transform-processorWork items related to transform-processor
Type
Projects
Status
No status