{"id":101029,"date":"2024-02-21T17:00:21","date_gmt":"2024-02-21T17:00:21","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/?p=101029"},"modified":"2024-09-03T20:04:47","modified_gmt":"2024-09-03T20:04:47","slug":"eventstream-and-the-new-kql-processing","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/blogs\/eventstream-and-the-new-kql-processing\/","title":{"rendered":"Eventstream and the new KQL Processing"},"content":{"rendered":"<p><strong>Eventstream<\/strong> has many differences in relation to the technologies it proposes to replace. <strong>Event Hub<\/strong>, <strong>Stream Analytics<\/strong>, <strong>Streaming Dataflows<\/strong> and more. We can compare these technologies, but <strong>EventStream<\/strong> in <strong>Microsoft Fabric<\/strong> has some specific differences from all of them.<\/p>\n<p>One of the differences is how the transformation of the input data is linked to the target of the data.<\/p>\n<p>On previous technologies, we could receive the data stream, define transformations for it, and send the result of the transformations to multiple targets. The features for the transformation were the same.<\/p>\n<p>On <strong>EventStream<\/strong>, this works differently. The transformations are linked directly to the target of the data. Lakehouse, as a target, has a specific set of transformations possible.<\/p>\n<p>On November, Fabric announced the transformation features in the <strong>KQL<\/strong> target. This is a considerable advance. <strong>KQL<\/strong> target is usually the <strong>Speed Layer<\/strong> in a lambda architecture, while the lakehouse is the <strong>Batch Layer<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"350\" class=\"wp-image-101030\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2023\/12\/a-diagram-of-a-process-description-automatically.png\" alt=\"A diagram of a process\n\nDescription automatically generated\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The possibility of making transformations on the <strong>Batch Layer<\/strong> and not on the <strong>Speed Layer<\/strong> was a problem. Now we can make the transformations on both.<\/p>\n<h2><strong>KQL Event Processing in EventStream<\/strong><\/h2>\n<p>When configuring the target, we can choose between two options:<\/p>\n<ul>\n<li>Direct Ingestion<\/li>\n<li>Event Processing before ingestion<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"330\" height=\"421\" class=\"wp-image-101031\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2023\/12\/a-screenshot-of-a-computer-description-automatica-30.png\" alt=\"A screenshot of a computer\n\nDescription automatically generated\" \/><\/p>\n<p>In my opinion, the most common scenario for a <strong>Speed Layer<\/strong> is to transform and summarize the data, while the <strong>Batch Layer<\/strong> may ingest the data as is.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"308\" height=\"720\" class=\"wp-image-101032\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2023\/12\/a-screenshot-of-a-computer-description-automatica-31.png\" alt=\"A screenshot of a computer\n\nDescription automatically generated\" \/><\/p>\n<p>However, you may face many different scenarios and challenges.<\/p>\n<h2><strong>Transformations<\/strong><\/h2>\n<p>We have some simple transformations:<\/p>\n<ul>\n<li>Manage Fields<\/li>\n<li>Filter<\/li>\n<li>Expand<\/li>\n<\/ul>\n<p>These are some transformations for grouping data:<\/p>\n<ul>\n<li>Group By<\/li>\n<li>Aggregate<\/li>\n<\/ul>\n<p>This is a transformation using multiple sources:<\/p>\n<ul>\n<li>Union<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"272\" height=\"318\" class=\"wp-image-101033\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2023\/12\/a-screenshot-of-a-computer-description-automatica-32.png\" alt=\"A screenshot of a computer\n\nDescription automatically generated\" \/><\/p>\n<h2><strong>Summary<\/strong><\/h2>\n<p>This feature is absolutely needed. In my opinion, it&#8217;s strange to have the transformations linked to the target. However, we have features to make transformations for the <strong>Speed Layer<\/strong> and for the <strong>Batch layer<\/strong>, allowing us to build a complete lambda architecture starting with a single EventStream.<\/p>\n<p>The <strong>EventStream<\/strong> is different, but it seems more powerful than all previous features it replaces.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eventstream has many differences in relation to the technologies it proposes to replace. Event Hub, Stream Analytics, Streaming Dataflows and more. We can compare these technologies, but EventStream in Microsoft Fabric has some specific differences from all of them. One of the differences is how the transformation of the input data is linked to the&#8230;&hellip;<\/p>\n","protected":false},"author":50808,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2,159164],"tags":[159056,126250,158997,159057],"coauthors":[6810],"class_list":["post-101029","post","type-post","status-publish","format-standard","hentry","category-blogs","category-microsoft-fabric","tag-eventstream","tag-kql","tag-microsoft-fabric","tag-real-time"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/101029","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/50808"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=101029"}],"version-history":[{"count":3,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/101029\/revisions"}],"predecessor-version":[{"id":101036,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/101029\/revisions\/101036"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=101029"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=101029"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=101029"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=101029"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}