{"id":1436,"date":"2023-04-02T19:06:05","date_gmt":"2023-04-02T18:06:05","guid":{"rendered":"https:\/\/mortenknudsen.net\/?p=1436"},"modified":"2023-04-03T11:50:04","modified_gmt":"2023-04-03T10:50:04","slug":"how-to-do-data-transformation-using-workspace-transformation-for-legacy-upload-methods","status":"publish","type":"post","link":"https:\/\/mortenknudsen.net\/?p=1436","title":{"rendered":"How to do data transformation using Workspace transformation for legacy upload methods"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This blog will demonstrate how you can do workspace transformation to <strong>support legacy data transformation<\/strong> where data is being uploaded by legacy methods.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You cannot do a workspace transformation, if the sources sending data is coming from Azure Monitor Agent or Log Ingestion API &#8211; only <strong>legacy agent\/solution (MMA)<\/strong> and <strong>legacy HTTP Data Collector API<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This blog-post is part of a series of blog posts to <a href=\"https:\/\/mortenknudsen.net\/?p=1687\" target=\"_blank\" rel=\"noreferrer noopener\">master Azure logging in depth (overview)<\/a>. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized is-style-default\"><a href=\"https:\/\/mortenknudsen.net\/?p=1687\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/image-25.png\" alt=\"\" class=\"wp-image-2124\" width=\"434\" height=\"502\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/image-25.png 867w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/image-25-259x300.png 259w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/image-25-768x889.png 768w\" sizes=\"auto, (max-width: 434px) 100vw, 434px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To get you started, you can find <a href=\"https:\/\/github.com\/KnudsenMorten\/AzureLogLibrary\" target=\"_blank\" rel=\"noreferrer noopener\">ARM-templates &amp; scripts in my AzureLogLibrary (github)<\/a>. Details will be covered in the articles.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/github.com\/KnudsenMorten\/AzureLogLibarary\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/image-26-1024x466.png\" alt=\"\" class=\"wp-image-2125\" width=\"400\" height=\"182\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/image-26-1024x466.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/image-26-300x137.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/image-26-768x349.png 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/image-26.png 1057w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Quick Links<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"#data-transformation\">Data transformation<\/a><br><a href=\"#how-gui\">How to setup in GUI ?<\/a><br><a href=\"#reallife\">Real-life example of workspace transformation<\/a><br><a href=\"#moreinfo-ms\">More information (Microsoft)<\/a><br><br><\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"data-transformation\">Data Transformation<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to read about the data transformation capabilities, <a href=\"https:\/\/mortenknudsen.net\/?p=1433#Data-transformation\" target=\"_blank\" rel=\"noreferrer noopener\">please read more here<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Currently, Microsoft supports doing transformation using 4 methods:<\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><thead><tr><th>Collection source<\/th><th>How<\/th><th>Purpose \/ limitatations<\/th><\/tr><\/thead><tbody><tr><td>XPath<\/td><td>XML syntax in DCR<\/td><td>XPath implementation uses v1, which is very limited in functionality.<\/td><\/tr><tr><td>MMA-agent \/ Solutions (legacy):<br>Performance<br>Eventlog<br>Syslog<br><br>API (legacy):<br>HTTP Data Collector API<\/td><td>Workspace transformation DCR<\/td><td>Only one transformation per table<\/td><\/tr><tr><td>All sources sending in using AMA<\/td><td>AMA transformation DCR<\/td><td>All DCRs do unions, so be aware of double data. Governance is important<\/td><\/tr><tr><td>REST API using Log ingestion API<\/td><td>Log Ingestion transformation DCR<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">You cannot do a workspace transformation, if the sources sending data is coming from Azure Monitor Agent or Log Ingestion API &#8211; only <strong>legacy agent\/solution (MMA)<\/strong> and <strong>legacy HTTP Data Collector API<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"how-gui\">How to setup in GUI ?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">You can setup a workspace transformation in the GUI on the table. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"377\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-1-1024x377.png\" alt=\"\" class=\"wp-image-1563\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-1-1024x377.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-1-300x111.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-1-768x283.png 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-1.png 1205w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"303\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-2-1024x303.png\" alt=\"\" class=\"wp-image-1564\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-2-1024x303.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-2-300x89.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-2-768x227.png 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-2-1536x455.png 1536w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-2.png 1578w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"391\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-3a-1024x391.png\" alt=\"\" class=\"wp-image-1565\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-3a-1024x391.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-3a-300x114.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-3a-768x293.png 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-3a.png 1284w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"511\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-3b-1-1024x511.png\" alt=\"\" class=\"wp-image-1567\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-3b-1-1024x511.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-3b-1-300x150.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-3b-1-768x383.png 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-3b-1.png 1321w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"331\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-4-1024x331.png\" alt=\"\" class=\"wp-image-1568\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-4-1024x331.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-4-300x97.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-4-768x248.png 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-4-1536x496.png 1536w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-4.png 1586w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can find the transformation inside the Data Collection Rule. It is important to choose the newest API version (2022-06-01) in the right corner.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"564\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-5-1024x564.png\" alt=\"\" class=\"wp-image-1569\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-5-1024x564.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-5-300x165.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-5-768x423.png 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-5-1536x846.png 1536w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/workspace-transformation-5.png 1865w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Real-life example of workspace transformation<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Here is an example where I did a workspace transformation removing <strong>Syslog events<\/strong> with specific patterns. As you can see, the results were a significant decrease. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of course there is a trade-off, which must be considered. There are always 2 sides of the coin &#8211; will I miss the data at some point !<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>source\n| where (DeviceVendor !contains \"sonicwall\") or ((DeviceVendor contains \"sonicwall\") and (Activity contains \"connection opened\" or Activity contains \"connection closed\") and (Protocol != \"udp\/dns\"))<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"517\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/workspace-transformation-example-1024x517.png\" alt=\"\" class=\"wp-image-1783\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/workspace-transformation-example-1024x517.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/workspace-transformation-example-300x151.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/workspace-transformation-example-768x388.png 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/workspace-transformation-example.png 1349w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"moreinfo-ms\">More information (Microsoft)<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-monitor\/logs\/tutorial-workspace-transformations-portal\">https:\/\/learn.microsoft.com\/en-us\/azure\/azure-monitor\/logs\/tutorial-workspace-transformations-portal<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog will demonstrate how you can do workspace transformation to support legacy data transformation where data is being uploaded &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"How to do data transformation using Workspace transformation for legacy upload methods\" class=\"read-more button\" href=\"https:\/\/mortenknudsen.net\/?p=1436#more-1436\" aria-label=\"Read more about How to do data transformation using Workspace transformation for legacy upload methods\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":1783,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"ngg_post_thumbnail":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[140,55,59,129,131,61,128,54,143,141,57,28,139,136,138,137,142,133,134,146,60,132,58,145,135,144],"tags":[],"class_list":["post-1436","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ama","category-azure","category-azure-arc","category-azure-data-collection-rules","category-azure-data-ingestion-pipeline","category-azure-extensions","category-azure-log-ingestion-api","category-azure-loganalytics","category-azure-logging","category-azure-monitor-agent","category-azure-security","category-community","category-data-collection-endpoint","category-data-transformation","category-dce","category-dcr","category-logging","category-microsoft-security","category-mvpbuzz","category-performance-collection","category-scripting","category-security","category-sentinel","category-servicemap","category-transformation","category-vminsight","infinite-scroll-item","resize-featured-image"],"featured_image_src":"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/workspace-transformation-example.png","author_info":{"display_name":"Morten Knudsen","author_link":"https:\/\/mortenknudsen.net\/?author=1"},"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/workspace-transformation-example.png","_links":{"self":[{"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/posts\/1436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1436"}],"version-history":[{"count":24,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/posts\/1436\/revisions"}],"predecessor-version":[{"id":2141,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/posts\/1436\/revisions\/2141"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/media\/1783"}],"wp:attachment":[{"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}