text
This extension is an Event to Text output mapper. Transports that publish
text messages can use this extension to convert the stream worker events to
text messages. Users can use a predefined text format where event
conversion is carried out without any additional configurations, or use
custom placeholder(using {{
and }}
) to map custom text messages.
You can also enable mustache based custom mapping. In mustache-based custom mapping, you can use custom placeholder (using {{
and }}
or {{{
and }}}
) to map custom text. In mustache-based custom
mapping, all variables are HTML escaped by default. For example: &
is
replaced with &
"
is replaced with "
=
is replaced with
=
If you want to return unescaped HTML, use the triple mustache
{{{
instead of double {{
.
Syntax
CREATE SINK <NAME> WITH (type="text", event.grouping.enabled="<BOOL>", delimiter="<STRING>", new.line.character="<STRING>", mustache.enabled="<BOOL>")
Query Parameters
Name | Description | Default Value | Possible Data Types | Optional | Dynamic |
---|---|---|---|---|---|
event.grouping.enabled | If this parameter is set to true , events are grouped via a delimiter when multiple events are received. It is required to specify a value for the delimiter parameter when the value for this parameter is true . | false | BOOL | Yes | No |
delimiter | This parameter specifies how events are separated when a grouped event is received. This must be a whole line and not a single character. | ~~~~~~~~~~ | STRING | Yes | No |
new.line.character | This attribute indicates the new line character of the event that is expected to be received. This is used mostly when communication between 2 types of operating systems is expected. For example, Linux uses \n whereas Windows uses \r\n as the end of line character. | \n | STRING | Yes | No |
mustache.enabled | If this parameter is set to true , then mustache mapping gets enabled for custom text mapping. | false | BOOL | Yes | No |
Example 1
CREATE SINK FooStream WITH (type='stream', topic='stock', map.type='text') (symbol string, price float, volume long);
This query performs a default text input mapping. The expected output is:
symbol:"GDN",
price:55.6,
volume:100
Example 2
CREATE SINK FooStream WITH (type='stream', topic='stock', map.type='text', map.event.grouping.enabled='true') (symbol string, price float, volume long);
This query performs a default text input mapping with event grouping. The expected output is:
symbol:"GDN",
price:55.6,
volume:100
~~~~~~~~~~
symbol:"GDN",
price:55.6,
volume:100
Example 3
CREATE SINK FooStream WITH (type='stream', topic='stock', map.type='text', map.payload="SensorID : {{symbol}}/{{volume}}, SensorPrice : Rs{{price}}/=, Value : {{volume}}ml") (symbol string, price float, volume long);
This query performs a custom text mapping. The expected output is:
SensorID : gdn/100,
SensorPrice : Rs1000/=,
Value : 100ml
for the following stream processor event.
{gdn,1000,100}
Example 4
CREATE SINK FooStream WITH (type='stream', topic='stock', map.type='text', map.event.grouping.enabled='true', map.payload="Stock price of {{symbol}} is {{price}}") (symbol string, price float, volume long);
This query performs a custom text mapping with event grouping. The expected output is:
Stock price of GDN is 55.6
~~~~~~~~~~
Stock price of GDN is 55.6
~~~~~~~~~~
Stock price of GDN is 55.6
Example 5
CREATE SINK FooStream WITH (type='stream', topic='stock', map.type='text', map.mustache.enabled='true', map.payload="SensorID : {{{symbol}}}/{{{volume}}}, SensorPrice : Rs{{{price}}}/=, Value : {{{volume}}}ml") (symbol string, price float, volume long);
This query performs a custom text mapping to return unescaped HTML. The expected output is: SensorID:
SensorID : a&b/100,
SensorPrice : Rs1000/=,
Value : 100ml
for the following stream processor event.
{a&b,1000,100}