<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5981114890639901811</id><updated>2012-01-24T20:30:03.586-08:00</updated><category term='Chaos Reigns Within'/><category term='All About Alteryx'/><category term='Mapping'/><category term='Alteryx 7.0'/><category term='Alteryx'/><category term='Guzzler'/><category term='Enigma'/><category term='Inspire'/><category term='Macro'/><category term='Drivetimes'/><category term='XML'/><category term='Optimisation'/><category term='On-Premise'/><category term='Spatial'/><category term='Datetime'/><category term='Grand Prix'/><category term='Sort'/><category term='Centroid'/><category term='Input/Output'/><category term='API'/><title type='text'>Chaos Reigns Within</title><subtitle type='html'>Random adventures in Alteryx</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-4729861894023938109</id><published>2012-01-24T20:26:00.000-08:00</published><updated>2012-01-24T20:30:03.606-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alteryx'/><category scheme='http://www.blogger.com/atom/ns#' term='Spatial'/><category scheme='http://www.blogger.com/atom/ns#' term='Macro'/><category scheme='http://www.blogger.com/atom/ns#' term='Centroid'/><title type='text'>How To Generate Weighted Centroids in Alteryx</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-RDifTK3wI4g/Tx9OUYjBduI/AAAAAAAAFCA/lYXVjdZ4mpw/s1600/IconForBlog.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-RDifTK3wI4g/Tx9OUYjBduI/AAAAAAAAFCA/lYXVjdZ4mpw/s1600/IconForBlog.png" /&gt;&lt;/a&gt;&lt;/div&gt;Just before Christmas I received a query from a colleague I used to work with at Experian UK who now works for Experian Norway.&amp;nbsp; He knew he could find the centroid of a polygon in Alteryx using the spatial info tool, but wanted to be able to calculate the Population Weighted Centroid of a polygon.&amp;nbsp; Well, off the top of my head I didn't know how to do that, but a quick ask around the office yeilded a fairly simple algorithm for the calculation and now a few weeks later I have packaged that algorithm up into a simple to use macro.&amp;nbsp; So here it is:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://downloads.chaosreignswithin.com/macros/6.0/SpatialWeightedAverage.yxzp"&gt;http://downloads.chaosreignswithin.com/macros/6.0/SpatialWeightedAverage.yxzp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-LqG60BHF9zQ/Tx9LgxDArlI/AAAAAAAAFBw/ZmmoubuFFYI/s1600/Module.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-LqG60BHF9zQ/Tx9LgxDArlI/AAAAAAAAFBw/ZmmoubuFFYI/s1600/Module.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The module is&amp;nbsp;actually&amp;nbsp;fairly simple and works by&amp;nbsp;taking&amp;nbsp;a weighted average on the x and y co-ordinates&amp;nbsp;of&amp;nbsp;the spatial points. &amp;nbsp;To&amp;nbsp;test&amp;nbsp;it out&amp;nbsp;I took the US Census Data 2010 Population estimates at Block Group level for the states of Colorado, Wyoming and Utah and calculated the Population Weighted&amp;nbsp;Centroids&amp;nbsp;&amp;nbsp;for those states. &amp;nbsp;The results of which you can see below:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-TeK_jxYuyis/Tx9Mg5zoVsI/AAAAAAAAFB4/cSXuN6uglz8/s1600/SpatialWeigthedAverage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-TeK_jxYuyis/Tx9Mg5zoVsI/AAAAAAAAFB4/cSXuN6uglz8/s1600/SpatialWeigthedAverage.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The blue diamonds are the spatial centers of the state and the red stars are the population weighted centroids as generated by my macro. &amp;nbsp;I was very pleased with the results, in each case you can see how the population centroid is "pulled" towards the state capital.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-4729861894023938109?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/4729861894023938109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2012/01/how-to-generate-weighted-centroids-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4729861894023938109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4729861894023938109'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2012/01/how-to-generate-weighted-centroids-in.html' title='How To Generate Weighted Centroids in Alteryx'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-RDifTK3wI4g/Tx9OUYjBduI/AAAAAAAAFCA/lYXVjdZ4mpw/s72-c/IconForBlog.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-4095363242495169676</id><published>2012-01-07T11:06:00.000-08:00</published><updated>2012-01-08T19:02:41.101-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chaos Reigns Within'/><category scheme='http://www.blogger.com/atom/ns#' term='Alteryx'/><category scheme='http://www.blogger.com/atom/ns#' term='Alteryx 7.0'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Grand Prix'/><category scheme='http://www.blogger.com/atom/ns#' term='All About Alteryx'/><category scheme='http://www.blogger.com/atom/ns#' term='Inspire'/><title type='text'>Happy New Year</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-EPJVmJv557s/TwiWOJ5W7yI/AAAAAAAAFBk/X9HVjcCE0LY/s1600/IMG_0046.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-EPJVmJv557s/TwiWOJ5W7yI/AAAAAAAAFBk/X9HVjcCE0LY/s320/IMG_0046.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;So 2012 is finally here and what a great year for Alteryx it is going to be. &amp;nbsp;We are now less than two months away from the annual conference: Inspire 2012 and the launch of Alteryx 7.0.&lt;br /&gt;&lt;br /&gt;Inspire as always promises to be a great learning event, with the chance to see first hand the new Alteryx 7.0 features and learn how you can leverage them in your business. &amp;nbsp;If you are looking for some reasons to justify to management why you should go, check out the excellent template letter on the Alteryx website &lt;a href="http://www.alteryx.com/events/inspire/justify-your-trip" target="_blank"&gt;here&lt;/a&gt;. Remember that Alteryx 7.0 is going to be a huge release packed full of new tools and features so there will be plenty to learn and take back to your company.&lt;br /&gt;&lt;br /&gt;If you are already planning on attending, then application is still open for the annual Alteryx Grand Prix. &amp;nbsp;For more information take a look at the recent post on the Alteryx Engine Works blog &lt;a href="http://www.alteryx.com/community/blogs/engine-works/alteryx-grand-prix-2012" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also if you haven't checked it out recently: Ron House's &lt;a href="http://alteryxuser.blogspot.com/" target="_blank"&gt;All About Alteryx Blog&lt;/a&gt; has some really interesting posts on using Alteryx 7.0 to leverage some online Location-Based APIs. &amp;nbsp;So head over there and take a &lt;a href="http://alteryxuser.blogspot.com/" target="_blank"&gt;look&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(First day back in the office after Christmas break, found this awesome mug waiting for me. &amp;nbsp;Great way to drink my morning coffee!)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-4095363242495169676?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/4095363242495169676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2012/01/happy-new-year.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4095363242495169676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4095363242495169676'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2012/01/happy-new-year.html' title='Happy New Year'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-EPJVmJv557s/TwiWOJ5W7yI/AAAAAAAAFBk/X9HVjcCE0LY/s72-c/IMG_0046.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-4681184137935442392</id><published>2011-12-19T00:57:00.000-08:00</published><updated>2011-12-19T00:57:16.319-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alteryx'/><category scheme='http://www.blogger.com/atom/ns#' term='Datetime'/><category scheme='http://www.blogger.com/atom/ns#' term='Enigma'/><title type='text'>December Enigma - Solution</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;and the answer is the 1st and 2nd of October '25.&amp;nbsp; You can find my solution here:&lt;br /&gt;&lt;br /&gt;&lt;iframe title ="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" width="98px" height="120px" style="padding:0;background-color:#fcfcfc;" src="https://skydrive.live.com/embed?cid=7754BE96CF065E9A&amp;resid=7754BE96CF065E9A%21158&amp;authkey=APmJ5Lo5ioUIuNY"&gt;&lt;/iframe&gt;&lt;br /&gt;Interestingly the other two solutions I have seen from other people, both look quite different to my solution.&amp;nbsp; But that is one of the huge strengths of Alteryx: there is never just one way of solving a problem!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-4681184137935442392?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/4681184137935442392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/12/december-enigma-solution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4681184137935442392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4681184137935442392'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/12/december-enigma-solution.html' title='December Enigma - Solution'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-7010101561403736310</id><published>2011-12-09T19:03:00.001-08:00</published><updated>2011-12-09T20:15:56.829-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alteryx'/><category scheme='http://www.blogger.com/atom/ns#' term='Grand Prix'/><category scheme='http://www.blogger.com/atom/ns#' term='Datetime'/><category scheme='http://www.blogger.com/atom/ns#' term='Enigma'/><title type='text'>December Enigma</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;With the next Alteryx Grand Prix just around the corner I thought I would offer up another enigma for you all to &amp;nbsp;test your Alteryx skills on:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.newscientist.com/article/mg21228341.400-enigma-number-1668.html"&gt;http://www.newscientist.com/article/mg21228341.400-enigma-number-1668.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This particular puzzle will test your knowledge of the Alteryx&amp;nbsp;date time&amp;nbsp;functions.&lt;br /&gt;&lt;br /&gt;If you enjoy a challenge and want to test your skills why not think about signing up for the Grand Prix. &amp;nbsp;Entry is currently open and full details can be found &lt;a href="http://www.alteryx.com/events/inspire/alteryx-grand-prix" target="_blank"&gt;here&lt;/a&gt;. &amp;nbsp;Check out last year's winner Jason Dunkel's blog on his experience &lt;a href="http://environicsanalytics.wordpress.com/tag/grand-prix/" target="_blank"&gt;here&lt;/a&gt;&amp;nbsp;for some hints, tips and inspiration.&lt;br /&gt;&lt;br /&gt;Look out for the solution next week.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-7010101561403736310?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/7010101561403736310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/12/december-enigma.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/7010101561403736310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/7010101561403736310'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/12/december-enigma.html' title='December Enigma'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-3127367130668697616</id><published>2011-11-21T05:00:00.000-08:00</published><updated>2011-11-21T05:00:03.835-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alteryx'/><category scheme='http://www.blogger.com/atom/ns#' term='Sort'/><category scheme='http://www.blogger.com/atom/ns#' term='Optimisation'/><title type='text'>Optimisation Quiz Answer</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Well the answer is that module B is faster. &amp;nbsp;That is to say adding an extra sort actually speeds things up. So using my sample data whose counts and sizes you can see in the images: &amp;nbsp;Module A runs in about 45 seconds while Module B runs in less than 30 seconds.&lt;br /&gt;&lt;br /&gt;Which kind of seems counter intuitive, how does adding more processing make things run faster overall?&lt;br /&gt;&lt;br /&gt;Well a great place to start looking for optimisations in an Alteryx module is to look at where you are sorting data. &amp;nbsp;A sort is a pretty resource&amp;nbsp;intensive&amp;nbsp;task, so the less you can do it&amp;nbsp;the&amp;nbsp;quicker your module will run.&lt;br /&gt;&lt;br /&gt;In module A, behind the scenes Alteryx is sorting in two places:&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;The summarise needs to sort the data in order to do&amp;nbsp;the&amp;nbsp;group by on the grouping field.&lt;/li&gt;&lt;li&gt;The batch macro also needs to sort the data to be able to batch it into chunks.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;So module A has two sorts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But if sorts are bad for run time, then how can adding an extra sort speed things up I hear you ask? &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's the clever bit... &amp;nbsp;When a tool in Alteryx sorts some data it tells the tools down stream of it that the data is sorted and what it is sorted by.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So back to our example: &amp;nbsp;We noted above that module A was performing two sorts, but actually it was doing the same sort (by GroupingField) twice. &amp;nbsp;By adding a sort in where we did the data gets sorted once there. &amp;nbsp;When the data gets to&amp;nbsp;the&amp;nbsp;summarise tool and&amp;nbsp;the&amp;nbsp;batch macro tool, it is already sorted by the GroupingField and does not need to be sorted again. &amp;nbsp;Rather than adding a sort in we have actually reduced the&amp;nbsp;number&amp;nbsp;of sorts&amp;nbsp;the&amp;nbsp;module needs to do by one, thus gaining the saving in the run time that we see.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-3127367130668697616?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/3127367130668697616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/11/optimisation-quiz-answer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/3127367130668697616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/3127367130668697616'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/11/optimisation-quiz-answer.html' title='Optimisation Quiz Answer'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-3739852402668608625</id><published>2011-11-17T18:50:00.001-08:00</published><updated>2011-11-17T20:02:53.246-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alteryx'/><category scheme='http://www.blogger.com/atom/ns#' term='Sort'/><category scheme='http://www.blogger.com/atom/ns#' term='Optimisation'/><title type='text'>Optimisation Quiz</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A Friday quiz for you to test your Alteryx skills.  This is based on a real world module from a colleague at Alteryx which I was looking at earlier this week, and is a question about optimisation.&lt;br /&gt;&lt;br /&gt;I have isolated the particular section of the module which we were looking at and have two versions:  Module A and Module B. The question is simple: which module is faster, if either, and why?&lt;br /&gt;&lt;br /&gt;I've set up a poll on the right side of the site for you to cast your votes and will post the answer and explanation on Monday.&lt;br /&gt;&lt;br /&gt;So the 2 modules look like this (I flipped a coin to decide which was A or B so you can't to read anything into the labeling):&lt;br /&gt;&lt;br /&gt;Module A&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-NrC0jGfcKHU/TsXQ-Y0r9SI/AAAAAAAAE_4/WRXe6jJcFOg/s1600/Screen%2BShot%2B2011-11-17%2Bat%2B8.24.29%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-NrC0jGfcKHU/TsXQ-Y0r9SI/AAAAAAAAE_4/WRXe6jJcFOg/s400/Screen%2BShot%2B2011-11-17%2Bat%2B8.24.29%2BPM.png" width="353" /&gt;&lt;/a&gt;&lt;/div&gt;Module B&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-REu-qf8jbx8/TsXQ-iq3ggI/AAAAAAAAFAE/h5XKZipm_3c/s1600/Screen%2BShot%2B2011-11-17%2Bat%2B8.22.27%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-REu-qf8jbx8/TsXQ-iq3ggI/AAAAAAAAFAE/h5XKZipm_3c/s400/Screen%2BShot%2B2011-11-17%2Bat%2B8.22.27%2BPM.png" width="354" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The modules are identical apart from that single sort.  So effectively the question is does that sort make things faster, slower or make no difference?&lt;br /&gt;&lt;br /&gt;The input data is unsorted with about 10M records in my example (obviously any optimisation makes more of a difference when there is more work to be done.The purpose of the module is there is a large number of records with a grouping field attached (in this example there are 50 groups) which need to be run through a&amp;nbsp;process in batches.&lt;br /&gt;&lt;br /&gt;The summarise works out how many groups there are and feeds that into the control parameter of a batch macro.  The batch macro then uses the GroupBy feature to read records from its input in batches based on that control parameter.My example module just writes those records to a file, but for the question it does not matter what the batch process actually does, the answer is the same. &lt;br /&gt;&lt;br /&gt;So vote for your answer on the poll on the right and look out for the solution on Monday.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-3739852402668608625?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/3739852402668608625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/11/optimisation-quiz.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/3739852402668608625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/3739852402668608625'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/11/optimisation-quiz.html' title='Optimisation Quiz'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-NrC0jGfcKHU/TsXQ-Y0r9SI/AAAAAAAAE_4/WRXe6jJcFOg/s72-c/Screen%2BShot%2B2011-11-17%2Bat%2B8.24.29%2BPM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-6468696950341562653</id><published>2011-11-11T06:00:00.000-08:00</published><updated>2011-11-17T07:37:34.639-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Drivetimes'/><category scheme='http://www.blogger.com/atom/ns#' term='Alteryx'/><category scheme='http://www.blogger.com/atom/ns#' term='Alteryx 7.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Input/Output'/><category scheme='http://www.blogger.com/atom/ns#' term='Guzzler'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='On-Premise'/><title type='text'>Alteryx 7.0 - New Features Announced To Date</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://blogs.alteryx.com/engineworks/Misc%20Files/MapToolNewLink.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="212" src="http://www.alteryx.com/sites/default/files/blogs/engine-works/u15/map-changes-02.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;As I mentioned in my last post I think Alteryx 7.0 is going to be the most exciting release that I have seen (and that's not just because I have been working on it!)&lt;br /&gt;&lt;br /&gt;I thought it would be worth a brief re-cap of the new features announced so far (complete with links to the Alteryx Engine Works blog):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: red; font-size: large;"&gt;Guzzler Improvements&lt;/span&gt; &lt;/span&gt;(&lt;a href="http://blogs.alteryx.com/engineworks/Lists/Posts/Post.aspx?ID=102" target="_blank"&gt;link&lt;/a&gt;)&lt;br /&gt;Some improvements to the core drive time engine in Alteryx's functionality offering: &lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;i&gt;"which allows for more accurate drive time and drive radius calculations"&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: red; font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;XML Parsing&lt;/span&gt;&amp;nbsp;(&lt;a href="http://blogs.alteryx.com/engineworks/Lists/Posts/Post.aspx?ID=103" target="_blank"&gt;link&lt;/a&gt;)&lt;br /&gt;A feature that I know users have been asking for, for a long time. &amp;nbsp;Alteryx 7.0 sees XML support in the input tool along with a new XML parsing tool. &lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: red; font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;Alteryx web and the Private Cloud&lt;/span&gt;&amp;nbsp;(&lt;a href="http://blogs.alteryx.com/engineworks/Lists/Posts/Post.aspx?ID=104" target="_blank"&gt;link&lt;/a&gt;)&lt;br /&gt;Alteryx 6.2 saw the release of Alteryx web On-Premise solution, another hugely exciting development for Alteryx. &lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;i&gt;"It is an installable web application that allows end users to upload Alteryx wizards, manage users and run wizards all via a web browser."&lt;/i&gt;&lt;/span&gt; And being On-Premise clients can keep all of their data and modules secure on their on servers within their company. &amp;nbsp;Alteryx 7.0 promises more exciting features around &lt;i&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;"Permissions, Scheduling, Active Directory and viewing yxdbs and PCXML files."&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: red; font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;Alteryx Map Changes&lt;/span&gt;&amp;nbsp;(&lt;a href="http://blogs.alteryx.com/engineworks/Lists/Posts/Post.aspx?ID=105" target="_blank"&gt;link&lt;/a&gt;)&lt;br /&gt;This one is close to my heart as it is the main feature I have been working on since I joined Alteryx last February. &amp;nbsp;It is actually the second major re-write the mapping tool has seen and hopefully fulfills many of the requests we have received for mapping.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: red; font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;Input/Output Enhancements&lt;/span&gt;&amp;nbsp;(&lt;a href="http://blogs.alteryx.com/engineworks/Lists/Posts/Post.aspx?ID=107" target="_blank"&gt;link&lt;/a&gt;)&lt;br /&gt;A new split button and latest used files gives you faster access to your files and database connections. &amp;nbsp;Plus the new Alias feature to manage your data connections and passwords.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #676767; font-family: Arial, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h2 style="font-weight: normal; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 12px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: red; font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-6468696950341562653?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/6468696950341562653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/11/alteryx-70-new-features-announced-to.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6468696950341562653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6468696950341562653'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/11/alteryx-70-new-features-announced-to.html' title='Alteryx 7.0 - New Features Announced To Date'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>1</thr:total><georss:featurename>Boulder, CO, USA</georss:featurename><georss:point>40.0149856 -105.2705456</georss:point><georss:box>39.917697600000004 -105.4284741 40.1122736 -105.11261710000001</georss:box></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-6791565574218666994</id><published>2011-11-10T19:51:00.000-08:00</published><updated>2011-11-10T20:11:50.072-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chaos Reigns Within'/><category scheme='http://www.blogger.com/atom/ns#' term='Alteryx'/><category scheme='http://www.blogger.com/atom/ns#' term='Alteryx 7.0'/><title type='text'>Chaos Reigns Within</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Well it has been a rather long time since I have last posted here. &amp;nbsp;What can I say? &amp;nbsp;I've been busy. &lt;br /&gt;&lt;br /&gt;But I am back; and with a few changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-XnEGyidHlks/Tryag8NY3jI/AAAAAAAAE_I/frUQYHqPo0E/s1600/Downloads.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="180" src="http://4.bp.blogspot.com/-XnEGyidHlks/Tryag8NY3jI/AAAAAAAAE_I/frUQYHqPo0E/s320/Downloads.jpg" width="320" /&gt;&lt;/a&gt;First one is we have a name change. &amp;nbsp;"UK Alteryx User" just wasn't quite right: I'm not in the UK anymore and I'm not really a user anymore. &amp;nbsp;So I am proud to announce the new name "Chaos Reigns Within" and the new URL www.chaosreignswithin.com (don't worry all the old links should redirect just fine). &amp;nbsp;If you know what the new name means, then congratulations you can call yourself an advanced Alteryx user.&lt;br /&gt;&lt;br /&gt;Other changes you will notice are a restyle of&amp;nbsp;the&amp;nbsp;site and a legal disclaimer, which I can't say I really like, but that's the world we live in.&lt;br /&gt;&lt;br /&gt;Other than that I'm planning to post more regularly here and am looking forward to the release of Alteryx 7.0 next year which I think is going to the most exciting and feature packed release since I have been using the tool.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-6791565574218666994?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/6791565574218666994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/11/chaos-reigns-within.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6791565574218666994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6791565574218666994'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/11/chaos-reigns-within.html' title='Chaos Reigns Within'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-XnEGyidHlks/Tryag8NY3jI/AAAAAAAAE_I/frUQYHqPo0E/s72-c/Downloads.jpg' height='72' width='72'/><thr:total>2</thr:total><georss:featurename>Boulder, CO, USA</georss:featurename><georss:point>40.0149856 -105.2705456</georss:point><georss:box>39.9177036 -105.4284741 40.1122676 -105.11261710000001</georss:box></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-8531240300006453556</id><published>2011-05-01T16:23:00.000-07:00</published><updated>2011-05-01T16:23:36.345-07:00</updated><title type='text'>Solving Sudokus with Alteryx?</title><content type='html'>For today's post there has been a slight change of author, Adam suggested I blog about this as it fits in fairly well with&amp;nbsp;some&amp;nbsp;of his unusual applications&amp;nbsp;of Alteryx.&lt;br /&gt;&lt;br /&gt;So I guess I should introduce myself to start with, some of you will know me but I guess some of you won’t. Having the same surname as Adam isn’t a coincidence, we’re married and have been for about 4 years now. We both use Alteryx in our working lives and although I don’t quite think about things in the same way as Adam (not sure too many people do!) I also like to see and test what Alteryx is capable of.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ACpzDaJsg7o/Tbocnero8XI/AAAAAAAABi8/iMFCc64nbqY/s1600/Sudoku.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" j8="true" src="http://2.bp.blogspot.com/-ACpzDaJsg7o/Tbocnero8XI/AAAAAAAABi8/iMFCc64nbqY/s320/Sudoku.bmp" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;A while ago Adam and I tried to solve a puzzle from the New Scientist magazine using Alteryx. The puzzle revolved around being able to solve a Sudoku puzzle. There was obviously slightly more to it than just a Sudoku puzzle but being able to solve the Sudoku was a necessary part of it. We started thinking surely we can do that in Alteryx, Adam in his ever confident fashion, Alteryx can do anything! We soon realised it wasn’t really going to work out, a major problem being that we needed to be able to loop through our methodology. This was several months ago, and recently it come up again. Would we now be able to&amp;nbsp;solve sudoku’s using Alteryx; with the latest version that includes iterative macros it seems like it might be possible!&lt;br /&gt;&lt;br /&gt;So below is my attempt to make Alteryx solve sudokus, it does work; but only on ‘simple’ puzzles. &lt;br /&gt;&lt;br /&gt;&lt;iframe title ="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:98px;height:115px;padding:0;background-color:#fcfcfc;" src="http://cid-7754be96cf065e9a.office.live.com/embedicon.aspx/.Public/Sudoku.yxzp"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;As it turns out there is a lot of methodology behind solving sudokus and although I think it would be possible to write a module which would solve any puzzle (that is solvable) I haven’t actually implemented all the different techniques (yet!). During my investigations on this topic I have come across this website which appears to detail all the different methods needed for solving a Sudoku, there are quite a few and I haven’t read them all but the ones I have seem to be explained quite thoroughly. &lt;a href="http://www.sudokuwiki.org/sudoku.htm"&gt;www.sudokuwiki.org/sudoku.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My module uses an iterative macro so that it can loop round and solve cells and then run through again and hopefully solve more, until it either has managed to solve the Sudoku or gets to a point where it is never going to be able to solve it. (If it can't solve at least one cell per run through then it is not making progress and will never be able to solve it, hence the iterative macro is limited to 80 runs through.) Although it would have been nice to be able to produce something which can solve any puzzle, at the moment this is the best I’ve got, I may add to it over time but in the mean time it has been a good learning experience for getting to know iterative macros. (And it’s given my brain a work out trying to&lt;br /&gt;logically think how to go about solving a Sudoku in Alteryx!)&lt;br /&gt;&lt;br /&gt;Hope you’ve enjoyed this somewhat pointless blog post and if anyone else wants to have a guest&amp;nbsp;spot on Adam’s UK Alteryx blog then just get in touch with him.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-8531240300006453556?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/8531240300006453556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/05/solving-sudokus-with-alteryx.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8531240300006453556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8531240300006453556'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/05/solving-sudokus-with-alteryx.html' title='Solving Sudokus with Alteryx?'/><author><name>Elizabeth Riley</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ACpzDaJsg7o/Tbocnero8XI/AAAAAAAABi8/iMFCc64nbqY/s72-c/Sudoku.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-8997112505902557724</id><published>2011-04-24T18:36:00.000-07:00</published><updated>2011-04-24T18:36:24.081-07:00</updated><title type='text'>Easter Eggs</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Not the &lt;a href="http://en.wikipedia.org/wiki/Easter_egg"&gt;chocolate&lt;/a&gt; type, but the &lt;a href="http://en.wikipedia.org/wiki/Easter_egg_(media)"&gt;hidden game&lt;/a&gt; type. &amp;nbsp;Did you know that Alteryx has two?&lt;br /&gt;&lt;br /&gt;If you want to find them then the About screen should be your starting point.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Happy Hunting!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-8997112505902557724?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/8997112505902557724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/04/easter-eggs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8997112505902557724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8997112505902557724'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/04/easter-eggs.html' title='Easter Eggs'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-3022510794210528675</id><published>2011-04-21T16:44:00.000-07:00</published><updated>2011-04-21T16:44:40.685-07:00</updated><title type='text'>A Spatial Challenge - Part 2</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;So here is my module:&lt;br /&gt;&lt;br /&gt;&lt;iframe title ="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:98px;height:115px;padding:0;background-color:#fcfcfc;" src="http://cid-7754be96cf065e9a.office.live.com/embedicon.aspx/.Public/ShadedBoundries.yxzp"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;It works by creating 5 internal buffer polygons of decreasing size and then setting decreasing opacity to provide the fade effect.&lt;br /&gt;&lt;br /&gt;It has been pointed out since I wrote this that it is also possible to use negative buffers, which would be another way to create the internal polygons.&lt;br /&gt;&lt;br /&gt;How I set the colors so that no adjacent counties have the same color is a post for another day...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-3022510794210528675?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/3022510794210528675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/04/spatial-challenge-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/3022510794210528675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/3022510794210528675'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/04/spatial-challenge-part-2.html' title='A Spatial Challenge - Part 2'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-2825026407212783254</id><published>2011-04-11T19:25:00.000-07:00</published><updated>2011-04-11T19:25:36.983-07:00</updated><title type='text'>A Spatial Challenge</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;There is a shop on Pearl street in Boulder which sells antique maps.﻿ While I was browsing through their stock on Saturday and reminding myself I really don't need to buy an antique map for $100, I spotted a rather neat way of coloring polygons. Which it turns out is a reasonably interesting challenge to reproduce in Alteryx. The below is my reproduction from Alteryx, complete with aerial photographs to bring it a bit more up to date&amp;nbsp;than the antique version I've copied (it shows the counties of Colorado if you were wondering).&amp;nbsp; &lt;br /&gt;&lt;br /&gt;If you feel like giving your Alteryx spatial skills a workout then have a go at creating the effect yourself.&amp;nbsp; I'll post my module later this week once I have had time to annotate it.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-0gFOdJ4nK9c/TaOD5ryV2JI/AAAAAAAAEvw/fe_W51CSZDA/s1600/untitled2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://2.bp.blogspot.com/-0gFOdJ4nK9c/TaOD5ryV2JI/AAAAAAAAEvw/fe_W51CSZDA/s640/untitled2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-2825026407212783254?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/2825026407212783254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/04/spatial-challenge.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/2825026407212783254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/2825026407212783254'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/04/spatial-challenge.html' title='A Spatial Challenge'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-0gFOdJ4nK9c/TaOD5ryV2JI/AAAAAAAAEvw/fe_W51CSZDA/s72-c/untitled2.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-8080308758855903369</id><published>2011-04-01T12:38:00.000-07:00</published><updated>2011-04-01T12:38:26.537-07:00</updated><title type='text'>Inspiring Fractals</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://3.bp.blogspot.com/-Z2YAI7zpMSk/TZX15uFLvKI/AAAAAAAAEvo/aJoE-Fz7sVs/s1600/d60295901549e33f3ec263ce206dc528.png" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="319" r6="true" src="http://3.bp.blogspot.com/-Z2YAI7zpMSk/TZX15uFLvKI/AAAAAAAAEvo/aJoE-Fz7sVs/s320/d60295901549e33f3ec263ce206dc528.png" width="320" /&gt;&lt;/a&gt;I wanted to start this post by saying how great it was to see everyone at Inspire 2011. I thought it was an amazing conference and really enjoyed seeing what everyone has been doing with Alteryx over the last year.&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;This module was inspired by a particularly interesting&amp;nbsp;conversation I had with a client&amp;nbsp;at the closing reception, where we were talking about the new location optimizer macro type and then got on to talking about Fractals.&amp;nbsp; Which in turn was the inspiration for this module.&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;A forewarning to those of you who thought this years Grand Prix questions didn't have a direct business application, you might not appreciate this one.&amp;nbsp; For those of you who like to see the edges of what Alteryx can do then I present the Mandelbrot set produced by Alteryx.&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.office.live.com/embedicon.aspx/.Public/MandelbrotSet.yxzp" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is actually a great example of how the iterative macro works and though lacking a "direct" business application a good learning example of this new feature.&amp;nbsp; The other point of interest is I have used the map tool with 1,000,000 size 1 points effectively as a "screen" to&amp;nbsp;plot my results on (I'm sure there's a business use for this idea somewhere...).&lt;br /&gt;&lt;br /&gt;If you want to read more about the Mandelbrot set.&amp;nbsp; Wikipedia has a good &lt;a href="http://en.wikipedia.org/wiki/Mandelbrot_set"&gt;article&lt;/a&gt;, including the &lt;a href="http://en.wikipedia.org/wiki/Mandelbrot_set#For_programmers"&gt;algorithm&lt;/a&gt; I have reproduced in Atleryx.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-8080308758855903369?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/8080308758855903369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/04/inspiring-fractals.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8080308758855903369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8080308758855903369'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/04/inspiring-fractals.html' title='Inspiring Fractals'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Z2YAI7zpMSk/TZX15uFLvKI/AAAAAAAAEvo/aJoE-Fz7sVs/s72-c/d60295901549e33f3ec263ce206dc528.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-4652477245168341459</id><published>2011-02-25T05:23:00.000-08:00</published><updated>2011-02-25T05:23:56.790-08:00</updated><title type='text'>New Beginnings</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-DdFFish9bU8/TWczYh5qNmI/AAAAAAAAEvg/NNueM9g59pY/s1600/uk_usa_flag.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="187" src="http://2.bp.blogspot.com/-DdFFish9bU8/TWczYh5qNmI/AAAAAAAAEvg/NNueM9g59pY/s320/uk_usa_flag.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;A slightly different post to the usual content of this blog. &amp;nbsp;More of an&amp;nbsp;announcement&amp;nbsp;perhaps. &lt;br /&gt;&lt;br /&gt;On Monday this week (a year and a day since I started this blog) I started a new job; as a software developer in Boulder, CO. &amp;nbsp;Working on (you guessed it) Alteryx Engine. &lt;br /&gt;&lt;br /&gt;I feel like I should be saying I'm sorry that this blog won't be the independent voice on Alteryx that it once was. &amp;nbsp;But who am I kidding? &amp;nbsp;I have loved this product since the day I started using it and I started this blog to share ideas and push the boundaries of what can be done with the tool. &amp;nbsp;And in that respect things aren't going to change much round here. &lt;br /&gt;&lt;br /&gt;The move to Alteryx was in many ways a natural one, I think Alteryx is an amazing product and I want to be part of developing it and making it even better. &amp;nbsp;As always I welcome your comments,&amp;nbsp;feedback and ideas; and hope to see many of you in a little over a week at Inspire 2011.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-4652477245168341459?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/4652477245168341459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/02/new-beginnings.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4652477245168341459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4652477245168341459'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/02/new-beginnings.html' title='New Beginnings'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-DdFFish9bU8/TWczYh5qNmI/AAAAAAAAEvg/NNueM9g59pY/s72-c/uk_usa_flag.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-6592822540508287003</id><published>2011-01-11T00:05:00.000-08:00</published><updated>2011-01-11T00:05:00.690-08:00</updated><title type='text'>Alteryx 2011 - New Features - New Charting functionality</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TR2wWeUQeGI/AAAAAAAAEvI/M0xGZf_pn4Y/s1600/Alteryx2011Charting.JPG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" n4="true" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TR2wWeUQeGI/AAAAAAAAEvI/M0xGZf_pn4Y/s200/Alteryx2011Charting.JPG" width="198" /&gt;&lt;/a&gt;&lt;/div&gt;Alteryx 2011 brings a brand new shiny charting tool. And very nice it is too!&amp;nbsp; It has a host of new chart types and a range of new options.&amp;nbsp; I'm not going to go through all the options in detail here, but instead give you a brief preview of some charts I have produced with it. &lt;br /&gt;&lt;br /&gt;It currently sits in the Laboratory section of the ToolBox which according to the help file is for &lt;em&gt;"new tools that have documented, known issues or are not feature complete.&amp;nbsp; They have been tested for stability and will be optimized in stable program updates".&lt;/em&gt;&amp;nbsp; Though I have to say I didn't come across any issues while creating the below samples.&lt;br /&gt;&lt;br /&gt;Also check out the Alteryx blog on Box and Whisker Charts &lt;a href="http://blogs.alteryx.com/engineworks/Lists/Posts/Post.aspx?ID=93"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TRywVHX24aI/AAAAAAAAEuY/cYd4fyAawNY/s1600/8ae8c3b0c715ac905940b6849e8187e1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" n4="true" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TRywVHX24aI/AAAAAAAAEuY/cYd4fyAawNY/s320/8ae8c3b0c715ac905940b6849e8187e1.png" width="320" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TRywV5j9OQI/AAAAAAAAEuc/PILV6bNM0J0/s1600/40fbad618901a597f4dc7ded417e97cf.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" n4="true" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TRywV5j9OQI/AAAAAAAAEuc/PILV6bNM0J0/s320/40fbad618901a597f4dc7ded417e97cf.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TRywWmnhYYI/AAAAAAAAEug/EZSesO19tMc/s1600/52a7dbd42e5c4c25a07f6584da571718.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" n4="true" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TRywWmnhYYI/AAAAAAAAEug/EZSesO19tMc/s320/52a7dbd42e5c4c25a07f6584da571718.png" width="320" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_TF2AWY4wez4/TRywXJTJi5I/AAAAAAAAEuk/Wcu1LFtjvqg/s1600/71fb906944037e167e02e2c077c5e019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" n4="true" src="http://4.bp.blogspot.com/_TF2AWY4wez4/TRywXJTJi5I/AAAAAAAAEuk/Wcu1LFtjvqg/s320/71fb906944037e167e02e2c077c5e019.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TRywXlZrTHI/AAAAAAAAEuo/n6532_kgPRc/s1600/89d8d3b2aab093cd818130cedfc033a9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" n4="true" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TRywXlZrTHI/AAAAAAAAEuo/n6532_kgPRc/s320/89d8d3b2aab093cd818130cedfc033a9.png" width="320" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TRywX6chFuI/AAAAAAAAEus/xJxx32aiY3E/s1600/1215caa0113adda9e5cb56382761e904.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" n4="true" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TRywX6chFuI/AAAAAAAAEus/xJxx32aiY3E/s320/1215caa0113adda9e5cb56382761e904.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TF2AWY4wez4/TRywY3Hs9EI/AAAAAAAAEuw/0fAMN307fK8/s1600/63467b5fa5dbdd5d3d7d14efa41bc6ac.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" n4="true" src="http://4.bp.blogspot.com/_TF2AWY4wez4/TRywY3Hs9EI/AAAAAAAAEuw/0fAMN307fK8/s320/63467b5fa5dbdd5d3d7d14efa41bc6ac.png" width="320" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TRywZdHnp8I/AAAAAAAAEu0/uONklagUqh8/s1600/85325a1bb8a11374872a12974b2e8cc1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" n4="true" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TRywZdHnp8I/AAAAAAAAEu0/uONklagUqh8/s320/85325a1bb8a11374872a12974b2e8cc1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TRywvQU5hGI/AAAAAAAAEu4/ZoYq8ZLboBY/s1600/b630d30de03985b18d754d4874108c26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" n4="true" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TRywvQU5hGI/AAAAAAAAEu4/ZoYq8ZLboBY/s320/b630d30de03985b18d754d4874108c26.png" width="320" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_TF2AWY4wez4/TRywv_p0PQI/AAAAAAAAEu8/RHETCAv40Zs/s1600/e9efb34b9616f52c9facb724f4146a28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" n4="true" src="http://4.bp.blogspot.com/_TF2AWY4wez4/TRywv_p0PQI/AAAAAAAAEu8/RHETCAv40Zs/s320/e9efb34b9616f52c9facb724f4146a28.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TRywwkD3gkI/AAAAAAAAEvA/QHZO_fxI0MU/s1600/f739065ce77add22f3669ec2e9930969.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" n4="true" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TRywwkD3gkI/AAAAAAAAEvA/QHZO_fxI0MU/s320/f739065ce77add22f3669ec2e9930969.png" width="320" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TRywxP-t6JI/AAAAAAAAEvE/UsZuN1UZ-7M/s1600/fbe280268c669fe8ea1e1b31d313fc23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" n4="true" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TRywxP-t6JI/AAAAAAAAEvE/UsZuN1UZ-7M/s320/fbe280268c669fe8ea1e1b31d313fc23.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-6592822540508287003?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/6592822540508287003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/01/alteryx-2011-new-features-new-charting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6592822540508287003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6592822540508287003'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/01/alteryx-2011-new-features-new-charting.html' title='Alteryx 2011 - New Features - New Charting functionality'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TF2AWY4wez4/TR2wWeUQeGI/AAAAAAAAEvI/M0xGZf_pn4Y/s72-c/Alteryx2011Charting.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-2247666197260016924</id><published>2011-01-07T00:05:00.000-08:00</published><updated>2011-01-07T00:05:00.476-08:00</updated><title type='text'>Alteryx 2011 - New Features - Tree Question in Wizard/Macros</title><content type='html'>Alteryx 2011 brings a great new feature to the wizard or macro creator's arsenal: the Tree question type.&amp;nbsp; It allows you to present a selection of options to the user in a hierarchical structure.&lt;br /&gt;&lt;br /&gt;It is added in the same way as any other question:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TRslZGsX8XI/AAAAAAAAEto/CdhmGR1xVQQ/s1600/AddTree.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" n4="true" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TRslZGsX8XI/AAAAAAAAEto/CdhmGR1xVQQ/s1600/AddTree.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;Data Source&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It&amp;nbsp;has five options in terms of choosing its source data:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Allocate Geography&lt;/li&gt;&lt;li&gt;Allocate Variables&lt;/li&gt;&lt;li&gt;File System Directory&lt;/li&gt;&lt;li&gt;Custom XML&lt;/li&gt;&lt;li&gt;Custom File/Database&lt;/li&gt;&lt;/ul&gt;Allocate geography and variables will display tree views of the allocate geographies or variables from the allocate data sets on a users machine:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TRs0zEesiBI/AAAAAAAAEts/wZ1MWv_cGuU/s1600/AllocateTree.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" n4="true" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TRs0zEesiBI/AAAAAAAAEts/wZ1MWv_cGuU/s1600/AllocateTree.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;File System Directory will display a tree view of files in a folder (Note: Only Files are selectable):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TF2AWY4wez4/TRs1qQGj_AI/AAAAAAAAEtw/xU3dAHF_rHs/s1600/FileTree.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" n4="true" src="http://4.bp.blogspot.com/_TF2AWY4wez4/TRs1qQGj_AI/AAAAAAAAEtw/xU3dAHF_rHs/s1600/FileTree.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Custom XML lets you define your own tree using a XML file.&amp;nbsp; The XML needs to have the following structure:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TRxIlyPjoHI/AAAAAAAAEt0/p4THnruDl7k/s1600/TreeXML.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" n4="true" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TRxIlyPjoHI/AAAAAAAAEt0/p4THnruDl7k/s1600/TreeXML.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The n attributes are the display names and the k attributes are the key values which get passed to your module.&amp;nbsp; The v elements define the tree structure or hierarchy.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Which results in the following tree﻿ structure:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TF2AWY4wez4/TRxMy00DcqI/AAAAAAAAEt4/xd6l2uHKdxU/s1600/CustomTree.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" n4="true" src="http://4.bp.blogspot.com/_TF2AWY4wez4/TRxMy00DcqI/AAAAAAAAEt4/xd6l2uHKdxU/s1600/CustomTree.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The final option allows population of the tree from a custom file or database.&amp;nbsp; The structure needs to be like the below﻿:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TRxU7uHI1xI/AAAAAAAAEt8/031P_rDrfCg/s1600/FileTree.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" n4="true" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TRxU7uHI1xI/AAAAAAAAEt8/031P_rDrfCg/s1600/FileTree.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;This gives the same tree as with my custom XML example above.&amp;nbsp; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&amp;nbsp;There is an important difference between using a file/database source and ﻿a XML source.&amp;nbsp; In an XML source you define the tree structure using the v elements; the names and keys can be whatever you want.&amp;nbsp; In a file/database source it is the key values which define the tree structure; so in this example the fact that 0&amp;nbsp;is a substring of 01 means that Delaware sits under USA in the tree structure.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Additional Options&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;There are two additional options to set up.&lt;/div&gt;&lt;ul&gt;&lt;li class="separator" style="clear: both; text-align: left;"&gt;A check box which determines whether a single or multiple items can be selected.&lt;/li&gt;&lt;li class="separator" style="clear: both; text-align: left;"&gt;A numeric value which determines how many lines the tree&amp;nbsp;will display before needing to scroll.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Return Values&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;If you are using an allocate data source for your tree there are two options for the return data, selectable from the question's properties:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Save Values as XML - returns values in an XML format suitable for updating allocate tools using an "update raw XML" action.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Save Values as Allocate Workspace snippet - does what it says and can be used to update allocate tools via an "update/change value" action.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;If you have a File System Directory data source the selected files are returned with full paths separated by new line characters.&amp;nbsp; This could be used to update a dynamic input using a text to columns tool as in the below example:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TRxqtgPSo7I/AAAAAAAAEuA/BUE40E4JMrM/s1600/TreeFileUpdate.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="432" n4="true" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TRxqtgPSo7I/AAAAAAAAEuA/BUE40E4JMrM/s640/TreeFileUpdate.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;When you get to a custom data source things begin to get a little more challenging for the macro/wizard developer.&amp;nbsp; The difficulty is that the question will return the minimum possible data to represent the options selected and does not return any indication of hierarchy.&amp;nbsp; So still using my custom XML example above:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"&gt;&lt;img border="0" n4="true" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TRxv2MpsV0I/AAAAAAAAEuE/ieAolELnxZk/s1600/tree1.JPG" /&gt;&lt;/div&gt;﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿ &lt;br /&gt;Returns &lt;span style="font-family: inherit;"&gt;011&lt;span style="font-family: Arial;"&gt;¶&lt;/span&gt;013&lt;span style="font-family: Arial;"&gt;¶&lt;/span&gt;021&lt;span style="font-family: Arial;"&gt;¶024&lt;span style="font-family: Arial;"&gt;¶025&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TRxv3VwAxQI/AAAAAAAAEuI/mrceKtBRm8I/s1600/tree2.JPG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" n4="true" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TRxv3VwAxQI/AAAAAAAAEuI/mrceKtBRm8I/s1600/tree2.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Returns &lt;span style="font-family: inherit;"&gt;01&lt;span style="font-family: Arial;"&gt;¶&lt;/span&gt;021&lt;span style="font-family: Arial;"&gt;¶024&lt;span style="font-family: Arial;"&gt;¶025&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TRxv45zaHpI/AAAAAAAAEuM/GQG-kRkL2LQ/s1600/tree3.JPG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" n4="true" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TRxv45zaHpI/AAAAAAAAEuM/GQG-kRkL2LQ/s1600/tree3.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;Returns 0&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now if you have data at County level, which you wish to filter based on the user's selection how do you deal with these different cases?&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The best solution I have at the moment is a filter updating with an "update/change value"&amp;nbsp;action using "Update using a formula" with the below formula:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;br /&gt;'[Key] in ("' + REGEX_Replace([Custom XML Tree View], '\n', '","') + '")' + &lt;br /&gt;' or left([Key],2) in ("' + REGEX_Replace([Custom XML Tree View], '\n', '","') + '")' +&lt;br /&gt;' or left([Key],1) in ("' + REGEX_Replace([Custom XML Tree View], '\n', '","') + '")' &lt;br /&gt;&amp;nbsp; &lt;br /&gt;The REGEX_Replace([Custom XML Tree View], '\n', '","') part converts the newline separated list to a comma separated quote qualified list and the three "in" statements check at the three levels of the hierarchy.&lt;br /&gt;&lt;br /&gt;As always if you have a better solution or any other comments feel free to post&amp;nbsp;below.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-2247666197260016924?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/2247666197260016924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/01/alteryx-2011-new-features-tree-question.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/2247666197260016924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/2247666197260016924'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/01/alteryx-2011-new-features-tree-question.html' title='Alteryx 2011 - New Features - Tree Question in Wizard/Macros'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TF2AWY4wez4/TRslZGsX8XI/AAAAAAAAEto/CdhmGR1xVQQ/s72-c/AddTree.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-5384166670938953538</id><published>2011-01-04T00:05:00.000-08:00</published><updated>2011-01-04T00:05:00.883-08:00</updated><title type='text'>Alteryx 2011 - New Features - New Spatial Functions</title><content type='html'>Alteryx 2011 adds two new spatial functions to the formula toolbox:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ST_CreateLine(point1, point2, ...)&lt;/li&gt;&lt;li&gt;ST_CreatePolygon(obj1, obj2, ...)&lt;/li&gt;&lt;/ul&gt;Which pretty much do what they say.&lt;br /&gt;&lt;br /&gt;So ST_CreateLine(ST_CreatePoint(1,1), ST_CreatePoint(1,2), ST_CreatePoint(2,2),&amp;nbsp;&amp;nbsp;ST_CreatePoint(2,1)) gives us&amp;nbsp;a spatial line:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TRyZyvl1btI/AAAAAAAAEuQ/bcoDoVjakSw/s1600/Line.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" n4="true" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TRyZyvl1btI/AAAAAAAAEuQ/bcoDoVjakSw/s320/Line.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;and ST_CreatePolygon(ST_CreatePoint(1,1), ST_CreatePoint(1,2), ST_CreatePoint(2,2), ST_CreatePoint(2,1)) gives us a polygon:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TRyZ1ApXi0I/AAAAAAAAEuU/sOIv-G1rvVY/s1600/Polygon.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" n4="true" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TRyZ1ApXi0I/AAAAAAAAEuU/sOIv-G1rvVY/s320/Polygon.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Great for creating your own charts (e.g. &lt;a href="http://ukalteryxuser.blogspot.com/2010/09/gantt-charts.html"&gt;Gannt&lt;/a&gt; or &lt;a href="http://cosharepoint.extendthereach.com/Public/AlteryxTeamBlog/Lists/Posts/Post.aspx?ID=73"&gt;Polar﻿&lt;/a&gt;) or other &lt;a href="http://ukalteryxuser.blogspot.com/2010/11/inspired-ingenuity-or-overly-engineered_10.html"&gt;interesting&lt;/a&gt; uses of Alteryx's spatial functions.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-5384166670938953538?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/5384166670938953538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2011/01/alteryx-2011-new-features-new-spatial.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/5384166670938953538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/5384166670938953538'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2011/01/alteryx-2011-new-features-new-spatial.html' title='Alteryx 2011 - New Features - New Spatial Functions'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_TF2AWY4wez4/TRyZyvl1btI/AAAAAAAAEuQ/bcoDoVjakSw/s72-c/Line.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-8146888835827418721</id><published>2010-12-31T00:25:00.000-08:00</published><updated>2010-12-31T00:25:53.623-08:00</updated><title type='text'>Alteryx 2011 - New Features - Connection Progress</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TRSYmjSn81I/AAAAAAAAEtg/XVvS1laem4c/s1600/Alteryx2011ConnectionProgress.PNG" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="303" n4="true" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TRSYmjSn81I/AAAAAAAAEtg/XVvS1laem4c/s320/Alteryx2011ConnectionProgress.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;I don't know how many Alteryx users are familiar with &lt;a href="http://msdn.microsoft.com/en-us/library/ms141026.aspx"&gt;Microsoft's SQL Server Integration Services (SSIS)&lt;/a&gt;?&amp;nbsp; It is Mircosoft's attempt at an Alteryx Engine type tool which I could write a whole article about.&amp;nbsp; But I'm not going to risk boring you with what I see as SSIS's shortcomings.&amp;nbsp; All I will say is I was very disappointed with SSIS when it was released and when I started using Alteryx I never looked back.&lt;br /&gt;&lt;br /&gt;However this time last year there were two features of SSIS which I thought Alteryx lacked.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The first was the ability to hide away sections of the module in collapsible sections.&amp;nbsp; At Extend 2010 Ned demonstrated this same functionality in Alteryx courtesy of Tool Containers.&amp;nbsp; After that demo I mentioned to Ned that now there was only one thing which I thought was better about SSIS than Alteryx, namely the displaying of record counts on data connections.&lt;br /&gt;&lt;br /&gt;Well now in Alteryx 2011 we have connection progress in real time as data flows through them.&amp;nbsp; These are a great new feature and allow users to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;See progress of the module more easily&lt;/li&gt;&lt;li&gt;See mistakes in their module before it completes processing&lt;/li&gt;&lt;li&gt;Easily check joins and filters are behaving as expected without needing to cross reference to the log&lt;/li&gt;&lt;li&gt;Identify inefficiencies in their modules&lt;/li&gt;&lt;/ul&gt;The below video shows them in action:&lt;br /&gt;&lt;br /&gt;&lt;object height="516" width="638"&gt;&lt;param name="movie" value="http://www.youtube.com/v/WfS23yoBgrE?hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/WfS23yoBgrE?hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="638" height="516"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-8146888835827418721?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/8146888835827418721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/12/alteryx-2011-new-features-connection.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8146888835827418721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8146888835827418721'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/12/alteryx-2011-new-features-connection.html' title='Alteryx 2011 - New Features - Connection Progress'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TF2AWY4wez4/TRSYmjSn81I/AAAAAAAAEtg/XVvS1laem4c/s72-c/Alteryx2011ConnectionProgress.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-8083742249091221232</id><published>2010-12-28T02:50:00.000-08:00</published><updated>2010-12-28T02:50:02.828-08:00</updated><title type='text'>Alteryx 2011 - New Features - Keyboard Shortcuts</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TRm_BSebHHI/AAAAAAAAEtk/gpuwnpo2Q7c/s1600/Keyboard.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TRm_BSebHHI/AAAAAAAAEtk/gpuwnpo2Q7c/s320/Keyboard.JPG" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;This was going to be a post on the new keyboard shortcuts available in Alteryx 2011, but as I was writing it I found that there were already some keyboard shortcuts which I didn't know about in Alteryx 5.0.&amp;nbsp; So I thought I would make this&amp;nbsp;a complete list of all the keyboard shortcuts available in Alteryx (for those of you who like that kind of thing...)&lt;br /&gt;&lt;br /&gt;Ctrl+N - New Module&lt;br /&gt;Ctrl+O - Open Module&lt;br /&gt;Crtl+S - Save Module&lt;br /&gt;Crtl+R - Run Module/Cancel Module&lt;br /&gt;&lt;br /&gt;F1 - Help on what is selected&lt;br /&gt;F5 - Refresh Config&lt;br /&gt;&lt;br /&gt;Crtl+Z - Undo&lt;br /&gt;Ctrl+Y - Redo&lt;br /&gt;&lt;br /&gt;Ctrl+X - Cut&lt;br /&gt;Ctrl+C - Copy&lt;br /&gt;Ctrl+V - Paste&lt;br /&gt;&lt;br /&gt;Del&amp;nbsp; - Delete what is selected&lt;br /&gt;&lt;br /&gt;Ctrl+F - Find Tool&lt;br /&gt;&lt;br /&gt;Ctrl+Tab - Switch between open modules&lt;br /&gt;&lt;br /&gt;Ctrl+Mouse Scroll Wheel - Zoom in/out&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;New in Alteryx 2011&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Ctrl+Alt+B - Show Toolbar&lt;br /&gt;Ctrl+Alt+T - Show Toolbox&lt;br /&gt;Ctrl+Alt+V - Show Overview&lt;br /&gt;Ctrl+Alt+O - Show Output Window&lt;br /&gt;Ctrl+Alt+P - Show Properties Window&lt;br /&gt;&lt;br /&gt;Please let me know if there are any more that I have missed off the list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-8083742249091221232?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/8083742249091221232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/12/alteryx-2011-new-features-keyboard.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8083742249091221232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8083742249091221232'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/12/alteryx-2011-new-features-keyboard.html' title='Alteryx 2011 - New Features - Keyboard Shortcuts'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TF2AWY4wez4/TRm_BSebHHI/AAAAAAAAEtk/gpuwnpo2Q7c/s72-c/Keyboard.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-911021377229348167</id><published>2010-12-22T13:29:00.000-08:00</published><updated>2010-12-22T13:29:50.641-08:00</updated><title type='text'>Alteryx 2011 Released</title><content type='html'>A slightly belated post due to my busy life at the moment, but no less exciting for the delay.&amp;nbsp;&amp;nbsp;Alteryx 2011 is now released!&amp;nbsp; Check out the offical blog &lt;a href="http://blogs.alteryx.com/engineworks/Lists/Posts/Post.aspx?ID=91"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It is fully rebranded with the new Alteryx brand colors and logo which look great:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TRIKwD4c-cI/AAAAAAAAEtY/TvGru75MXrg/s1600/Alteryx2011Branding.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" n4="true" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TRIKwD4c-cI/AAAAAAAAEtY/TvGru75MXrg/s1600/Alteryx2011Branding.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It comes with a whole host of exciting new features which&amp;nbsp;are going to enable users to do more with Alteryx and do things more easily!&lt;br /&gt;&lt;br /&gt;Some of the new features include (follow the links for more details):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.alteryx.com/engineworks/Lists/Posts/Post.aspx?ID=92"&gt;Iterative macros&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Tool containers&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.alteryx.com/engineworks/Lists/Posts/Post.aspx?ID=86"&gt;Record counts on connections&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Enhanced macro and wizard editing&lt;/li&gt;&lt;li&gt;New charting tool with new chart types including a &lt;a href="http://blogs.alteryx.com/engineworks/Lists/Posts/Post.aspx?ID=93"&gt;box and whisker chart&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Treeview control for macros and wizards&lt;/li&gt;&lt;li&gt;KML read support&lt;/li&gt;&lt;li&gt;Solocast tools&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.alteryx.com/engineworks/Lists/Posts/Post.aspx?ID=85"&gt;Document Constants&lt;/a&gt; (I can see these transforming how macros and wizards are built)&lt;/li&gt;&lt;li&gt;Module packager&lt;/li&gt;&lt;/ul&gt;Looks like it's going to be an exciting release!&amp;nbsp; Look out for blog posts on some of the new features here when I have a bit more time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-911021377229348167?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/911021377229348167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/12/alteryx-2011-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/911021377229348167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/911021377229348167'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/12/alteryx-2011-released.html' title='Alteryx 2011 Released'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TF2AWY4wez4/TRIKwD4c-cI/AAAAAAAAEtY/TvGru75MXrg/s72-c/Alteryx2011Branding.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-4744630039470722359</id><published>2010-11-10T22:54:00.001-08:00</published><updated>2010-11-11T04:12:22.961-08:00</updated><title type='text'>Inspired Ingenuity or Overly Engineered? (Part 2)</title><content type='html'>So I think my solution was probably inspired somewhat by my gantt&amp;nbsp;chart&amp;nbsp;&lt;a href="http://ukalteryxuser.blogspot.com/2010/09/gantt-charts.html"&gt;module&lt;/a&gt;. &amp;nbsp;I was trying to&amp;nbsp;visualise&amp;nbsp;the problem and&amp;nbsp;realised I could actually turn the problem into a spatial one and then use Alteryx's&amp;nbsp;spatial&amp;nbsp;tools to solve it.&lt;br /&gt;&lt;br /&gt;So here it is:&lt;br /&gt;&lt;br /&gt;Imagine a rectangle for each task sitting on a time line (like a gantt chart but with all the tasks on one row).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TNurXZ06D_I/AAAAAAAAEs4/P99Ow2iaVOA/s1600/Tasks.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="120" px="true" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TNurXZ06D_I/AAAAAAAAEs4/P99Ow2iaVOA/s640/Tasks.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;If we make the length of the rectangles&amp;nbsp;proportional&amp;nbsp;to the length of the tasks, &amp;nbsp;then we can say the area of the rectangles represents the time taken for that task. &lt;br /&gt;&lt;br /&gt;Now imagine another rectangle on the same time line representing the&amp;nbsp;entire&amp;nbsp;reporting period. &amp;nbsp;The area of this rectangle (in green below)&amp;nbsp;represents the total time available.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TF2AWY4wez4/TNurubQrK7I/AAAAAAAAEs8/0NyJkIhqink/s1600/ReportingPeriod.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="126" px="true" src="http://4.bp.blogspot.com/_TF2AWY4wez4/TNurubQrK7I/AAAAAAAAEs8/0NyJkIhqink/s640/ReportingPeriod.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now if we cut the smaller task rectangles from the large reporting period rectangle, then the area remaining of the larger rectangle is the unused time.&lt;br /&gt;&lt;br /&gt;With the spatial tools of Alteryx, cutting one set of polygons from another is easy. &amp;nbsp;So that's what I did:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TNur7-g4T7I/AAAAAAAAEtA/mrM3oo9M4oo/s1600/Module.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" px="true" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TNur7-g4T7I/AAAAAAAAEtA/mrM3oo9M4oo/s1600/Module.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can download the module here:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.office.live.com/embedicon.aspx/.Public/OverlappingTasks^_UnusedTime.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;I think you'll agree a rather unique way of using the spatial capabilities of Alteryx in a way they were never designed for.&lt;br /&gt;&lt;br /&gt;So where does that leave my Occam's razor? &amp;nbsp;Well Ned has already sent me his solution and I have to say it doesn't involve any spatial tools and if I'd manage to think about the generate rows in the right way it would have been a quicker solution to implement than mine. &amp;nbsp;My module does run more quickly (0.9 seconds against 2.0 seconds on my machine) but the report only gets run once a month in the middle of the night so speed isn't really a necessity...&lt;br /&gt;&lt;br /&gt;You can download Ned's solution here:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.office.live.com/embedicon.aspx/.Public/OverlappingTasksUnusedTime^_Ned.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;I think this one is a simpler solution than mine and for somebody opening the module to make changes in the future somewhat less daunting. So, without the necessity of a fast runtime, by applying Occam's razor I think Ned's is the better solution.&lt;br /&gt;&lt;br /&gt;However having said that I hope that my solution has been interesting and might inspire some future spatial solutions to non-spatial&amp;nbsp;problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-4744630039470722359?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/4744630039470722359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/11/inspired-ingenuity-or-overly-engineered_10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4744630039470722359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4744630039470722359'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/11/inspired-ingenuity-or-overly-engineered_10.html' title='Inspired Ingenuity or Overly Engineered? (Part 2)'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TF2AWY4wez4/TNurXZ06D_I/AAAAAAAAEs4/P99Ow2iaVOA/s72-c/Tasks.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-2955237470893108273</id><published>2010-11-10T00:38:00.000-08:00</published><updated>2010-11-10T00:38:51.787-08:00</updated><title type='text'>Inspired Ingenuity or Overly Engineered?</title><content type='html'>Inspiring Ingenuity is one Alteryx's taglines and&amp;nbsp;I think&amp;nbsp;the module I will cover in this post is a great example of a way to solve a problem using the tools in a way they were never designed for. &amp;nbsp;However (and hence the title of&amp;nbsp;the&amp;nbsp;post) I wonder whether my solution is clever for the sake of being clever and in reality there is a simpler solution which I have just overlooked.&lt;br /&gt;&lt;br /&gt;I believe strongly in an "&lt;a href="http://en.wikipedia.org/wiki/Occam's_razor"&gt;Occam's Razor&lt;/a&gt;" approach to problem solving and Alteryx modules are no&amp;nbsp;exception. &amp;nbsp;Occam's Razor is stated in a number of forms and really relates to scientific hypotheses. &amp;nbsp;Wikipedia says&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;i&gt;The principle is popularly summarized as "the simplest explanation is usually the correct one."&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I've also heard it stated as "The simplest solution is the best solution". &amp;nbsp;Now this isn't quite the version I subscribe to. &amp;nbsp;Consider the example in Alteryx of needing to match against a large lookup file of several million rows on a regular basis. &amp;nbsp;Well the simplest solution would be two input tools, a join and browse. &amp;nbsp;But is that the best solution? &amp;nbsp;Well if the time it takes for the module to run is important to you, then no. &amp;nbsp;A better solution would be to load your master file into a Calgary dataset, index the columns you need to match on and then rebuild your module with an input tool, Calgary append and browse. &amp;nbsp;More work to set up, but in the end a better solution.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_TF2AWY4wez4/TNUkhphrdOI/AAAAAAAAEs0/3GuYl45GyT8/s1600/Pluralitas.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="122" src="http://4.bp.blogspot.com/_TF2AWY4wez4/TNUkhphrdOI/AAAAAAAAEs0/3GuYl45GyT8/s320/Pluralitas.jpg" width="320" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;So where does that leave our Occam's razor. &amp;nbsp;Well continue down the Wikipedia&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;article and we have this version&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px;"&gt;&lt;i&gt;"pluralitas non est ponenda sine necessitate"&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;i&gt;("plurality should not be posited without necessity")&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;in other words complexity in a solution should only be there if it is necessary. So in our above example we introduce the extra complexity of loading our data into Calgary to make our solution run faster.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;Which brings me to a question about my module. &amp;nbsp;Is the complexity of my solution necessary or can somebody think of a simpler solution?&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;First the problem:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;We have an Alteryx server which can run&amp;nbsp;up to&amp;nbsp;four Alteryx modules simultaneously. &amp;nbsp;Every time&amp;nbsp;a module is run the start and end time of that module is logged in a SQL server database, which is then used for looking at &amp;nbsp;how the server is being&amp;nbsp;utilized (using Alteryx to generate the reports of course). &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;So one of the metrics we are interested in is server utilization:&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&amp;nbsp;how much of the processing time of the server did we use last month? &amp;nbsp;How much more&amp;nbsp;capacity&amp;nbsp;have we got until we need to get a second server?&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;And the difficult question:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;How much time is the server completely idle?&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;If the tasks were non overlapping this would be as simple as calculating the time for each of the jobs and subtracting the total of these from the total time for the reporting period. But the tasks do overlap...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;I'm going to leave you to think about possible solutions and post my proposed solution in the next post.&amp;nbsp; If you want to have a go then I've provided my example data below to see if you can match my answer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.office.live.com/embedicon.aspx/.Public/OverlappingTasksUnusedTime^_StarterModule.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-2955237470893108273?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/2955237470893108273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/11/inspired-ingenuity-or-overly-engineered.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/2955237470893108273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/2955237470893108273'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/11/inspired-ingenuity-or-overly-engineered.html' title='Inspired Ingenuity or Overly Engineered?'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_TF2AWY4wez4/TNUkhphrdOI/AAAAAAAAEs0/3GuYl45GyT8/s72-c/Pluralitas.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-6600313104697490307</id><published>2010-11-01T01:10:00.000-07:00</published><updated>2010-11-01T01:10:07.349-07:00</updated><title type='text'>SAS Transpose</title><content type='html'>&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TM5xLxhTE6I/AAAAAAAAEsw/IaBJV1XutHY/s1600/SASTranspose_Var_and_ID.bmp" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="400" nx="true" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TM5xLxhTE6I/AAAAAAAAEsw/IaBJV1XutHY/s400/SASTranspose_Var_and_ID.bmp" width="216" /&gt;&lt;/a&gt;Last week I visited a client who had been trialling Alteryx.&amp;nbsp; The team who had been conducting the trial were SAS analysts and were particularly impressed by Alteryx's spatial capabilities.&amp;nbsp; At the end of the meeting I asked if there was anything which they thought they could do in SAS and not in Alteryx.&amp;nbsp; The reply was the only thing was that the transpose tool didn't really to seem to behave as they expected given their experience of SAS's Proc Transpose.&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;So this weekend I thought I would take a look at what the differences might be.&amp;nbsp; Now it has been a long time since I have written anything in SAS, so first step was a quick google to find out how the Proc Transpose tool worked.&amp;nbsp; I came across this excellent tutorial:&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://support.sas.com/resources/papers/proceedings09/060-2009.pdf"&gt;http://support.sas.com/resources/papers/proceedings09/060-2009.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;I decided I would recreate the lessons from this document using Alteryx.&amp;nbsp; Upon starting I realised why they had been having trouble, the Proc Transpose function of SAS is closer to an Alteryx cross tab than transpose,&amp;nbsp; but in actual fact to reproduce the results exactly Alteryx needs a transpose and cross tab tool.&amp;nbsp; &lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;Just to be clear it is not that Alteryx tools aren't as efficient as SAS they are just different and I have added an extra example to each lesson which I have titled "The Alteryx Way" which shows what I think an Alteryx analyst would do to transform the example data.&lt;br /&gt;&lt;br /&gt;I could have tried to turn my modules into a SAS Proc Transpose macro for Alteryx however I don't believe that would be the most efficient way of doing things in Alteryx.&amp;nbsp; I am not presenting these examples as the best way of doing things in Alteryx; more of a way for SAS analysts to get a handle on the differences between the two tools.&amp;nbsp; I think if you are going to program efficiently in any language you need to think about your solution in terms of how that language works.&lt;br /&gt;&lt;br /&gt;My example modules can be downloaded below:&lt;br /&gt;&lt;br /&gt;&lt;iframe title ="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:98px;height:115px;padding:0;background-color:#fcfcfc;" src="http://cid-7754be96cf065e9a.office.live.com/embedicon.aspx/.Public/SAS^_Transpose.zip"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;As always feel free to post any comments/questions here or e-mail me directly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-6600313104697490307?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/6600313104697490307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/11/sas-transpose.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6600313104697490307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6600313104697490307'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/11/sas-transpose.html' title='SAS Transpose'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TF2AWY4wez4/TM5xLxhTE6I/AAAAAAAAEsw/IaBJV1XutHY/s72-c/SASTranspose_Var_and_ID.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-92879526847479496</id><published>2010-10-19T05:23:00.000-07:00</published><updated>2010-10-19T05:23:53.490-07:00</updated><title type='text'>Alteryx Team Blog</title><content type='html'>The Alteryx team blog has a new home and name.&amp;nbsp; Check out the "Alteryx Engine Works" here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.alteryx.com/engineworks/default.aspx"&gt;http://blogs.alteryx.com/engineworks/default.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Comments are also working at last, so hopefully we'll see some questions from the community on the new features of Alteryx 6.0 as the team blog about them.&amp;nbsp; First post on Document Constants is already there and looks like a powerful new feature.&lt;br /&gt;&lt;br /&gt;For anyone who is subscribed to my google RSS Alteryx bundle then I have updated this to include the new "Alteryx All Blogs RSS Feed".&amp;nbsp; For anyone who isn't subscribed then the below link gives you access to all of the Alteryx RSS feeds in one place:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.google.com/reader/bundle/user/08686630194161749278/bundle/Alteryx"&gt;https://www.google.com/reader/bundle/user/08686630194161749278/bundle/Alteryx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On a related note the UK Alteryx Blog now has e-mail subscriptions available courtesy of feedburner.&amp;nbsp; Blog posts delivered directly to your inbox. Sign up at the below link:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=TheUkAlteryxBlog&amp;amp;loc=en_US"&gt;Subscribe to The UK Alteryx Blog by Email&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-92879526847479496?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/92879526847479496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/10/alteryx-team-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/92879526847479496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/92879526847479496'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/10/alteryx-team-blog.html' title='Alteryx Team Blog'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-5148700906359588508</id><published>2010-10-07T09:10:00.000-07:00</published><updated>2010-10-07T09:10:03.931-07:00</updated><title type='text'>Palette Importer and Exporter</title><content type='html'>Seeing this post &lt;a href="http://srcgroup.extendthereach.com/showthread.php?t=1414"&gt;http://srcgroup.extendthereach.com/showthread.php?t=1414&lt;/a&gt;&amp;nbsp;by Margarita on the Alteryx forum reminded me of an Alteryx module I had started a while ago to try and solve a problem with theming on a map.&amp;nbsp; The solution didn't quite work out as I had hoped, but I believe the module may still be of use.&lt;br /&gt;&lt;br /&gt;So here is my palette importer module for Alteryx:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.office.live.com/embedicon.aspx/.Public/PaletteImporter.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;It allows you to add palettes from Expression Design Swatch xml file format (or entered manually in a text input)&amp;nbsp;to your Alteryx reportsettings.xml file.&amp;nbsp; The reason I chose this format is that I found this site &lt;a href="http://www.colourlovers.com/palettes"&gt;http://www.colourlovers.com/palettes&lt;/a&gt;&amp;nbsp;which has over a million palettes to download in this format (though frustratingly they all only seem to have a maximum of&amp;nbsp;five colors, if anyone knows of&amp;nbsp;any better sites please let me know).&amp;nbsp; You need to sign up to download them, but then just hit the design button under download options:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TKsNP8zhj9I/AAAAAAAAEqU/LQlaD52LiLE/s1600/DownLoadOptionsForColourLovers.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" px="true" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TKsNP8zhj9I/AAAAAAAAEqU/LQlaD52LiLE/s1600/DownLoadOptionsForColourLovers.bmp" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The module will pick up any number of palette xml files from the same folder that it is in. &amp;nbsp;I have included two as samples. &amp;nbsp;Once the module has run then you will need to restart Alteryx in order to be able to see the new palettes.&lt;br /&gt;&lt;br /&gt;As Margarita suggests in her post please backup ReportSettings.xml before you start using this. &amp;nbsp;It is tested, but just in case there are any problems you will want to be able to restore your backup. &amp;nbsp;The other thing to mention is that if you import a palette with the same name as an existing one then the existing one will be overwritten.&lt;br /&gt;&lt;br /&gt;It allows you to&amp;nbsp;relatively&amp;nbsp;quickly find a palette you like; import it into Alteryx and use it:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TKsPmLl5dhI/AAAAAAAAEqY/y9RdJERRULE/s1600/ColourLoversHulk.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" px="true" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TKsPmLl5dhI/AAAAAAAAEqY/y9RdJERRULE/s320/ColourLoversHulk.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TKsPpyzdV3I/AAAAAAAAEqc/JzBHyea1sgc/s1600/ChartHulk.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" px="true" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TKsPpyzdV3I/AAAAAAAAEqc/JzBHyea1sgc/s320/ChartHulk.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I have also put together this module:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.office.live.com/embedicon.aspx/.Public/PaletteExporter.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;which exports your palettes from reportsettings.xml to&amp;nbsp;Expression Design Swatch xml file format files. &amp;nbsp;Ideal if you want to move a palette from one machine to another or share it on the web.&lt;br /&gt;&lt;br /&gt;As always any comments/suggestions please let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-5148700906359588508?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/5148700906359588508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/10/palette-importer-and-exporter.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/5148700906359588508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/5148700906359588508'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/10/palette-importer-and-exporter.html' title='Palette Importer and Exporter'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_TF2AWY4wez4/TKsNP8zhj9I/AAAAAAAAEqU/LQlaD52LiLE/s72-c/DownLoadOptionsForColourLovers.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-6079385516185931071</id><published>2010-09-09T22:00:00.000-07:00</published><updated>2010-09-09T22:00:02.261-07:00</updated><title type='text'>Gantt Charts</title><content type='html'>The below recently appeared on the Alteryx &lt;a href="http://srcgroup.extendthereach.com/showthread.php?t=1400"&gt;forum&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Hi,&lt;/em&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;I have a an Alteryx module that reports project data and milestones for various projects. What is missing is a visual representation of the milestones and I was wondering if anyone had used the Alteryx reporting tools to create a Gantt Chart type view of milestones/tasks.&lt;/em&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Thanks,&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Gavin&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Hello Gavin,&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;We do not currently offer a Gantt Chart option in the Chart tool. Thank you for expressing an interest in this feature, we will look into it as a possibility for the future.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;-Brett&lt;/em&gt; &lt;br /&gt;&lt;br /&gt;While Brett's reply is quite correct; there is nothing to stop you creating your own Gantt Chart using the tools currently available in Alteryx 5.0.&amp;nbsp; If anyone remembers the techniques which were used to create a &lt;a href="http://cosharepoint.extendthereach.com/Public/AlteryxTeamBlog/Lists/Posts/Post.aspx?ID=73"&gt;polar graph&lt;/a&gt; or a &lt;a href="http://ukalteryxuser.blogspot.com/2010/03/alteryx-plays-chess.html"&gt;chess board&lt;/a&gt; which used the mapping tool as a custom renderer, then a similar technique could be used to create a Gantt chart.&lt;br /&gt;&lt;br /&gt;So I've put together a sample module which shows a possible method for doing this. Which produces the below:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TF2AWY4wez4/TIjdy_uOTHI/AAAAAAAAEoQ/n8Gfkl6qlJI/s1600/Gantt.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="148" ox="true" src="http://4.bp.blogspot.com/_TF2AWY4wez4/TIjdy_uOTHI/AAAAAAAAEoQ/n8Gfkl6qlJI/s640/Gantt.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;From the following data table:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TIjeHrnyPRI/AAAAAAAAEoY/F5zR_3AoRzs/s1600/GanttTable.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TIjeHrnyPRI/AAAAAAAAEoY/F5zR_3AoRzs/s320/GanttTable.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The module uses a couple of interesting techinques&amp;nbsp;including using the Generate Rows tool to create a data row for every day between two date ranges and generating the spatial objects needed to build up the Gantt charts by dynamically creating json objects (&lt;a href="http://srcgroup.extendthereach.com/showthread.php?p=3028#post3028"&gt;Thanks Ned&lt;/a&gt;).&lt;/div&gt;&lt;br /&gt;The module looks like this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TIjg_BlY_qI/AAAAAAAAEog/EqGp3GCHfwE/s1600/GanttModule.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" ox="true" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TIjg_BlY_qI/AAAAAAAAEog/EqGp3GCHfwE/s640/GanttModule.JPG" width="406" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;and can be downloaded from here:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.office.live.com/embedicon.aspx/.Public/GanttChartExample.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The things&amp;nbsp;that need doing next with this&amp;nbsp;are to take a look at the scaling aspect (it currently doesn't look so good for timeframes longer than a month) and turn the whole thing into a macro which outputs a report .&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;As always any questions/comments please post below or feel free to contact me directly.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-6079385516185931071?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/6079385516185931071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/09/gantt-charts.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6079385516185931071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6079385516185931071'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/09/gantt-charts.html' title='Gantt Charts'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_TF2AWY4wez4/TIjdy_uOTHI/AAAAAAAAEoQ/n8Gfkl6qlJI/s72-c/Gantt.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-8153923144963184726</id><published>2010-08-26T22:00:00.000-07:00</published><updated>2010-08-26T22:00:03.443-07:00</updated><title type='text'>Add Total Row and Column</title><content type='html'>Ever needed to add Row and Column totals to your data tables in Alteryx?&amp;nbsp; This macro makes it easy!&lt;br /&gt;&lt;br /&gt;From this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/THZE8KfF7oI/AAAAAAAAEn4/NmBd-xV6-tE/s1600/Image1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://2.bp.blogspot.com/_TF2AWY4wez4/THZE8KfF7oI/AAAAAAAAEn4/NmBd-xV6-tE/s320/Image1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;To this:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/THZFHn1m0KI/AAAAAAAAEoA/WkUI_Z8U4nk/s1600/Image2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://1.bp.blogspot.com/_TF2AWY4wez4/THZFHn1m0KI/AAAAAAAAEoA/WkUI_Z8U4nk/s320/Image2.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;With this:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/_TF2AWY4wez4/THZGxfLefcI/AAAAAAAAEoI/8zskPxxgqAE/s1600/Image3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" ox="true" src="http://4.bp.blogspot.com/_TF2AWY4wez4/THZGxfLefcI/AAAAAAAAEoI/8zskPxxgqAE/s640/Image3.JPG" width="363" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Download the macro here:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.office.live.com/embedicon.aspx/.Public/AddTotalRowColumns.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-8153923144963184726?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/8153923144963184726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/08/add-total-row-and-column.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8153923144963184726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8153923144963184726'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/08/add-total-row-and-column.html' title='Add Total Row and Column'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TF2AWY4wez4/THZE8KfF7oI/AAAAAAAAEn4/NmBd-xV6-tE/s72-c/Image1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-2414748703779583574</id><published>2010-07-12T00:25:00.000-07:00</published><updated>2010-07-12T00:25:52.933-07:00</updated><title type='text'>Tips and Tricks - The Browse Tool</title><content type='html'>The humble browse tool is probably the most used tool in the Alteryx toolbox, it is a great way to take a look at your data at any point in your module; but how many of you use more than its default settings? &amp;nbsp;Score yourself out of ten for how many of the following tips and tricks you already knew about the browse tool.&lt;br /&gt;&lt;br /&gt;1. &amp;nbsp;You can select which columns you want to look at and the module will remember these selections:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TDqplssiaEI/AAAAAAAAElo/tHp5iJU5ZTU/s1600/Browse2a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="315" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TDqplssiaEI/AAAAAAAAElo/tHp5iJU5ZTU/s640/Browse2a.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TDqp4pVuHaI/AAAAAAAAElw/fqn_TuxmVbM/s1600/Browse2b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TDqp4pVuHaI/AAAAAAAAElw/fqn_TuxmVbM/s640/Browse2b.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TDqp-wrm21I/AAAAAAAAEl4/5ajtETuJKjM/s1600/Browse2c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TDqp-wrm21I/AAAAAAAAEl4/5ajtETuJKjM/s640/Browse2c.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Great for when you need to check two fields against each other.&lt;br /&gt;&lt;br /&gt;2. The browse tool will tell you if a data cell has leading spaces; trailing spaces or&amp;nbsp;embedded&amp;nbsp;newlines&amp;nbsp;by displaying a little red triangle in the corner of the cell. &amp;nbsp;Hovering over the red triangle displays the message:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TDqt1V7VuBI/AAAAAAAAEmA/p6xJ6Dj4CWw/s1600/Browse3a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TDqt1V7VuBI/AAAAAAAAEmA/p6xJ6Dj4CWw/s320/Browse3a.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TDqt617e78I/AAAAAAAAEmI/DveMSgBPBSE/s1600/Browse3b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TDqt617e78I/AAAAAAAAEmI/DveMSgBPBSE/s320/Browse3b.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TDquGY5FHeI/AAAAAAAAEmQ/KFSXyx54sjQ/s1600/Browse3c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TDquGY5FHeI/AAAAAAAAEmQ/KFSXyx54sjQ/s320/Browse3c.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;3. The "Cell Viewer" button lets you examine the contents of an individual cell and with "Show Whitespace"&lt;a href="http://4.bp.blogspot.com/_TF2AWY4wez4/TDqv7KlrmeI/AAAAAAAAEmY/S6aUuWxIBKc/s1600/Browse4b.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_TF2AWY4wez4/TDqv7KlrmeI/AAAAAAAAEmY/S6aUuWxIBKc/s320/Browse4b.png" /&gt;&lt;/a&gt;&lt;br /&gt;turned on shows you all of those leading/trailing spaces and&amp;nbsp;embedded&amp;nbsp;newlines:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TDqwLMMdFnI/AAAAAAAAEmg/fXvritTNnhc/s1600/Browse4a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TDqwLMMdFnI/AAAAAAAAEmg/fXvritTNnhc/s640/Browse4a.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;4. The cell viewer pane also gives information on fields and rows by&amp;nbsp;clicking&amp;nbsp;on the header/row label cells:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TDqw3eYNfhI/AAAAAAAAEmo/UvEYNfvWrjU/s1600/Browse5a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TDqw3eYNfhI/AAAAAAAAEmo/UvEYNfvWrjU/s640/Browse5a.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TDqw-3-H6yI/AAAAAAAAEmw/meN3IDBZU8M/s1600/Browse5b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TDqw-3-H6yI/AAAAAAAAEmw/meN3IDBZU8M/s640/Browse5b.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;5. It is possible to split the browse tool vertically or&amp;nbsp;horizontally. &amp;nbsp;Great for comparing records in different rows of the file:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TDqxvEaqrSI/AAAAAAAAEm4/DuZAbJ9Mgsg/s1600/Browse6a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="348" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TDqxvEaqrSI/AAAAAAAAEm4/DuZAbJ9Mgsg/s640/Browse6a.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;or viewing spatial data in map and tabular form:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/TDqy_spCi7I/AAAAAAAAEnA/JH45vmvcCUk/s1600/Browse6b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="340" src="http://1.bp.blogspot.com/_TF2AWY4wez4/TDqy_spCi7I/AAAAAAAAEnA/JH45vmvcCUk/s640/Browse6b.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;6. In the split map/data table view. &amp;nbsp;Selecting a data row in the table will highlight that spatial object on the map and selecting a spatial object on the map will highlight the corresponding data row.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;7. Need to compare records from two different&amp;nbsp;browses&amp;nbsp;in the same module? &amp;nbsp;No problem! The new window button will create a new&amp;nbsp;floating&amp;nbsp;browse window of the current data; then switch the original properties window to the other browse and&amp;nbsp;compare&amp;nbsp;away.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/TDq0U7-iLTI/AAAAAAAAEnI/vHZ6smmrxow/s1600/Browse8a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_TF2AWY4wez4/TDq0U7-iLTI/AAAAAAAAEnI/vHZ6smmrxow/s320/Browse8a.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;8. You can save records (all or a selection) directly from the browse tool. &amp;nbsp;Useful when you have spotted an issue and want to send the records to someone or do some further analysis elsewhere.&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/TDrCqN9inAI/AAAAAAAAEng/8qFP_QLmjXM/s1600/Browse9a.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_TF2AWY4wez4/TDrCqN9inAI/AAAAAAAAEng/8qFP_QLmjXM/s320/Browse9a.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;9. You can copy records from the browse tool and paste them&amp;nbsp;directly&amp;nbsp;into a text input tool. &amp;nbsp;Really useful if you need to take a few records into a second module to some extra analysis:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/_TF2AWY4wez4/TDq4fyGAbSI/AAAAAAAAEnY/IODY6ZNJG8w/s1600/Browse10a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_TF2AWY4wez4/TDq4fyGAbSI/AAAAAAAAEnY/IODY6ZNJG8w/s320/Browse10a.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;10. The&amp;nbsp;browse&amp;nbsp;tool will display&amp;nbsp;up to&amp;nbsp;1 billion rows. &amp;nbsp;After that it only displays alternate rows, but maintains the correct row numbers in the first column.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;So how many did you score out of ten? &amp;nbsp;Post your scores in the&amp;nbsp;comments&amp;nbsp;below and let me know if you think of any others&lt;i&gt;&amp;nbsp;&lt;/i&gt;I have missed.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-2414748703779583574?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/2414748703779583574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/07/tips-and-tricks-browse-tool.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/2414748703779583574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/2414748703779583574'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/07/tips-and-tricks-browse-tool.html' title='Tips and Tricks - The Browse Tool'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TF2AWY4wez4/TDqplssiaEI/AAAAAAAAElo/tHp5iJU5ZTU/s72-c/Browse2a.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-4275574892194874727</id><published>2010-07-09T15:00:00.000-07:00</published><updated>2010-07-09T15:02:30.621-07:00</updated><title type='text'>Alteryx Customer Advisory e-Forum (Part 2)</title><content type='html'>It was great to see such a good attendance for this; I thought it was a really interesting event. &amp;nbsp;Thanks to all the other presenters for sharing what they are doing with Alteryx.&lt;br /&gt;&lt;br /&gt;As promised here are my slides:&lt;br /&gt;&lt;br /&gt;&lt;iframe title ="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:98px;height:115px;padding:0;background-color:#fcfcfc;" src="http://cid-7754be96cf065e9a.office.live.com/embedicon.aspx/.Public/AlteryxCustomerAdvisoryeForum^_July2010^_AdamRileySlides.zip"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Looking forward to the next one!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-4275574892194874727?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/4275574892194874727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/07/alteryx-customer-advisory-e-forum-part.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4275574892194874727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4275574892194874727'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/07/alteryx-customer-advisory-e-forum-part.html' title='Alteryx Customer Advisory e-Forum (Part 2)'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-8582895237303911244</id><published>2010-06-28T23:48:00.000-07:00</published><updated>2010-06-28T23:53:15.400-07:00</updated><title type='text'>Alteryx Customer Advisory e-Forum</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: white;"&gt;I'm looking forward to the first &lt;/span&gt;&lt;span class="goog-spellcheck-word" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Alteryx&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt; e-Forum on Thursday. &amp;nbsp;I'm going to be talking about a recent project I have completed at &lt;/span&gt;&lt;span class="goog-spellcheck-word" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Experian&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt; involving a server based setup of &lt;/span&gt;&lt;span class="goog-spellcheck-word" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Alteryx&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;; a custom queuing application using the &lt;/span&gt;&lt;span class="goog-spellcheck-word" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;API&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt; and a terabyte of Calgary databases.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For anyone who hasn't already seen the details, they are &lt;a href="http://www.linkedin.com/osview/canvas?_ch_page_id=1&amp;amp;_ch_panel_id=1&amp;amp;_ch_app_id=7083120&amp;amp;_applicationId=2000&amp;amp;_ownerId=0&amp;amp;appParams={%22go_to%22:%22events/349784%22,%22referrer%22:%22public%22}"&gt;here&lt;/a&gt;. &amp;nbsp;Hope to "see" you all there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-8582895237303911244?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/8582895237303911244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/06/alteryx-customer-advisory-e-forum.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8582895237303911244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8582895237303911244'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/06/alteryx-customer-advisory-e-forum.html' title='Alteryx Customer Advisory e-Forum'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-1971368067297705</id><published>2010-05-28T04:27:00.000-07:00</published><updated>2010-05-28T04:27:23.824-07:00</updated><title type='text'>FormulaAddIn (or 3Rd Floor Flat part 2)</title><content type='html'>&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/S_-UobpLXAI/AAAAAAAAElY/nMiEYVr9P60/s1600/TitleCase2.bmp" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" gu="true" src="http://2.bp.blogspot.com/_TF2AWY4wez4/S_-UobpLXAI/AAAAAAAAElY/nMiEYVr9P60/s320/TitleCase2.bmp" /&gt;&lt;/a&gt;Well the next question from my 3Rd Floor Flat user was "So do I need to use that big long formula every time I want to title case something?" and of course for a common task for a user that's not ideal.&amp;nbsp; First thought was to wrap it in a macro, but that feels like overkill for a simple task.&amp;nbsp; Then I remembered something I had seen in the Software Developer's Kit - FormulaAddIns!&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Did you know it is possible to create your own functions to appear in the formula tool?&amp;nbsp; And what's more for ones which can be built using existing functions it's really quite easy.&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;For the lack of a better name I've called my new function TITLECASE2 and if you create the folder&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;C:\Program Files\SRC\Alteryx5.0\RuntimeData\FormulaAddIn\&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;and save the below xml file into it, &lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/TitleCase2.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;then restart Alteryx&amp;nbsp;you will find&amp;nbsp;TITLECASE2 appears right there in the function list under TITLECASE; giving me the elegant solution I was looking for.&amp;nbsp; I think the xml is fairly self explanatory, but let me know if you have any questions on it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-1971368067297705?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/1971368067297705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/05/formulaaddin-or-3rd-floor-flat-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/1971368067297705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/1971368067297705'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/05/formulaaddin-or-3rd-floor-flat-part-2.html' title='FormulaAddIn (or 3Rd Floor Flat part 2)'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TF2AWY4wez4/S_-UobpLXAI/AAAAAAAAElY/nMiEYVr9P60/s72-c/TitleCase2.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-6753382575771796113</id><published>2010-05-27T07:55:00.000-07:00</published><updated>2010-05-27T07:55:58.535-07:00</updated><title type='text'>3Rd Floor Flat</title><content type='html'>Should TitleCase("3rd floor flat") resolve to 3Rd Floor Flat? Alteryx thinks it does, I'm not so sure...&amp;nbsp; But the question I had from a user on Friday was how do I turn "3rd floor flat" into "3rd Floor Flat"?&amp;nbsp; Which of course is what you would want on an address envelope.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;My first solution involved using a regex tool to pull the first letters out then the dynamic formula macro to build the string back together captilasing the first letters.&amp;nbsp; I wasn't overly happy with the solution though&amp;nbsp; (far too many tools for a simple task) so after some more thinking&amp;nbsp;have come up with the following formula:&lt;br /&gt;&lt;br /&gt;REGEX_REPLACE(TitleCase(REGEX_REPLACE([Field1], "(\d)", "$1X")), "(\d)X", "$1")&lt;br /&gt;&lt;br /&gt;(which I think should always work...)&lt;br /&gt;&lt;br /&gt;Anyone think they can come up with&amp;nbsp;a more elegant solution?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-6753382575771796113?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/6753382575771796113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/05/3rd-floor-flat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6753382575771796113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6753382575771796113'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/05/3rd-floor-flat.html' title='3Rd Floor Flat'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-1751737135965304730</id><published>2010-05-14T06:27:00.000-07:00</published><updated>2010-05-14T06:27:14.469-07:00</updated><title type='text'>Dynamic Formula</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/S-1LyFnCSBI/AAAAAAAAElQ/7FKqIZvuKUs/s1600/DynamicFormula.bmp" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_TF2AWY4wez4/S-1LyFnCSBI/AAAAAAAAElQ/7FKqIZvuKUs/s320/DynamicFormula.bmp" wt="true" /&gt;&lt;/a&gt;&lt;/div&gt;A recent post on the Alteryx forum from Stephs (&lt;a href="http://srcgroup.extendthereach.com/showthread.php?t=1306"&gt;here&lt;/a&gt;) got me thinking: wouldn't it be useful if there was a Dynamic formula tool? &amp;nbsp;I think this would solve Stephs problem in that they could build&amp;nbsp;formulas (with the formula tool) to compare the fields and use an if statement to choose&amp;nbsp;between&amp;nbsp;the&amp;nbsp;file and&amp;nbsp;database&amp;nbsp;version and then push the data back to the database (that's if I've understood the problem correctly, if not I've already thought of some other great uses for this tool.).&lt;br /&gt;&lt;br /&gt;Well the motto of any advanced user of Alteryx should be "If you want a new tool in Alteryx, build it!" So here it is:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/DynamicFormula.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Just drop all the files in the zip into your macros folder. Usually something like C:\Program Files\SRC\Alteryx5.0\RuntimeData\Macros\.&lt;br /&gt;&lt;br /&gt;The&amp;nbsp;two interesting features of this macro are :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It's the first time I have made use of the macro action "Update Raw XML", which worked very nicely.&lt;/li&gt;&lt;li&gt;I have used the batch macro tool in a way it wasn't particularly designed for.&amp;nbsp; I used it to run a single iteration which you might think defeats the point of the 'batch' feature, but it allows you to take data from the data stream and insert into the properties of the formula tool.&amp;nbsp; Using this technique, any Alteryx tool could be made to have dynamic properties!&amp;nbsp; I'm sure there must be some more uses out there for this technique.&lt;/li&gt;&lt;/ul&gt;Now for one of those other uses I've thought of.&amp;nbsp; Remember this query from the Alteryx Team blog &lt;a href="http://cosharepoint.extendthereach.com/Public/AlteryxTeamBlog/Lists/Posts/Post.aspx?ID=84"&gt;here&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Hi Tara, &lt;br /&gt;I have a table with 60+ fields. I need to create an extra field that is the total of all the 60+ fields. So far, I've been doing this with the formula tool and writing an expression as follows "[01]+[02]+[03]+[04]+[05]+[06]+[07]+[08]+[09]+[10]+[11]+[12]+[13]+[14]+[15]….. etc". Just wondering if there is a quicker way to do this? If not, can you add as a suggestion for a future release? &lt;br /&gt;Thanks, &lt;br /&gt;&lt;br /&gt;Well with the dynamic formula tool you can write this formula dynamically!&amp;nbsp; Plus it becomes very easy to also create subtotals based of the field names.&amp;nbsp; Check out the below module showing how this could work:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/DynamicFormulaExample.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;If anyone else thinks of some other uses for this tool then add a comment here or drop me a note.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-1751737135965304730?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/1751737135965304730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/05/dynamic-formula.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/1751737135965304730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/1751737135965304730'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/05/dynamic-formula.html' title='Dynamic Formula'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TF2AWY4wez4/S-1LyFnCSBI/AAAAAAAAElQ/7FKqIZvuKUs/s72-c/DynamicFormula.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-4799996263389644308</id><published>2010-05-12T04:38:00.000-07:00</published><updated>2010-05-12T04:38:58.658-07:00</updated><title type='text'>Street View Macro</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/S-qSdwoqtpI/AAAAAAAAElI/22xhXJJPlHE/s1600/StreetView.bmp" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="100" src="http://2.bp.blogspot.com/_TF2AWY4wez4/S-qSdwoqtpI/AAAAAAAAElI/22xhXJJPlHE/s200/StreetView.bmp" width="98" wt="true" /&gt;&lt;/a&gt;&lt;/div&gt;Following on from Ron's great&amp;nbsp;post about using HTMLPassThrough &lt;a href="http://alteryxuser.blogspot.com/2010/04/generating-interactive-web-pages-using.html"&gt;here&lt;/a&gt;.&amp;nbsp; I would like to share with you all the Street View macro which came out of the same brainstorm in the solution centre at Extend 2010.&lt;br /&gt;&lt;br /&gt;What it does is allow you to insert a Google Street View iframe into an html report from a given set of x, y co-ordinates without needing to know about HTMLPassThrough or indeed&amp;nbsp;worrying about it. It uses a couple of interesting techniques including HTMLPassThrough and batch macros. I'm not going to go into huge amounts of details of how it works here, the modules are commented so just let me know if you have any specific questions.&lt;br /&gt;&lt;br /&gt;So here it is:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/StreetViewMacro.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Just drop all the files in the zip into your macros folder. Usually something like C:\Program Files\SRC\Alteryx5.0\RuntimeData\Macros\.&lt;br /&gt;&lt;br /&gt;I've also created an amended version of the presidents report sample here:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/PresidentsReportWithStreetView.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Extract this one to here to see it work: C:\Program Files\SRC\Alteryx5.0\RuntimeData\Samples\Reporting Samples\&lt;br /&gt;&lt;br /&gt;Only caveats I'm going to throw in for this one is that it is html reports only (it's an iframe after all) and if you are going to use it make sure you do so within Google's licence agreement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-4799996263389644308?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/4799996263389644308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/05/street-view-macro.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4799996263389644308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4799996263389644308'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/05/street-view-macro.html' title='Street View Macro'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TF2AWY4wez4/S-qSdwoqtpI/AAAAAAAAElI/22xhXJJPlHE/s72-c/StreetView.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-8490426423389071028</id><published>2010-04-15T05:58:00.000-07:00</published><updated>2010-04-15T05:58:34.728-07:00</updated><title type='text'>A Challenge</title><content type='html'>For those of you who thought the Grand Prix sounded like fun or enjoy a puzzle, then I have a challenge for you.&amp;nbsp; Each week New Scientist pose an enigma;&amp;nbsp;last week's can be found here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.newscientist.com/article/mg20627557.200-enigma-number-1590.html"&gt;http://www.newscientist.com/article/mg20627557.200-enigma-number-1590.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My challenge is see how fast you can solve the enigma using Alteryx!&amp;nbsp; In the same way as in the Grand Prix allow yourself thinking time beforehand and start the clock when you drag on the first tool, stop it when you have a solution.&amp;nbsp; This one took me 15 minutes and 45 seconds.&amp;nbsp; Anyone think they can solve it faster?&lt;br /&gt;&lt;br /&gt;My solution can be found here:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/EnigmaNumber1590.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-8490426423389071028?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/8490426423389071028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/04/challenge.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8490426423389071028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/8490426423389071028'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/04/challenge.html' title='A Challenge'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-3842859762984243521</id><published>2010-04-14T23:57:00.000-07:00</published><updated>2010-04-14T23:57:53.018-07:00</updated><title type='text'>Extend 2010</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/S8TWTNnkBtI/AAAAAAAAEkM/HVIdKu3-GAk/s1600/P3255142.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_TF2AWY4wez4/S8TWTNnkBtI/AAAAAAAAEkM/HVIdKu3-GAk/s320/P3255142.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;I would like to start by thanking everyone who was involved with the organisation and running of Extend 2010. &amp;nbsp;I&amp;nbsp;thought it was a&amp;nbsp;great&amp;nbsp;event and very well&amp;nbsp;organised. &amp;nbsp;I met lots of interesting people; got to see what others were doing with Alteryx and picked up a few new tips and tricks along the way. &amp;nbsp;This article is my summary of the event.&lt;br /&gt;&lt;br /&gt;Day 1 - So after registration and lunch&amp;nbsp;the&amp;nbsp;first sessions I attended were the Alteryx Product Training. &amp;nbsp;These were the first part of a series of sessions totalling eight hours covering a range of Alteryx topics. &amp;nbsp;The first two sessions covered&amp;nbsp;Allocate&amp;nbsp;and Solocast before moving on to the basics of Alteryx. &amp;nbsp;Not a lot new for me in these sessions, but giving&amp;nbsp;demo's&amp;nbsp;and training in Alteryx is something I do in my role at Experian, so&amp;nbsp;I&amp;nbsp;found it useful to see someone else's approach to training.&lt;br /&gt;&lt;br /&gt;The final session on day 1 was the Alteryx User Group Forum. &amp;nbsp;I thought this was a great&amp;nbsp;session&amp;nbsp;to meet other Alteryx users and see what other people are doing with Alteryx. &amp;nbsp;Ron House kicked off the session talking about his blog and had kindly given me five minutes to talk about mine. &amp;nbsp;It was a great opportunity to talk about what I've been doing and why I think interaction among the Alteryx community is important for all of us. &amp;nbsp;We then had a number of speakers from different companies talking about how they are using Alteryx; an excellent opportunity to get new ideas to take back to our own work.&lt;br /&gt;&lt;br /&gt;Day 2 - There were a few different streams running on day 2 including the continuation of the Alteryx Product Training and the DemographicsNow User group, but the one which I attended was the Developer Summit. &amp;nbsp;This was a series of presentation's by&amp;nbsp;Alteryx&amp;nbsp;employees on a range of interesting topics aimed at the developer user of Alteryx. &amp;nbsp;All of the material from the presentations can be found on the Alteryx team blog &lt;a href="http://cosharepoint.extendthereach.com/Public/AlteryxTeamBlog/Lists/Posts/Post.aspx?List=48009e88-dae7-416b-94c3-87a44858cc61&amp;amp;ID=88"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Session 1 - This was an overview by Ned of the tools in the Developer Tools section of the Alteryx toolbox, essential kit for anyone wanting to build macros, wizards or modules which begin to push the limits of what Alteryx can do. &amp;nbsp;I'd seen and used all of these tools before but was great to get some clarification of exactly what they do behind&amp;nbsp;the&amp;nbsp;scenes.&lt;br /&gt;&lt;br /&gt;Session 2 - Another&amp;nbsp;session&amp;nbsp;by Ned this time on how to build Alteryx macros. &amp;nbsp;A good introduction on how to get started.&lt;br /&gt;&lt;br /&gt;Session 3 - This session was run by Rob and covered the new feature of Alteryx 5.0: batch macros. &amp;nbsp;This is a feature I was crying out for while I was using Alteryx 4.0 and so have used a great deal prior to&amp;nbsp;the&amp;nbsp;conference. &amp;nbsp;My summary of the feature is that it starts to let you do loops in Alteryx. &amp;nbsp;Rob presented an&amp;nbsp;interesting&amp;nbsp;demonstration of how they could be used and a real world application. &amp;nbsp;What I found interesting was that&amp;nbsp;relatively&amp;nbsp;few people in&amp;nbsp;the&amp;nbsp;audience seemed to be using this powerful feature (look out for a future blog post on this one!).&lt;br /&gt;&lt;br /&gt;Session 4 - Now we were starting to get into real developer realms with Linda presenting how to run Alteryx wizards from C#. &amp;nbsp;There's not many&amp;nbsp;presentations you will see with Visual Studio and C# code&amp;nbsp;up on the screen!&lt;br /&gt;&lt;br /&gt;Session 5 - &amp;nbsp;This was a taster by Iain on the new Alteryx Web Services. &amp;nbsp;This looks like it will be very exciting and I'm looking forward to it being released and hopefully being able to have a play with it.&lt;br /&gt;&lt;br /&gt;After lunch there was a 'bonus' session with Ned in the solution centre on using the Alteryx SDK to build your own Alteryx tools. &amp;nbsp;Another very exciting topic which opens up all kinds of possibilities for using Alteryx (another topic to look out for a blog post on).&lt;br /&gt;&lt;br /&gt;Then after lunch we had the Alteryx Grand Prix in which I was a 'driver' and was the reason I had managed to get a ticket to the conference. &amp;nbsp;It's&amp;nbsp;effectively&amp;nbsp;"build Alteryx modules against the clock" and try and be faster than the other nine competitors. &amp;nbsp;It was a lot of fun and maybe got my heart racing more than getting up to talk at the user group forum the day before! &amp;nbsp;Look out for a second article covering&amp;nbsp;this&amp;nbsp;in more detail later.&lt;br /&gt;&lt;br /&gt;Day 3 - The day kicked off with the President's Opening from Dean Stoecker where the company name change was announced (see my previous post); followed by an amazingly inspiration talk by &lt;a href="http://www.touchthetop.com/"&gt;Erik Weihenmayer&lt;/a&gt;&amp;nbsp;the only blind man to have climbed the&amp;nbsp;highest&amp;nbsp;peak on every continent, including of course Mount Everest. &amp;nbsp;The rest of the day had a number of speakers from different companies talking about how they were using Alteryx in their businesses. &amp;nbsp;Though I must admit as a developer I didn't attend all of these, instead spending a fair bit of time in&amp;nbsp;the&amp;nbsp;solutions center talking with the Alteryx product developers. &amp;nbsp;Something which I found very useful, so thanks everyone for your time. &amp;nbsp;The other interesting session in&amp;nbsp;the&amp;nbsp;day was a talk by Amy Holland on the future of Alteryx; I'm looking forward to getting my hands on Alteryx 6 already!&lt;br /&gt;&lt;br /&gt;The day concluded with the awards dinner and then drinks into the evening, a great end to a great conference. &amp;nbsp;I found the whole event really useful and motivational, especially being able to meet other developers and&amp;nbsp;exchange&amp;nbsp;ideas and techniques. &amp;nbsp;I hope I can get there again next year!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-3842859762984243521?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/3842859762984243521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/04/extend-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/3842859762984243521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/3842859762984243521'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/04/extend-2010.html' title='Extend 2010'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_TF2AWY4wez4/S8TWTNnkBtI/AAAAAAAAEkM/HVIdKu3-GAk/s72-c/P3255142.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-6967595978920939265</id><published>2010-03-28T03:42:00.000-07:00</published><updated>2010-03-28T03:42:29.387-07:00</updated><title type='text'>The King is dead. Long live the King.</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/S68w2bVUImI/AAAAAAAAEgY/a6aliLGKLhc/s1600/logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="61" src="http://3.bp.blogspot.com/_TF2AWY4wez4/S68w2bVUImI/AAAAAAAAEgY/a6aliLGKLhc/s200/logo.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;At the Extend 2010 conference on Wednesday Dean Stoecker, then president of SRC, announced that SRC going&amp;nbsp;forwards will just be called Alteryx. So no more SRC, no more www.ExtendTheReach.com, just Alteryx and www.Alteryx.com. &amp;nbsp;The full&amp;nbsp;announcement&amp;nbsp;can be read &lt;a href="http://www.alteryx.com/communities/AlteryxNews/Lists/Posts/Post.aspx?ID=5"&gt;here&lt;/a&gt;,&amp;nbsp;but from a personal viewpoint I think this is a great move by the company and I think the new branding&amp;nbsp;looks&amp;nbsp;amazing. &amp;nbsp;I'm excited about what I'm sure is going to be a great year for the company and product.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Extend 2010 before and after the&amp;nbsp;re-branding:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/S68xKzNh2dI/AAAAAAAAEgg/A9dXXPuJV2Q/s1600/Before.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="220" src="http://2.bp.blogspot.com/_TF2AWY4wez4/S68xKzNh2dI/AAAAAAAAEgg/A9dXXPuJV2Q/s320/Before.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/S68xTSYH2hI/AAAAAAAAEgo/MkYnH9FE9iA/s1600/After.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="220" src="http://2.bp.blogspot.com/_TF2AWY4wez4/S68xTSYH2hI/AAAAAAAAEgo/MkYnH9FE9iA/s320/After.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Look out for a more detailed report from&amp;nbsp;the&amp;nbsp;conference later in the week and&amp;nbsp;some&amp;nbsp;blog posts on a couple of new macros written&amp;nbsp;collaboratively&amp;nbsp;at&amp;nbsp;the&amp;nbsp;conference.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-6967595978920939265?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/6967595978920939265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/03/king-is-dead-long-live-king.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6967595978920939265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/6967595978920939265'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/03/king-is-dead-long-live-king.html' title='The King is dead. Long live the King.'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_TF2AWY4wez4/S68w2bVUImI/AAAAAAAAEgY/a6aliLGKLhc/s72-c/logo.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-7167084037981363826</id><published>2010-03-22T08:09:00.000-07:00</published><updated>2010-03-22T08:11:13.925-07:00</updated><title type='text'>RSS Readers (or how to keep up with all the Alteryx news in one place)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/S6eDO-jGIZI/AAAAAAAAEgQ/AED2Nci5rkA/s1600-h/RSSReader.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="140" src="http://3.bp.blogspot.com/_TF2AWY4wez4/S6eDO-jGIZI/AAAAAAAAEgQ/AED2Nci5rkA/s200/RSSReader.JPG" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It might just be me who is behind the times, but until the end of last year I had never used a RSS reader. &amp;nbsp;For those of you who don't&amp;nbsp;know&amp;nbsp;what a RSS reader is (or&amp;nbsp;like&amp;nbsp;me it is something you have vaguely heard about but never quite known what the point of one is), it is basically a piece of software (web or windows based) which pulls a&amp;nbsp;number&amp;nbsp;of news feeds together into one place. &amp;nbsp; Still confused? &amp;nbsp;Then click on&amp;nbsp;the&amp;nbsp;below link:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.google.com/reader/bundle/user/08686630194161749278/bundle/Alteryx"&gt;https://www.google.com/reader/bundle/user/08686630194161749278/bundle/Alteryx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This&amp;nbsp;is a bundle of Alteryx feeds created using Google's RSS reader (cleverly named Google Reader). &amp;nbsp;What you see on that page is all&amp;nbsp;the&amp;nbsp;recent posts from my blog; Ron's blog; the official SRC Alteryx blog and questions posted on&amp;nbsp;the&amp;nbsp;SRC forums. &amp;nbsp;So all you need to do is subscribe to that bundle and you can keep up with all the Alteryx hints, tips and news in one place (&lt;a href="http://www.google.com/reader"&gt;http://www.google.com/reader&lt;/a&gt;). &amp;nbsp;And what's more if new Alteryx news feeds become available in the future (or if anyone knows of any now that I am missing) then I will add them to&amp;nbsp;that&amp;nbsp;bundle and as a subscriber you will automatically start&amp;nbsp;receiving those feeds as well.&lt;br /&gt;&lt;br /&gt;So what are you waiting for? Subscribe now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-7167084037981363826?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/7167084037981363826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/03/rss-readers-or-how-to-keep-up-with-all.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/7167084037981363826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/7167084037981363826'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/03/rss-readers-or-how-to-keep-up-with-all.html' title='RSS Readers (or how to keep up with all the Alteryx news in one place)'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_TF2AWY4wez4/S6eDO-jGIZI/AAAAAAAAEgQ/AED2Nci5rkA/s72-c/RSSReader.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-1950516838881790777</id><published>2010-03-22T08:08:00.000-07:00</published><updated>2010-03-22T08:08:24.134-07:00</updated><title type='text'>Reading KML Files</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;On the SRC Alteryx forum this week ashokbhatt asked if Alteryx can read and write KML files (&lt;/span&gt;&lt;a href="http://srcgroup.extendthereach.com/showthread.php?t=1287"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;http://srcgroup.extendthereach.com/showthread.php?t=1287&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;). &amp;nbsp;Co-incidentally I also received an e-mail from a colleague on Friday asking about Alteryx reading GML files. &amp;nbsp;While the answer to both of these questions is that there is no in-built support for reading or writing these file formats, they are both of course xml documents which can be digested by Alteryx using techniques similar to what I used in part 3 of my posts on RegEx &lt;/span&gt;&lt;a href="http://ukalteryxuser.blogspot.com/2010/02/regex-and-alteryx-part-3.html"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;The below module shows how a simple placemark file could be read using Alteryx:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/Reading^_KML^_Placemarks.zip" style="background-color: #fcfcfc; height: 115px; padding: 0; width: 98px;" title="Preview"&gt;&lt;/iframe&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;and this one how a simple placemark file could be written:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/Writing^_KML^_Placemarks.zip" style="background-color: #fcfcfc; height: 115px; padding: 0; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Obviously these only pick out a very specific section of the kml file, but hopefully will give some ideas of what could be done.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;The difficultly in writing a&amp;nbsp;generic kml reader is that kml is such a rich data format (&lt;/span&gt;&lt;a href="http://code.google.com/apis/kml/documentation/kmlreference.html"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;http://code.google.com/apis/kml/documentation/kmlreference.html&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;) that some of the data stored in it would have little meaning in Alteryx.&amp;nbsp;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-1950516838881790777?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/1950516838881790777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/03/reading-kml-files.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/1950516838881790777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/1950516838881790777'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/03/reading-kml-files.html' title='Reading KML Files'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-3005672061836447035</id><published>2010-03-20T16:59:00.000-07:00</published><updated>2010-03-20T17:00:41.225-07:00</updated><title type='text'>Alteryx Plays Chess</title><content type='html'>&lt;i&gt;"OK the first thing I have to admit before I start and anyone gets too excited: is my wizard doesn't actually play chess (I haven't got&amp;nbsp;the&amp;nbsp;time to write a chess engine at the moment ;-) ) &amp;nbsp;What it does do is let two users play chess against each other. But with that caveat said, on with the post..."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I'm not quite sure how this particular wizard came into being.  I had just read Bill Flanagan's post (&lt;a href="http://cosharepoint.extendthereach.com/Public/AlteryxTeamBlog/Lists/Posts/Post.aspx?ID=73"&gt;here&lt;/a&gt;) on using the mapping tool to create a polar graph,&amp;nbsp;which&amp;nbsp;I&amp;nbsp;thought&amp;nbsp;was great; and wanted to have a go&amp;nbsp;myself&amp;nbsp;at creating something custom using the mapping tool. &amp;nbsp;Turned out I couldn't really think of any pressing business problems that I could put this application of&amp;nbsp;the&amp;nbsp;mapping tool to use on; so just for&amp;nbsp;something&amp;nbsp;to experiment with the concept, I thought I would render a chess board and pieces. &amp;nbsp;So one lunchtime using&amp;nbsp;the&amp;nbsp;Alteryx spatial tools and some custom chess piece icons I got from&amp;nbsp;the&amp;nbsp;net, I built a simple module which renders a chess board and pieces.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/S6VgDOffHQI/AAAAAAAAEgI/p2m1mLzUq0Q/s1600-h/ChessBoard.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_TF2AWY4wez4/S6VgDOffHQI/AAAAAAAAEgI/p2m1mLzUq0Q/s320/ChessBoard.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Once I'd got that far I started wondering how difficult would it be to make a wizard which allowed a user to move those pieces around&amp;nbsp;the&amp;nbsp;board? &amp;nbsp;Turns out it didn't need many more tools to allow a user to enter a start and end co-ordinate in a wizard front end and get the piece to move between those locations. &amp;nbsp;Which gives us a&amp;nbsp;wizard&amp;nbsp;which allows two people to play chess against each other!&lt;br /&gt;&lt;br /&gt;What I haven't done is program Alteryx with the rules of the game: although I think it would be possible to program that logic within Alteryx, that one is going to have to wait until I have more time. &amp;nbsp;Then the next step of getting&amp;nbsp;the&amp;nbsp;wizard to actually make its own moves in response I think is&amp;nbsp;going&amp;nbsp;to be beyond the abilities of Alteryx (although you could always run an&amp;nbsp;external&amp;nbsp;engine via the command tool...) &lt;br /&gt;&lt;br /&gt;But having said that the wizard as it stands is a fun demonstration of what can be done using the mapping tool. It&amp;nbsp;is available for download here:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/Chess^_Wizard.zip" style="background-color: #fcfcfc; height: 115px; padding: 0; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-3005672061836447035?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/3005672061836447035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/03/alteryx-plays-chess.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/3005672061836447035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/3005672061836447035'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/03/alteryx-plays-chess.html' title='Alteryx Plays Chess'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_TF2AWY4wez4/S6VgDOffHQI/AAAAAAAAEgI/p2m1mLzUq0Q/s72-c/ChessBoard.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-5595063561984676040</id><published>2010-03-15T01:06:00.000-07:00</published><updated>2010-03-15T01:06:38.907-07:00</updated><title type='text'>\0 delimited</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/S53dfU6Y0uI/AAAAAAAAEfk/t7nuIVr6VkQ/s1600-h/NoDelimiters.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_TF2AWY4wez4/S53dfU6Y0uI/AAAAAAAAEfk/t7nuIVr6VkQ/s320/NoDelimiters.JPG" /&gt;&lt;/a&gt;Ever wondered what the point of \0 delimited files would be? &amp;nbsp;Ever wished you could output delimited files with no quote qualifiers? &amp;nbsp;I had&amp;nbsp;done&amp;nbsp;both and having found&amp;nbsp;the&amp;nbsp;answers thought I would share&amp;nbsp;them&amp;nbsp;here.&lt;br /&gt;&lt;br /&gt;Last week I ran into a problem I have had on a few occasions over&amp;nbsp;the&amp;nbsp;years I've worked with Alteryx. &amp;nbsp;This time round some of&amp;nbsp;the&amp;nbsp;tricks I had used before weren't&amp;nbsp;going&amp;nbsp;to work so I decided to post the problem on&amp;nbsp;the&amp;nbsp;SRC forum. &amp;nbsp;A big thanks to Margarita at SRC, as the same day I got a reply which let me build a working solution!&lt;br /&gt;&lt;br /&gt;My problem is a seemingly simple one to do with&amp;nbsp;the&amp;nbsp;delimited output file which Alteryx produces. &amp;nbsp;What I wanted to output was a delimited file with a pipe delimiter and no&amp;nbsp;qualifiers. &amp;nbsp;Alteryx does pipe delimited no problem, but when you come to options on qualifiers all you have is the tick box "Always qualify fields" which is either true or false. But there is no option to "Never qualify fields" which is what I want.&lt;br /&gt;&lt;br /&gt;So as you might have guessed from&amp;nbsp;the&amp;nbsp;title of the post&amp;nbsp;the&amp;nbsp;solution comes from using \0 as the delimiter. &amp;nbsp;What \0 does is produce an output file with &lt;b&gt;no&lt;/b&gt; delimiters and &lt;b&gt;no &lt;/b&gt;qualifiers, which at first glance might not seem so useful. &amp;nbsp;But what it allows you to do is build up your output file exactly as you want it using the functionality of Alteryx.&lt;br /&gt;&lt;br /&gt;For example if you have a dataset with three fields some of which contain quotes and you want to output a pipe delimited, non-qualified file; then you can just use&amp;nbsp;the&amp;nbsp;formula tool to build a new field like so:&lt;br /&gt;&lt;br /&gt;[Field1] + "|" + [Field2] + "|" + [Field3]&lt;br /&gt;&lt;br /&gt;and then a select to output only that new field to a \0 delimited file.&lt;br /&gt;&lt;br /&gt;The below module shows a few techniques of how you could use this:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/BackslashZeroDemilited.zip" style="background-color: #fcfcfc; height: 115px; padding: 0; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-5595063561984676040?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/5595063561984676040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/03/0-delimited.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/5595063561984676040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/5595063561984676040'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/03/0-delimited.html' title='\0 delimited'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TF2AWY4wez4/S53dfU6Y0uI/AAAAAAAAEfk/t7nuIVr6VkQ/s72-c/NoDelimiters.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-4722055532830695303</id><published>2010-03-02T23:21:00.000-08:00</published><updated>2010-03-02T23:21:57.527-08:00</updated><title type='text'>RegEx and Alteryx (Part 3)</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;For those of you who haven't read the comments on part 2, Ned Harding has posted some extra information on how the Tokenise Method works &lt;a href="http://cosharepoint.extendthereach.com/Public/AlteryxTeamBlog/Lists/Posts/Post.aspx?ID=80"&gt;here&lt;/a&gt;. &amp;nbsp;This shows how you can use the tool to split a field on a RegEx matched delimiter as the help file describes.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;On with part 3...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Replace O&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;utput Method&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;The last and I think possibly&amp;nbsp;the&amp;nbsp;most&amp;nbsp;powerful of the four methods in the RegEx tool. &amp;nbsp;For this method I am going to leave the e-mail example and take a look at something I seem to be needing to do more and more recently: xml processing. &amp;nbsp;So many applications today are&amp;nbsp;outputting xml files or requiring xml input, that being able to process it efficiently needs to be a staple tool of any data developer. &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Before I began to learn about RegEx I struggled to process xml using&amp;nbsp;Alteryx as from what I have seen, there are no specific tools&amp;nbsp;for reading or writing it.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;i&gt;(this&amp;nbsp;the&amp;nbsp;stage that somebody says to me: "why&amp;nbsp;didn't&amp;nbsp;you just use the xxx tool?" and I say because I didn't know it existed. Oh the time I&amp;nbsp;could&amp;nbsp;have saved if I'd only&amp;nbsp;known&amp;nbsp;about that multi-field formula tool a year earlier...)&lt;/i&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;I was using complex formulas to search for parts of xml strings and then more formulas to extract the piece of data I wanted. &amp;nbsp;With RegEx finding and extracting parts of xml suddenly becomes rather easy.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;For this example I will use a piece of xml which I hope that anyone who has used Alteryx much will have at least seen, if not&amp;nbsp;manipulated&amp;nbsp;themselves: an Alteryx module. &amp;nbsp;Yes, for those of you that weren't aware, when you save an Alteryx module it is saved as an xml document which, with due care, can be modified in any text editor. &amp;nbsp;Great for those times when you need to rename about 100 fields using a file layout you have been supplied in Excel.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This example can be followed in the module&amp;nbsp;RegEx_Example_Part3.yxmd downloadable from here:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/RegEx^_Example^_Part3.zip" style="background-color: #fcfcfc; height: 115px; padding: 0; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;The example module uses its own xml as an input and outputs a list of all of the tool ids in the module; along with their types and their x, y display positions. &amp;nbsp;Run the module and take a look at the output browse, then add a new tool, save the module and notice how the new tool you added is now included in&amp;nbsp;the&amp;nbsp;output.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;So how does it work? &amp;nbsp;Well there are 3 stages to the module:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Get the xml into a single field and single row.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Use our RegEx replace to extract the required information from the xml.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Use Text to Columns tools and a select to format the output.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Now as this article is focusing on the RegEx tools I will leave you to work out how stages 1 and 3 work for yourselves and only explain stage 2. &amp;nbsp;The module actually uses the RegEx tool with the replace output method 3 times:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;The first use is to remove all of&amp;nbsp;the&amp;nbsp;carriage return line feeds from the data:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/S4qpsfyvXVI/AAAAAAAAEfE/1Q1pOHqPL1g/s1600-h/RegEx8.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="212" src="http://1.bp.blogspot.com/_TF2AWY4wez4/S4qpsfyvXVI/AAAAAAAAEfE/1Q1pOHqPL1g/s640/RegEx8.JPG" width="640" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;So \r\n is the Regular Expression for a carriage return line feed combination, we have specified that we will replace it with nothing and we have also specified that we will pass all the other unmatched text through to&amp;nbsp;the&amp;nbsp;output as well. &amp;nbsp;I think this&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;could&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;be done using the standard formula REPLACE function, but I think you&amp;nbsp;would&amp;nbsp;need to use the CHARFROMINT function and know the unicodes for a carriage return and line feed, which isn't really any easier.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;The second use is to remove all white space from between&amp;nbsp;the&amp;nbsp;xml tags:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/S4qq3h6ClDI/AAAAAAAAEfM/Tbjnn5iDjtc/s1600-h/RegEx9.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="212" src="http://1.bp.blogspot.com/_TF2AWY4wez4/S4qq3h6ClDI/AAAAAAAAEfM/Tbjnn5iDjtc/s640/RegEx9.JPG" width="640" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This time we are searching for one or more white space between two &amp;gt; &amp;lt; characters and replacing the whole lot with &amp;gt;&amp;lt;. &amp;nbsp;This is another example of something which I believe would be very difficult without RegEx; you could remove all spaces from the data easily enough, but that&amp;nbsp;would&amp;nbsp;remove spaces inside the tags which we wish to keep. &amp;nbsp;You could also remove a fixed number of spaces between the ends of tags, but to remove an unknown number of spaces I think you would struggle.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;The final use, having prepared the xml, is to&amp;nbsp;extract&amp;nbsp;the data elements from the xml corresponding to the Alteryx tools. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/S4quU9-bUDI/AAAAAAAAEfU/-u-5J5t-9uQ/s1600-h/RegEx10.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/_TF2AWY4wez4/S4quU9-bUDI/AAAAAAAAEfU/-u-5J5t-9uQ/s640/RegEx10.JPG" width="640" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;From looking at the data I identified that the block of data I was interested in always looked like this:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;lt;Node ToolID="52"&amp;gt;&amp;lt;GuiSettings Plugin="AlteryxBasePluginsGui.BrowseV2.BrowseV2"&amp;gt;&amp;lt;Position x="99" y="779" /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;which I can quite easily write a regular&amp;nbsp;expression to match like so:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;lt;Node ToolID="(\d+)"&amp;gt;&amp;lt;GuiSettings Plugin="([^"]+)"&amp;gt;&amp;lt;Position x="(\d+)" y="(\d+)"&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;notice that I have four marked groups (the parts of&amp;nbsp;the&amp;nbsp;regular expression in parenthesis) representing the parts of the xml data I wish to extract. &amp;nbsp;The power of a RegEx replace is that I can reference these named groups in the&amp;nbsp;replacement text. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;For example if I made my replacement text $1 then the whole expression would be replaced by&amp;nbsp;52 (the first marked group) in the above example.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;What I choose for my replacement in this example is&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;$1¬$2¬\($3,$4\)|&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Which for&amp;nbsp;the&amp;nbsp;above&amp;nbsp;example&amp;nbsp;results in&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;52&amp;nbsp;¬AlteryxBasePluginsGui.BrowseV2.BrowseV2¬\(99,&amp;nbsp;779\)|&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This pulls out the 4 pieces of data I want in a nicely&amp;nbsp;delimited format which I can then split into cells by using the text to columns tool, which is what happens in stage 3 of the&amp;nbsp;module.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;I think that the RegEx replace tool is possibly the&amp;nbsp;most&amp;nbsp;useful of&amp;nbsp;the&amp;nbsp;RegEx tools available in Alteryx and&amp;nbsp;definitely&amp;nbsp;worth spending the time getting to understand.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Other RegEx Functions&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;The last thing to complete our overview of the RegEx capabilities of Alteryx is to briefly mention the remaining two functions available in the formula tool.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;REGEX_COUNTMATCHES takes a string and a regular expression and returns&amp;nbsp;the&amp;nbsp;number of times the regular expression matches the string.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;REGEX_REPLACE works in a similar manor to the replace method of the RegEx tool, but within the formula tool. &amp;nbsp;One exciting use of this is in the actions of macros and wizards, an example of which I plan to cover in a future post.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Conclusion&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;That&amp;nbsp;concludes&amp;nbsp;my overview of&amp;nbsp;the&amp;nbsp;RegEx&amp;nbsp;capabilities&amp;nbsp;of Alteryx, though my examples are just some starting ideas of what is possible. &amp;nbsp;I hope I have inspired you to learn some basic Regex and next time you are struggling with a complex string manipulation think about using the RegEx toolset. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;If you have any specific questions or comments on anything I have&amp;nbsp;posted&amp;nbsp;about then feel free to e-mail me or post a comment here.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-4722055532830695303?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/4722055532830695303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/02/regex-and-alteryx-part-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4722055532830695303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/4722055532830695303'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/02/regex-and-alteryx-part-3.html' title='RegEx and Alteryx (Part 3)'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TF2AWY4wez4/S4qpsfyvXVI/AAAAAAAAEfE/1Q1pOHqPL1g/s72-c/RegEx8.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-340457410494238458</id><published>2010-02-28T23:24:00.000-08:00</published><updated>2010-02-28T23:24:39.103-08:00</updated><title type='text'>RegEx and Alteryx (Part 2)</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;In part 1 we saw the Match Method of the RegEx tool and the&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;REGEX_MATCH()&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;function;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;in part 2 we will take a look at the Parse and Tokenise Methods of the RegEx tool.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Parse O&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;utput Method&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;So continuing the e-mail validation example from part 1, imagine now that having validated our e-mail field we now want to extract the domain names (everything after&amp;nbsp;the&amp;nbsp;@) to see how many of our customers use which e-mail domains. &amp;nbsp;To do this we can use the RegEx tool with the Parse output method. &amp;nbsp;We can use exactly the same regular expression as we used to validate the e-mail in part 1 with the addition of a set of parentheses&amp;nbsp;(shown in red below) around&amp;nbsp;the&amp;nbsp;part of the RegEx which we wish to extract:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;^[^\.].*@&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;[^@]+\.[^@]+&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;In RegEx this part of&amp;nbsp;the&amp;nbsp;expression is called a marked group and the Parse output method will extract each marked group in the regular expression as a new field.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/S4puX8QjLgI/AAAAAAAAEec/1zodQRU0i4c/s1600-h/RegEx3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="219" src="http://3.bp.blogspot.com/_TF2AWY4wez4/S4puX8QjLgI/AAAAAAAAEec/1zodQRU0i4c/s640/RegEx3.JPG" width="640" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/S4puceD_XuI/AAAAAAAAEek/nkA5qfDwZfs/s1600-h/RegEx4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="95" src="http://1.bp.blogspot.com/_TF2AWY4wez4/S4puceD_XuI/AAAAAAAAEek/nkA5qfDwZfs/s400/RegEx4.JPG" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This example can be seen in full in the sample module RegEx_Example_Part2.yxmd downloadable from the bottom of the article.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Admittedly this could be done with non-RegEx functions in the formula tool, but having already written our RegEx validation rule this is a much easier and quicker solution. &amp;nbsp;Plus if we now want to extend it to extract everything before&amp;nbsp;the&amp;nbsp;@ into a separate field we can just add two more&amp;nbsp;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;parentheses&lt;/span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;^&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;(&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;[^\.].*&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;)&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;@([^@]+\.[^@]+)$&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Tokenise O&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;utput Method&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;From the examples I have put&amp;nbsp;together&amp;nbsp;for this article it appears that there is a slight mismatch between what&amp;nbsp;the&amp;nbsp;help file says this output method does and what it actually does. &amp;nbsp;The help file states:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;"The Tokenize Method behaves like the &lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Text to Columns  tool&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;but can also separate on punctuation.&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: normal;"&gt;&lt;span class="hcp8"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;...will split a single column of  data at each instance of the &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;specified regular expression  pattern&lt;/span&gt;&lt;/i&gt;&lt;span class="hcp8"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt; into multiple&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;[rows/columns]."&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;from which description I would expect to be able to&amp;nbsp;specify&amp;nbsp;a regular expression which I wish to delimit the data on, for example a comma or a pipe, with a regular expression such as (,|\|) and the data would be split into columns wherever there is a comma or a pipe.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;What the tool actually does is pull out all of&amp;nbsp;the&amp;nbsp;data which &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;matches &lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;the regular expression into rows or columns, so in the above example I get lots of&amp;nbsp;columns&amp;nbsp;either&amp;nbsp;containing&amp;nbsp;a comma or a pipe rather&amp;nbsp;than&amp;nbsp;the data between them, which wasn't what I expected. &amp;nbsp;However it is not a major problem as either functionality can in fact be reproduced using the "replace" RegEx method (which&amp;nbsp;we will see in part 3) and the text to columns tool (I won't go into the details here, but mail me if you need to do this and can't see how after reading the rest of this article).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;So what I will show here is an example of how we can use the functionality the tool&amp;nbsp;actually&amp;nbsp;implements. &amp;nbsp;Imagine that you have a data set that is a series of messages or e-mails from which you wish to extract all the e-mail&amp;nbsp;addresses&amp;nbsp;which appear in those messages. &amp;nbsp;For example the message might be:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;"You can contact me at nospam@fictionalcompany.co.uk or nospam@myhome.com"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;and you want to extract those 2 e-mail addresses and any others in your data into columns or rows. &amp;nbsp;The solution: a modified version of our regular expression from earlier:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;[^\s\.][^\s]*@[^@\s]+\.[^@\s\.,]+&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;which only matches exactly the e-mail addresses in the string as explained below:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;[^\s\.] is any character that is not a '.' or space exactly once&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;[^\s]* is any character that is not a space zero or more times&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;@ is the '@' character exactly once&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;[^@\s]+ is any character that is not a '@' or a space one or more times&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;\. is the '.' character exactly once&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;[^@\s\.,]+ is any character that is not a '@', space, '.' or ',' one or more times&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;and the tokenise output method as so:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/S4p52iSsi2I/AAAAAAAAEes/Q3GC26yuRY8/s1600-h/RegEx5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="216" src="http://3.bp.blogspot.com/_TF2AWY4wez4/S4p52iSsi2I/AAAAAAAAEes/Q3GC26yuRY8/s640/RegEx5.JPG" width="640" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This will take an input such as:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://2.bp.blogspot.com/_TF2AWY4wez4/S4p6bC_12VI/AAAAAAAAEe0/FUQPfHNt3I8/s1600-h/RegEx6.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="44" src="http://2.bp.blogspot.com/_TF2AWY4wez4/S4p6bC_12VI/AAAAAAAAEe0/FUQPfHNt3I8/s640/RegEx6.JPG" width="640" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;and gives us an output of:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/_TF2AWY4wez4/S4p6gf6eWnI/AAAAAAAAEe8/lInRTJ6B5Lk/s1600-h/RegEx7.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="65" src="http://4.bp.blogspot.com/_TF2AWY4wez4/S4p6gf6eWnI/AAAAAAAAEe8/lInRTJ6B5Lk/s200/RegEx7.JPG" width="200" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Now, try to do that without using RegEx!&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This example again can be seen in full in the module RegEx_Example_Part2.yxmd downloadable here:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/RegEx^_Example^_Part2.zip" style="background-color: #fcfcfc; height: 115px; padding: 0; width: 98px;" title="Preview"&gt;&lt;/iframe&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;In part 3 I will look at the last and in my opinion the most useful of the RegEx tools methods: replace.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-340457410494238458?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/340457410494238458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/02/regex-and-alteryx-part-2.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/340457410494238458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/340457410494238458'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/02/regex-and-alteryx-part-2.html' title='RegEx and Alteryx (Part 2)'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_TF2AWY4wez4/S4puX8QjLgI/AAAAAAAAEec/1zodQRU0i4c/s72-c/RegEx3.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-5215745914836028031</id><published>2010-02-20T07:41:00.000-08:00</published><updated>2010-02-20T07:54:59.102-08:00</updated><title type='text'>RegEx and Alteryx (Part 1)</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_TF2AWY4wez4/S349YAJ0nMI/AAAAAAAAEeE/u4A0m2_QNqw/s1600-h/RegEx.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5439852882477489346" src="http://1.bp.blogspot.com/_TF2AWY4wez4/S349YAJ0nMI/AAAAAAAAEeE/u4A0m2_QNqw/s320/RegEx.JPG" style="float: right; height: 218px; margin-bottom: 10px; margin-left: 10px; margin-right: 0px; margin-top: 0px; width: 211px;" /&gt;&lt;/a&gt;&lt;br /&gt;RegEx (or Regular Expressions) are a method for processing text which has its background in UNIX and perl.  They are a fairly complex but incredibly powerful way of manipulating text strings, and what more, support for using them is built directly into Alteryx!&lt;br /&gt;&lt;br /&gt;Firstly I would like to start with the basics of regular expressions with a simple example: e-mail address format validation. Consider the basic validation rules for an e-mail address:  It must consist of a series of characters followed by a '@' symbol followed by another series of characters which must contain at least one '.' symbol (In actual fact you can have more complex rules than this for e-mail validation, but to keep this example simple we will stick with this simple definition).&lt;br /&gt;&lt;br /&gt;I began to think how I would produce this validation in Alteryx without using RegEx.  The most logical approach I came up with was the Alteryx formula tool:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First we look for the '@' symbol using the FINDSTRING function, so our first validation rule is FINDSTRING([emailaddress], '@') &amp;gt; 0 which checks there exists at least one @ in the address.  Next we need to check for at least one '.' symbol after that @.  Again we can use the FINDSTRING function after first removing everything before the '@' like so FINDSTRING(SUBSTRING([emailaddress],FINDSTRING([emailaddress], '@')),'.') &amp;gt; 0.  Which gives us a formula to implement this basic validation like so&lt;br /&gt;&lt;br /&gt;FINDSTRING([emailaddress], '@') &amp;gt; 0 and FINDSTRING(SUBSTRING([emailaddress],FINDSTRING([emailaddress], '@')),'.') &amp;gt; 0&lt;br /&gt;&lt;br /&gt;So not too bad, but what if we now want to check that there isn't a second @ after the first and it doesn't start with a '.'?  That formula is staring to look more complex and will only continue to do so as we add more rules.&lt;br /&gt;&lt;br /&gt;FINDSTRING([emailaddress], '@') &amp;gt; 0 and FINDSTRING(SUBSTRING([emailaddress],FINDSTRING([emailaddress], '@')),'.') &amp;gt; 0 and FINDSTRING(SUBSTRING([emailaddress],FINDSTRING([emailaddress], '@')+1),'@') == -1 and left([emailaddress],1) != '.'&lt;br /&gt;&lt;br /&gt;OK so how does it work the RegEx way?  First we need a regular expression which will match our rule which is this &lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;^.+@.+\..+$&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At which point, for those who don't know RegEx we come to our first drawback:  it is an entire new topic in its own right which needs to be learned; and until you have spent some time learning the rules (and probably for a while after you have learnt them) regular expressions look like gobbledygook.  There's no getting round it: they come from a time in computing when memory and storage were extremely limited and developers had to make every character count, but once you get your head round them they can be incredibly useful.&lt;br /&gt;&lt;br /&gt;I can explain the one above as follows:&lt;br /&gt;&lt;br /&gt;^ indicates the start of the string&lt;br /&gt;.+ is any character one or more times&lt;br /&gt;@ is the '@' character exactly once&lt;br /&gt;.+ is any character one or more times&lt;br /&gt;\. is the '.' character exactly once&lt;br /&gt;.+ is any character one or more times&lt;br /&gt;$ indicates the end of the string&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;then we can use this in Alteryx, again still using the formula tool with the following expression:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;REGEX_MATCH([emailaddress], '^.+@.+\..+$')&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So this shows us the first way of using RegEx in Alteryx.  The REGEX_MATCH function returns true if the string matches the regular expression, false if it does not.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now how do we add our 2 extra rules of checking that there isn't a second @ after the first or it doesn't start with a '.'?  Well, a slightly modified regular expression like so:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;^[^\.].*@[^@]+\.[^@]+$&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Which broken into its components is&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;^ indicates the start of the string&lt;br /&gt;[^\.] is any character that is not a '.'  exactly once&lt;/div&gt;&lt;div&gt;.* is any character zero or more times&lt;br /&gt;@ is the '@' character exactly once&lt;br /&gt;[^@]+ is any character that is not a '@' one or more times&lt;br /&gt;\. is the '.' character exactly once&lt;br /&gt;[^@]+ is any character that is not a '@' one or more times&lt;br /&gt;$ indicates the end of the string&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So our formula becomes&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;REGEX_MATCH([emailaddress], '^[^\.].*@[^@]+\.[^@]+$')&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Alternatively we can use the Alteryx tool RegEx to do the same thing using the output method 'Match' as shown below:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TF2AWY4wez4/S37U-U1JoJI/AAAAAAAAEeU/bqo6oCBCMc8/s1600-h/RegEx2.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" height="371" id="BLOGGER_PHOTO_ID_5440019567118753938" src="http://3.bp.blogspot.com/_TF2AWY4wez4/S37U-U1JoJI/AAAAAAAAEeU/bqo6oCBCMc8/s640/RegEx2.JPG" style="display: block; height: 232px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center; width: 400px;" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The three&amp;nbsp;different validation&amp;nbsp;methods&amp;nbsp;can be seen in the example&amp;nbsp;Alteryx&amp;nbsp;module that can be downloaded from here:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-7754be96cf065e9a.skydrive.live.com/embedicon.aspx/.Public/RegEx^_Example^_Part1.zip" style="background-color: #fcfcfc; height: 115px; padding: 0; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;If that was all you could do with RegEx then it really wouldn't be worth the effort of learning a new&amp;nbsp;language&amp;nbsp;for. &amp;nbsp;But that is just the start of what we can do and the real power of RegEx becomes apparent when we start using some of the other RegEx methods available in Alteryx such as the REGEX_REPLACE function and the parse method, which I will look at in part 2 of this blog post.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-5215745914836028031?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/5215745914836028031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/02/regex-and-alteryx-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/5215745914836028031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/5215745914836028031'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/02/regex-and-alteryx-part-1.html' title='RegEx and Alteryx (Part 1)'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TF2AWY4wez4/S349YAJ0nMI/AAAAAAAAEeE/u4A0m2_QNqw/s72-c/RegEx.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5981114890639901811.post-7951955979508101831</id><published>2010-02-20T07:30:00.000-08:00</published><updated>2010-02-20T07:30:21.948-08:00</updated><title type='text'>Welcome</title><content type='html'>Taking inspiration from Ron House I thought I might offer some musings on Alteryx from this side of the Atlantic.  I've got a couple of topics already that I want to post and Alteryx has a habit of making me come up with new ideas and techniques, so I hope there will be plenty more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5981114890639901811-7951955979508101831?l=www.chaosreignswithin.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.chaosreignswithin.com/feeds/7951955979508101831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.chaosreignswithin.com/2010/02/welcome.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/7951955979508101831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5981114890639901811/posts/default/7951955979508101831'/><link rel='alternate' type='text/html' href='http://www.chaosreignswithin.com/2010/02/welcome.html' title='Welcome'/><author><name>Adam Riley</name><uri>https://profiles.google.com/117654362583168153307</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-m_sFbvq3wZU/AAAAAAAAAAI/AAAAAAAAE7c/kLwyoECxgnw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
