<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SSIS Junkie : Data Explorer</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/tags/Data+Explorer/default.aspx</link><description>Tags: Data Explorer</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>M lives!</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2013/03/12/m-lives.aspx</link><pubDate>Tue, 12 Mar 2013 21:07:01 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48223</guid><dc:creator>jamiet</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/48223.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=48223</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=48223</wfw:comment><description>&lt;p&gt;In 2007 Microsoft announced a program of work under the codename Oslo which was intended to be a modelling technology and if you believed the hype this was going to be a very big initiative within Microsoft. By September 2010 Oslo was effectively dead (read blog post &lt;a href="http://blogs.msdn.com/b/modelcitizen/archive/2010/09/22/update-on-sql-server-modeling-ctp-repository-modeling-services-quot-quadrant-quot-and-quot-m-quot.aspx" target="_blank"&gt;Update on SQL Server Modeling CTP (Repository/Modeling Services, &amp;quot;Quadrant&amp;quot; and &amp;quot;M&amp;quot;&lt;/a&gt;) and if my memory serves me correctly that was quite a lot of anger from customers that had invested time and effort into Oslo. Specifically the three parts of Oslo that were killed were:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The Oslo Repository &lt;/li&gt;    &lt;li&gt;Quadrant – Effectively a query tool for SQL Server that featured an infinite canvas (which I actually really liked) &lt;/li&gt;    &lt;li&gt;M – a modelling language &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;M in particular had a lot of hype behind it and many people were mystified when it was seemingly canned. In the aforementioned blog post the lead architect for Oslo, Don Box, had this to say:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;we created a language codenamed “M” for defining schema, constraints, queries, and transformations. While we used “M” to build the “Oslo” repository and “Quadrant,” there has been significant interest both inside and outside of Microsoft in using “M” for other applications. We are continuing our investment in this technology and will share our plans for productization once they are concrete.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So there was a promise to keep M alive but since then nothing has been heard of it and I suspect many people (including myself) assumed it had gone the way of the dodo. As it turns out that isn’t the case, M does indeed live on as the query language that underpins the recently released Microsoft Data Explorer for Excel Preview (see my blog post &lt;a title="http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/27/data-explorer-hits-full-preview.aspx" href="http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/27/data-explorer-hits-full-preview.aspx" target="_blank"&gt;Data Explorer hits full preview&lt;/a&gt; for more info). An updated version of Data Explorer was released today (read: &lt;a title="http://blogs.msdn.com/b/dataexplorer/archive/2013/03/12/a-new-build-of-data-explorer-and-an-auto-update-feature.aspx" href="http://blogs.msdn.com/b/dataexplorer/archive/2013/03/12/a-new-build-of-data-explorer-and-an-auto-update-feature.aspx" target="_blank"&gt;A new build of “Data Explorer”, and an Auto Update feature&lt;/a&gt;) and one of the new features is something they call Advanced Query Editing, that is the ability to see the underlying query that gets built by the UI. Here’s an example I lifted from my previous post &lt;a title="http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/28/traversing-the-facebook-graph-using-data-explorer.aspx" href="http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/28/traversing-the-facebook-graph-using-data-explorer.aspx" target="_blank"&gt;Traversing the Facebook Graph using Data Explorer&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/SNAGHTML2a9e666_786816C9.png"&gt;&lt;img title="SNAGHTML2a9e666" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="SNAGHTML2a9e666" src="http://sqlblog.com/blogs/jamie_thomson/SNAGHTML2a9e666_thumb_3E0CA0E8.png" width="615" height="246" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That query language…is M. Here it is in raw copyable form:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Consolas"&gt;let       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Source = Facebook.Graph(&amp;quot;&lt;/font&gt;&lt;a href="https://graph.facebook.com/me/statuses&amp;quot;)"&gt;&lt;font face="Consolas"&gt;https://graph.facebook.com/me/statuses&amp;quot;)&lt;/font&gt;&lt;/a&gt;&lt;font face="Consolas"&gt;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; #&amp;quot;Expand likes&amp;quot; = Table.ExpandTableColumn(Source, &amp;quot;likes&amp;quot;, {&amp;quot;name&amp;quot;}, {&amp;quot;likes.name&amp;quot;}),        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; #&amp;quot;Expand comments&amp;quot; = Table.ExpandTableColumn(#&amp;quot;Expand likes&amp;quot;, &amp;quot;comments&amp;quot;, {&amp;quot;message&amp;quot;}, {&amp;quot;comments.message&amp;quot;}),        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; HiddenOtherColumns = Table.SelectColumns(#&amp;quot;Expand comments&amp;quot;,{&amp;quot;message&amp;quot;, &amp;quot;likes.name&amp;quot;, &amp;quot;comments.message&amp;quot;})        &lt;br /&gt;in        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; HiddenOtherColumns&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;At this stage its looking very likely that Data Explorer will come to market which means that Don Box wasn’t lying and one of the most lamented parts of Oslo will do too. Data Explorer is effectively a free query builder for M queries – go and &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=36803" target="_blank"&gt;download&lt;/a&gt; and have a play.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=48223" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Data+Explorer/default.aspx">Data Explorer</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/M/default.aspx">M</category></item><item><title>Weekend reading – Data Explorer, Quandl, Flatmerge and a SQL Saturday app</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2013/03/09/weekend-reading-data-explorer-quandl-flatmerge-and-a-sql-saturday-app.aspx</link><pubDate>Sat, 09 Mar 2013 18:30:04 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48152</guid><dc:creator>jamiet</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/48152.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=48152</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=48152</wfw:comment><description>&lt;p&gt;Here are some things that have piqued my interest on the interwebs over the last few days.&lt;/p&gt;  &lt;h2&gt;Parameterized queries and Security in Data Explorer&lt;/h2&gt;  &lt;p&gt;&lt;a href="https://twitter.com/technitrain" target="_blank"&gt;Chris Webb&lt;/a&gt; put a &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/dataexplorer/thread/69153a6d-2205-4456-bcac-3a4689c787cf" target="_blank"&gt;post&lt;/a&gt; up on the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/dataexplorer/threads" target="_blank"&gt;Data Explorer forum&lt;/a&gt; asking about parameterizing queries in Data Explorer and Miguel Llopis from the Data Explorer product team replied with some useful information:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;…there is some risk for users to leak information to external sources when doing this, and so we try to prevent this from being done &amp;quot;by default&amp;quot;. You can disable this level of protection by clicking the &amp;quot;Fast Combine&amp;quot; button in the Data Explorer ribbon tab. More information about Fast Combine and Privacy Levels can be found in our Help contents: &lt;/em&gt;&lt;a href="http://office.microsoft.com/en-us/excel-help/privacy-levels-HA104009800.aspx"&gt;&lt;em&gt;http://office.microsoft.com/en-us/excel-help/privacy-levels-HA104009800.aspx&lt;/em&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Following Miguel’s link shows this information:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://office.microsoft.com/en-us/excel-help/privacy-levels-HA104009800.aspx" target="_blank"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_147A0709.png" width="565" height="345" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So, default behaviour in Data Explorer is that the user is protected from inadvertently leaking information to 3rd parties.&amp;#160; Its good to know that security has been prevalent thinking within the Data Explorer team however users do need to be aware that this behaviour exists, hence my mentioning it here.&lt;/p&gt;  &lt;h2&gt;Quandl – a search engine for datasets&lt;/h2&gt;  &lt;p&gt;I have stumbled across a site called &lt;a href="http://www.quandl.com/" target="_blank"&gt;Quandl&lt;/a&gt; that looks interesting, it bills itself as “Intelligent search for numerical data”. Essentially this is a search engine for finding datasets on the web which should be a useful resource in the emerging world of self service BI.&lt;/p&gt;  &lt;p&gt;I’m writing this on a train so as an example I used Quandl to search for data on UK train journeys and first result was &lt;a href="http://www.quandl.com/EUROSTAT-EuroStat/RAIL_TF_TRAINMV_105-Train-movements-1000-Train-kilometre-Passenger-trains-United-Kingdom" target="_blank"&gt;Train movements : 1000 Train-kilometre : Passenger trains : United Kingdom&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_06979B41.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_770463A4.png" width="571" height="593" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here we have some raw data pertaining to train movements in the UK from 2004 to 2011. Quandl provides a chart of the data, a link to the source and an indication of the age of the data. It also enables us to download the data and provides Excel, CSV, JSON &amp;amp; XML as choices of data format.&lt;/p&gt;  &lt;p&gt;An interesting idea indeed, Quandl is in its infancy though I shall be keeping a watching brief to see if it turns out to be a success or not.&lt;/p&gt;  &lt;h2&gt;Publish your own datasets with Flatmerge&lt;/h2&gt;  &lt;p&gt;The aforementioned Chris Webb put me onto this one. &lt;a href="http://flatmerge.com" target="_blank"&gt;Flatmerge&lt;/a&gt; is a startup from Michigan, US that enables one to publish their data for public consumption:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_0325DDCC.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_0F4757F3.png" width="758" height="211" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;With the FlatMerge data storage platform it's easy to share data in the cloud and use it in other applications. Just upload data and let FlatMerge discover it's &lt;b&gt;actual&lt;/b&gt; data types and make the data and metadata available in JSON or XML format through (&lt;/em&gt;&lt;a href="http://www.odata.org/documentation/uri-conventions#QueryStringOptions"&gt;&lt;em&gt;OData&lt;/em&gt;&lt;/a&gt;&lt;em&gt;) URL queries.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Flatmerge are using &lt;a href="http://www.odata.org" target="_blank"&gt;OData&lt;/a&gt;-compliant URI query formats and &lt;a href="http://twitter.com/Flatmerge/status/308267611731394560" target="_blank"&gt;they tell me&lt;/a&gt; that OData output is coming soon:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;a href="http://twitter.com/Flatmerge/status/308267611731394560" target="_blank"&gt;We currently support some OData queries. Data/Meta is returned in plain JSON or XML. OData output is coming soon!&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That Flatmerge chose to use OData to publish their data is interesting – I’ve long suspected that greater OData adoption wouldn’t be far away once Excel natively supported it as an external data source and Flatmerge have realised the value in doing this. Flatmerge enables one to publish data to the web, Quandl helps people find data on the web – perhaps these two should go out for coffee sometime &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style:none;border-left-style:none;border-bottom-style:none;border-right-style:none;" alt="Smile" src="http://sqlblog.com/blogs/jamie_thomson/wlEmoticon-smile_06E3829C.png" /&gt;&lt;/p&gt;  &lt;h2&gt;SQL Saturday app for Windows Phone&lt;/h2&gt;  &lt;p&gt;&lt;a href="https://twitter.com/sqltechmike" target="_blank"&gt;Michael Wells&lt;/a&gt; has built a Windows Phone app for SQL Saturday (particularly pertinent for me at the moment as I am on my way home form &lt;a href="http://www.sqlsaturday.com/194/" target="_blank"&gt;SQL Saturday 194&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_2626296F.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_434BD179.png" width="547" height="450" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It provides data about each event, including the all important schedule information.&lt;/p&gt;  &lt;p&gt;I have slightly mixed feelings about this. On the one hand its fantastic to see a community member voluntarily build a great FREE resource for the SQL community – massive credit to Michael for doing this. On the other hand it highlights one of my pet peeves about the current app culture that is prevalent on smartphones – this is an app that you can only use if you have a certain type of phone. The information presented here is valuable and given away for free, why is it hidden behind a gated app store? Should there not be a SQL Saturday website that is optimised for and viewable on any mobile web browser? Better still, its the schedule data here that is most valuable so why not publish that data in a format that allows one to view that schedule in one’s phone/PC/tablet calendar regardless of the type of device they are using? That data format, by the way, is &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/tags/iCalendar/default.aspx" target="_blank"&gt;iCalendar&lt;/a&gt; which is something that regular readers are probably fed up of me &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/06/03/thinking-differently-about-bi-delivery.aspx" target="_blank"&gt;banging on about&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I hope that doesn’t detract from Michael’s great efforts here; his app is fulfilling an important need, I just happen to think its a shame that that need even exists when there are mechanisms already in place for delivering this data to us in a more efficient matter. On the other hand its hard to argue with the ease at which apps deliver information to us so perhaps I should just quietly climb down off of my soapbox! Comments are welcome!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=48152" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Data+Explorer/default.aspx">Data Explorer</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Flatmerge/default.aspx">Flatmerge</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/OData/default.aspx">OData</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Open+Data/default.aspx">Open Data</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Quandl/default.aspx">Quandl</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SQL+Saturday/default.aspx">SQL Saturday</category></item><item><title>Traversing the Facebook Graph using Data Explorer</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/28/traversing-the-facebook-graph-using-data-explorer.aspx</link><pubDate>Thu, 28 Feb 2013 22:16:44 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:47967</guid><dc:creator>jamiet</dc:creator><slash:comments>5</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/47967.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=47967</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=47967</wfw:comment><description>&lt;p&gt;As I &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/27/data-explorer-hits-full-preview.aspx" target="_blank"&gt;mentioned yesterday&lt;/a&gt; Microsoft Data Explorer Preview for Excel has hit the streets and one new feature is a built-in adapter for talking to the &lt;a href="https://developers.facebook.com/docs/reference/api/" target="_blank"&gt;Facebook Graph API&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_21EAA092.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_6EAE6728.png" width="408" height="351" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ve been taking it for a spin for today and was quite interested in its capabilities. Even without landing any data into Excel this is still a handy interactive Facebook graph explorer as I’ll demonstrate herein.&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;A good place to start is with a list of statuses. I have chosen “me” as the “Username or object id” (because frankly I didn’t know what else to put in there) and “statuses” as the dataset to return:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_546DFE04.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_2CC781DA.png" width="675" height="278" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After the standard merry authentication dance with Facebook Connect one’s history of Facebook statuses is returned which on its own might make interesting reading:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLc6a91d4_24CFDF78.png"&gt;&lt;img title="SNAGHTMLc6a91d4" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="SNAGHTMLc6a91d4" src="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLc6a91d4_thumb_08DEAA80.png" width="999" height="422" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;however let’s do something a bit more interesting. I remove the columns I’m not interested in:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLc6db2eb_312DDCD4.png"&gt;&lt;img title="SNAGHTMLc6db2eb" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="SNAGHTMLc6db2eb" src="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLc6db2eb_thumb_2EA4AB16.png" width="993" height="305" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;to leave just my statuses, likes and comments:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLc6e96f2_482C3843.png"&gt;&lt;img title="SNAGHTMLc6e96f2" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="SNAGHTMLc6e96f2" src="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLc6e96f2_thumb_32624FE6.png" width="460" height="207" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notice that the likes and comments fields contain either a hyperlinked “Table” or &lt;em&gt;null,&lt;/em&gt; “Table” means we have a set of likes or comments respectively – in other words Data Explorer is letting me browse through the one-to-many relationships inherent in the data and I happen to think that is very cool indeed. For example, selecting a link shows me the likes or comments respectively for the status in question (“Want to hear my Elton John joke? Its a little bit funny…”):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLcb762f9_460F397A.png"&gt;&lt;img title="SNAGHTMLcb762f9" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="SNAGHTMLcb762f9" src="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLcb762f9_thumb_23D72DF4.png" width="1031" height="308" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;What would be more interesting would be if I could expand to show all comments against a status and also who made that comment. Turns out we can do just that, first click on this button called “Expand”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_6CAD9FFA.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_450723D0.png" width="345" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;which displays a list of columns that I want to show in the resultset; I choose “from” &amp;amp; “message”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_721C109E.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_4A759474.png" width="371" height="336" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;and now I can see all the comments against the relevant status. For all you out there whose heads are in SQL-land, I’ve effectively LEFT JOINed statuses to comments:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_706B44CA.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_78BEF454.png" width="858" height="171" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Last step, the comments.from field tells me who left the comment:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_7B84A947.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_28999616.png" width="535" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So let’s do a similar trick to show the name of the commenter in my resultset and voila:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLc870b67_2E7439AF.png"&gt;&lt;img title="SNAGHTMLc870b67" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="SNAGHTMLc870b67" src="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLc870b67_thumb_3376775E.png" width="961" height="227" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;we have a list of my statuses along with all the comments and the name of the person that made the comment! We have effectively joined three linked datasets (statuses, comments, person), all inside Excel, and all without writing a scrap of code. Personally I think that’s very cool.&lt;/p&gt;  &lt;p&gt;   &lt;hr /&gt;Now let’s go back to just our list of statuses:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLc6e96f2_11AA9ECD.png"&gt;&lt;img title="SNAGHTMLc6e96f2" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="SNAGHTMLc6e96f2" src="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLc6e96f2_thumb_29CE0928.png" width="460" height="207" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Let’s say we now want to count the number of likes and comments on each status and sort the data accordingly. I use the expand feature as before except this time I choose to aggregate rather than expand:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_28897049.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_2ED046D7.png" width="377" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That gives me the number of likes and comments per status which I can then sort however I choose:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_6DC1C772.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_3129C8D5.png" width="402" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;and with a couple of quick aesthetic column renames I have all my statuses with number of likes and comments in descending order of popularity (as measured by the count of likes):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLca00a5e_305162EB.png"&gt;&lt;img title="SNAGHTMLca00a5e" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="SNAGHTMLca00a5e" src="http://sqlblog.com/blogs/jamie_thomson/SNAGHTMLca00a5e_thumb_1D30363F.png" width="582" height="339" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I can then pull that resultset into Excel and chart it to see if there is any correlation between number of likes and number of comments:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_3B9A7728.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_28794A7C.png" width="574" height="336" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Imagine aggregating over something more interesting than Facebook statuses and I think you can realise the potential here.&lt;/p&gt;  &lt;p&gt;   &lt;hr /&gt;Hopefully this has served as a useful introduction to Data Explorer’s ability to query Facebook data. What interests me most about this is not the ability to query Facebook per se, its the ability to query and traverse over graph data using a tool that isn’t aimed at developers. Now imagine being being able to do the same with the growing corpus of &lt;a href="http://linkeddata.org/" target="_blank"&gt;linked data&lt;/a&gt; graphs that exist on the web in RDF format and you start to realise the potential here; I truly hope that the ability to query RDF data is high on the agenda of the Data Explorer team*.&lt;/p&gt;  &lt;p&gt;If you want to have a go with Data Explorer yourself then go ahead and download it from &lt;a title="http://www.microsoft.com/en-us/download/details.aspx?id=36803" href="http://www.microsoft.com/en-us/download/details.aspx?id=36803"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=36803&lt;/a&gt;; its free, although you will need Excel 2010 or Excel 2013 installed.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;* For what its worth I’ve had a watching brief on RDF, the Semantic Web and Linked Data since way back in &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/2004/11/13/The-semantic-web-and-FOAF.aspx" target="_blank"&gt;November 2004&lt;/a&gt; and I’ve been waiting since then for it to hit the big time. I don’t think that’s going to happen any time soon but having support from tools like Data Explorer would be a step in the right direction.&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=47967" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Data+Explorer/default.aspx">Data Explorer</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Graph+API/default.aspx">Graph API</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/linked+data/default.aspx">linked data</category></item><item><title>Data Explorer hits full preview</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/27/data-explorer-hits-full-preview.aspx</link><pubDate>Wed, 27 Feb 2013 15:49:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:47939</guid><dc:creator>jamiet</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/47939.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=47939</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=47939</wfw:comment><description>&lt;h2&gt;A short recap&lt;/h2&gt;  &lt;p&gt;At the &lt;a href="http://www.sqlpass.org/Events/PASSSummit.aspx" target="_blank"&gt;PASS Summit&lt;/a&gt; 2011 a project that existed as part of the now-defunct SQL Azure Labs was announced – Data Explorer. I posted some initial thoughts at &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2011/10/24/thoughts-on-data-explorer.aspx" target="_blank"&gt;Thoughts on Data Explorer&lt;/a&gt; and continued to post &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Data+Explorer/default.aspx" target="_blank"&gt;some walkthroughs and feedback&lt;/a&gt;. Data Explorer was an interesting technology to me which in October 2011 I described as:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Data Explorer is an ETL tool and given my obvious SSIS affiliations that makes it very interesting to me. That it runs as a cloud service and will be available to non-developers only makes it more intriguing and I can't wait until Data Explorer becomes available for us to tinker with later this year.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That being said Data Explorer always felt uncomfortably as if it was an interesting piece of tech trying to find both a problem to solve and a place to live.&lt;/p&gt;  &lt;h2&gt;Now in preview&lt;/h2&gt;  &lt;p&gt;Today the second of those conundrums has been answered by the release of a new public preview; Data Explorer is going to live in Excel and its official title is now “Microsoft Data Explorer Preview for Excel” (I still dislike the name by the way):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a title="Microsoft &amp;quot;Data Explorer&amp;quot; Preview for Excel" href="http://www.microsoft.com/en-us/download/details.aspx?id=36803" target="_blank"&gt;&lt;img title="SNAGHTML6084ac5" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="SNAGHTML6084ac5" src="http://sqlblog.com/blogs/jamie_thomson/SNAGHTML6084ac5_7D3D474C.png" width="762" height="481" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Here’s a video that describes Data Explorer’s pitch today:&lt;/p&gt;  &lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:fc2e55be-b9c5-49d0-a7fe-253b97551ae1" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;"&gt;&lt;div&gt;&lt;object&gt;&lt;embed src="http://www.youtube.com/v/WMMMNkPBPhI?hl=en&amp;amp;hd=1"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="width:834px;clear:both;font-size:.8em;"&gt;Microsoft Data Explorer Preview for Excel&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;em&gt;If the video doesn’t render properly check it out &lt;a href="http://www.youtube.com/v/WMMMNkPBPhI?hd=1" target="_blank"&gt;on YouTube&lt;/a&gt; instead.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;From the video:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Data Explorer enhances the &lt;strong&gt;self-service&lt;/strong&gt; experience in &lt;strong&gt;Excel &lt;/strong&gt;by simplifying data discovery and &lt;strong&gt;access to a broad range of public and enterprise data sources &lt;/strong&gt;enabling richer insights from data that has traditionally been difficult for users to get at.&lt;/em&gt;       &lt;br /&gt;(emphasis is mine)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In short, Data Explorer is targeted at Excel users (Microsoft calls them “Information Workers”) and now looks like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_4928A7F9.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_0741C2AB.png" width="1097" height="409" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;em&gt;The data in this screenshot was imported from &lt;/em&gt;&lt;a title="http://en.wikipedia.org/wiki/Super_league" href="http://en.wikipedia.org/wiki/Super_league"&gt;&lt;em&gt;http://en.wikipedia.org/wiki/Super_league&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;which (I think) is neat and tidy and pretty intuitive whereas a year ago it looked like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_18FFAA82.png" width="289" height="211" /&gt;       &lt;br /&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_4A131FA3.png" width="743" height="210" /&gt;       &lt;br /&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_2F26ADFD.png" width="513" height="205" /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;and didn’t seemingly know what it wanted to be other than yet another tool for developers. It didn’t have an identity and it didn’t have a &lt;em&gt;raison d’etre&lt;/em&gt;. Today’s preview release goes some way to solving those things.&lt;/p&gt;  &lt;h2&gt;Online Search&lt;/h2&gt;  &lt;p&gt;One very interesting new feature is Online Search which enables you to search the web for datasets. In this example I use the feature to search for data on Apollo space missions:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_404F580D.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_11899F6B.png" width="406" height="309" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I find a list of all the missions and with one click its in Excel:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_495BE38E.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_6759F182.png" width="1155" height="254" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;where I can do all the normal stuff that one would normally do in Excel. Here I have used Excel 2013’s &lt;a href="http://blogs.office.com/b/microsoft-excel/archive/2012/08/08/flash-fill.aspx" target="_blank"&gt;Flash Fill&lt;/a&gt; feature to extract the year and pivot the data to discover which rocket was most popular and in which year the most missions were launched:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_19DD4EF5.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_7236D2CA.png" width="492" height="256" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You get the idea. This is powerful stuff! The workbook that I built for this simple demo is available for viewing online or download at &lt;a title="https://skydrive.live.com/redir?page=view&amp;amp;resid=550F681DAD532637!70403&amp;amp;authkey=!AIID5CU3RFNemQQ" href="https://skydrive.live.com/redir?page=view&amp;amp;resid=550F681DAD532637!70403&amp;amp;authkey=!AIID5CU3RFNemQQ" target="_blank"&gt;20130227 Apollo Missions - Simple Data Explorer Demo.xlsx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Today’s release is also the first from a product team that has a number of other interesting projects in the pipeline that you will see more of in 2013 – watch this space.&lt;/p&gt;  &lt;h2&gt;Data Explorer. Is it A2P?&lt;/h2&gt;  &lt;p&gt;One last point I’ll make is that Data Explorer as it exists today ably fulfils the “Acquire” and “Processing” aspects of &lt;a href="http://seabourneinc.com/2013/02/08/rethinking-etl-for-the-api-age/" target="_blank"&gt;Mike Reich’s A2P approach&lt;/a&gt; which I talked about only twelve days ago at &lt;a title="http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/15/etl-is-dead-long-live-ap2.aspx" href="http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/15/etl-is-dead-long-live-ap2.aspx" target="_blank"&gt;ETL is dead, long live AP2 ?&lt;/a&gt;. Interestingly Data Explorer in its October 2011 guise also provided the last part of A2P – “Publishing” (I demo’d the Publishing ability at &lt;a title="http://sqlblog.com/blogs/jamie_thomson/archive/2011/12/07/data-explorer-walkthrough-parsing-a-twitter-list.aspx" href="http://sqlblog.com/blogs/jamie_thomson/archive/2011/12/07/data-explorer-walkthrough-parsing-a-twitter-list.aspx" target="_blank"&gt;Data Explorer walkthrough – Parsing a Twitter list&lt;/a&gt;) however that ability has been removed in this release in favour of landing the data into Excel. I remain hopeful that the ability to publish a Data Explorer feed returns in the future.&lt;/p&gt;  &lt;h2&gt;Get the bits&lt;/h2&gt;  &lt;p&gt;Download “Microsoft Data Explorer Preview for Excel” from &lt;a title="http://www.microsoft.com/en-us/download/details.aspx?id=36803" href="http://www.microsoft.com/en-us/download/details.aspx?id=36803"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=36803&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Read more&lt;/h2&gt;  &lt;p&gt;I’m not the only one blogging about this. Check out:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://cwebbbi.wordpress.com/2013/02/27/public-preview-of-data-explorer/" target="_blank"&gt;Public Preview of Data Explorer&lt;/a&gt; by Chris Webb&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/dataexplorer/archive/2013/02/27/announcing-microsoft-data-explorer-preview-for-excel.aspx" target="_blank"&gt;Announcing Microsoft “Data Explorer” Preview for Excel&lt;/a&gt; by the Data Explorer product team&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=47939" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Data+Explorer/default.aspx">Data Explorer</category></item><item><title>Querying RSS feed subscriber count on Google Reader using Data Explorer‏</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2011/12/21/querying-rss-feed-subscriber-count-on-google-reader-using-data-explorer.aspx</link><pubDate>Wed, 21 Dec 2011 20:29:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:40583</guid><dc:creator>jamiet</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/40583.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=40583</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=40583</wfw:comment><description>&lt;p&gt;I have been fiddling about with &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Data+Explorer/default.aspx" target="_blank"&gt;Data Explorer&lt;/a&gt; some more and have built an interesting little mashup that enables one to discover the number of Google Reader subscribers to &lt;a href="http://sqlblog.com/blogs/bloggers.aspx?GroupID=4"&gt;each RSS feed on SQLBlog.com&lt;/a&gt;. Before I show you how its built I'll whet your appetite with a screenshot of the output:&lt;/p&gt;  &lt;blockquote&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/excelscr_7AAF07D3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="excelscr" border="0" alt="excelscr" src="http://sqlblog.com/blogs/jamie_thomson/excelscr_thumb_38C82285.png" width="576" height="404" /&gt;&lt;/a&gt;&lt;/blockquote&gt; For brevity I have deliberately hidden some of the results however you can see the full dataset for yourself (and see if any of the numbers have changed since I took this screenshot) by visiting &lt;a href="https://ws41451459.dataexplorer.sqlazurelabs.com/Published/SQLBlog%20subscriber%20counts%20on%20Google%20Reader"&gt;https://ws41451459.dataexplorer.sqlazurelabs.com/Published/SQLBlog%20subscriber%20counts%20on%20Google%20Reader&lt;/a&gt; and opening the data in the format of your choosing (i.e. Excel, OData or CSV). All the data is publicly available as is the mashup so you won't have any difficulty in accessing it. Opening the data yourself will also illustrate how long it takes Data Explorer to execute the mashup which, when you consider that the mashup queries the Google Reader API for data on each RSS feed in turn, could be quite interesting in itself.   &lt;br /&gt;So, how is it done? Its very simple once you know how, my mashup has four resources:   &lt;blockquote&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/resources_702E33B3.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="resources" border="0" alt="resources" src="http://sqlblog.com/blogs/jamie_thomson/resources_thumb_0447503D.png" width="398" height="281" /&gt;&lt;/a&gt;&lt;/blockquote&gt; Which we can take a look at in turn.   &lt;br /&gt;  &lt;h2&gt;Resource: StripOutCommas&lt;/h2&gt; This is simply a function that will remove commas from a string, this is important because the API that we are using returns numbers as text and any numbers greater than 999 get commas inserted. It is defined simply as:   &lt;blockquote&gt;   &lt;h3&gt;(value) =&amp;gt; Text.Replace(value,&amp;quot;,&amp;quot;,&amp;quot;&amp;quot;) &lt;/h3&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;&amp;#160;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/stripoutcommas_1BFE87A3.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="stripoutcommas" border="0" alt="stripoutcommas" src="http://sqlblog.com/blogs/jamie_thomson/stripoutcommas_thumb_466AB8C0.png" width="413" height="174" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;/blockquote&gt;  &lt;h2&gt;Resource: List Of Feeds&lt;/h2&gt; Simply a list of RSS feeds for which we are going to get the subscriber count. The first task, &amp;quot;Typed list of feeds&amp;quot; , is our typed-in list of RSS feeds:   &lt;blockquote&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/listoffeeds_7A32AF11.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="listoffeeds" border="0" alt="listoffeeds" src="http://sqlblog.com/blogs/jamie_thomson/listoffeeds_thumb_6B1BD037.png" width="477" height="475" /&gt;&lt;/a&gt;&lt;/blockquote&gt;  &lt;br /&gt;The second task, &amp;quot;Convert to table&amp;quot;, does exactly what it says on the tin:   &lt;blockquote&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/converttotable_708A40DB.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="converttotable" border="0" alt="converttotable" src="http://sqlblog.com/blogs/jamie_thomson/converttotable_thumb_41C48839.png" width="381" height="350" /&gt;&lt;/a&gt;&lt;/blockquote&gt;  &lt;p&gt;&lt;em&gt;N.B. I have, by the way, complained loudly about the inability to resize columns in the Data Explorer UI.&lt;/em&gt;&lt;/p&gt;  &lt;h2&gt;Resource: GetNumberOfSubscribersForFeed&lt;/h2&gt;  &lt;p&gt;This is where the real work occurs. We are using an &lt;a href="http://blog.cartercole.com/2010/06/google-reader-subscriber-statistics-api.html"&gt;API provided by Carter Cole&lt;/a&gt; at &lt;a href="http://cartercole.com/dev/api/greaderapi.asp"&gt;http://cartercole.com/dev/api/greaderapi.asp&lt;/a&gt; that wraps the Google Reader API thus making it easy to query for number of subscribers.&lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;(feed) =&amp;gt; StripOutCommas(Json.Document(Web.Contents(&amp;quot;http://cartercole.com/dev/api/greaderapi.asp&amp;quot;, [Query = [feed = feed]]))[subscribers]) &lt;/h3&gt;    &lt;h3&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/getnumberofsubscribers_6E6D4212.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="getnumberofsubscribers" border="0" alt="getnumberofsubscribers" src="http://sqlblog.com/blogs/jamie_thomson/getnumberofsubscribers_thumb_1F2049BE.png" width="957" height="171" /&gt;&lt;/a&gt;&lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;Here I have essentially defined a function that (1) calls Carter's API, (2) passes it a parameter called feed, (3) converts the result into a JSON document, (4) extracts the &amp;quot;subscribers&amp;quot; value and (5) passes the result to StripOutCommas().&lt;/p&gt;  &lt;h2&gt;Resource: Number Of Subscribers Per Feed&lt;/h2&gt;  &lt;p&gt;This resource is what pulls everything together. Firstly the &amp;quot;Call func on each RSS feed&amp;quot; task calls our &amp;quot;GetNumberOfSubscribersForFeed&amp;quot; resource on each RSS feed in the &amp;quot;List Of Feeds&amp;quot; resource:&lt;/p&gt;  &lt;blockquote&gt;&lt;font size="4"&gt;&lt;strong&gt;Table.AddColumn(#&amp;quot;List Of Feeds&amp;quot;, &amp;quot;NumberOfSubscribers&amp;quot;, each GetNumberOfSubscribersForFeed([feed]))&lt;/strong&gt;&lt;/font&gt;     &lt;br /&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/numberofsubscribersperfeed_4BC90397.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="numberofsubscribersperfeed" border="0" alt="numberofsubscribersperfeed" src="http://sqlblog.com/blogs/jamie_thomson/numberofsubscribersperfeed_thumb_43D16135.png" width="742" height="213" /&gt;&lt;/a&gt;&lt;/blockquote&gt;  &lt;p&gt;   &lt;br /&gt;The &amp;quot;Rename column&amp;quot;, &amp;quot;Convert Text to Integer&amp;quot; &amp;amp; &amp;quot;Sort Subscribers DESC&amp;quot; tasks are, hopefully, self-explanatory.&lt;/p&gt;  &lt;h2&gt;Consume&lt;/h2&gt;  &lt;p&gt;And that's it! As already stated the mashup has been published at &lt;a href="https://ws41451459.dataexplorer.sqlazurelabs.com/Published/SQLBlog%20subscriber%20counts%20on%20Google%20Reader"&gt;https://ws41451459.dataexplorer.sqlazurelabs.com/Published/SQLBlog%20subscriber%20counts%20on%20Google%20Reader&lt;/a&gt; from where you can:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download the mashup output as a CSV file &lt;/li&gt;    &lt;li&gt;Download the mashup output as an Excel document &lt;/li&gt;    &lt;li&gt;Download the mashup itself so you can play with it at your leisure &lt;/li&gt;    &lt;li&gt;View the output in an &lt;a href="https://ws41451459.dataexplorer.sqlazurelabs.com/Published/SQLBlog%20subscriber%20counts%20on%20Google%20Reader/Feed/Number%20of%20Subscribers%20per%20feed" target="_blank"&gt;OData feed&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/downloadsite_707A1B0E.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="downloadsite" border="0" alt="downloadsite" src="http://sqlblog.com/blogs/jamie_thomson/downloadsite_thumb_361EA52D.png" width="560" height="497" /&gt;&lt;/a&gt;&lt;/blockquote&gt;  &lt;p&gt;If you want to use the mashup to get similar counts for your own set of RSS feeds simply change the &amp;quot;List of Feeds&amp;quot; resource appropriately. Happy data exploring!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=40583" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Data+Explorer/default.aspx">Data Explorer</category></item><item><title>Data Explorer Feedback part 1</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2011/12/07/data-explorer-feedback-part-1.aspx</link><pubDate>Wed, 07 Dec 2011 20:56:56 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:40196</guid><dc:creator>jamiet</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/40196.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=40196</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=40196</wfw:comment><description>&lt;p&gt;Earlier today I posted &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2011/12/07/data-explorer-walkthrough-parsing-a-twitter-list.aspx"&gt;Data Explorer walkthrough – Parsing a Twitter list&lt;/a&gt; in which I explained that I have been using Data Explorer for a few weeks now. In that time I have been compiling some feedback for the Data Explorer product team which I was going to email privately but I see no harm in putting these thoughts into the public domain, hence why I am writing this blog post – a hodge podge of thoughts/suggestions/gripes from the past few weeks of using Data Explorer.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I’m very impressed that if I change the name of a resources any references to that resource are updated accordingly. After years of working with the SSIS dev tools I’m automatically wired to expect that &lt;em&gt;not&lt;/em&gt; to work. &lt;/li&gt;    &lt;li&gt;I love the composability of tasks and resources (e.g. Define a custom function as a resource and use it in another resource). That idea of composability and reuse is something that is sadly lacking in SSIS (and the SSIS team know that because I’ve moaned about it often enough &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://sqlblog.com/blogs/jamie_thomson/wlEmoticon-smile_0F86EC0C.png" /&gt; ). &lt;/li&gt;    &lt;li&gt;If the name of the resource is too large for the box then there is no way to see the full name without editing it: &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_67E06FE1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_18FFAA82.png" width="244" height="178" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;It would be nice to be able to reorder the list of resources &lt;/li&gt;    &lt;li&gt;We *really* need the ability to widen the columns when viewing the results of a task. &lt;/li&gt;    &lt;li&gt;Data Explorer seems a bit lacking in its abilities to parse HTML &amp;amp; XML right now. For example, I'm surprised that I can't use XPath to extract the contents of an HTML/XML document. In fact, the lack of such features is the most disappointing aspect of Data Explorer thus far and means that the product is still a long way off being a &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/2009/07/08/kapow-etl-for-html.aspx" target="_blank"&gt;Kapow&lt;/a&gt; competitor, remembering that this is still an early beta of course. &lt;/li&gt;    &lt;li&gt;We need better ways of visualising the output from a mashup (i.e. something that doesn’t require the user to have Excel installed). How about giving SSRS the ability to consume an OData feed – we could then host such a report on SQL Azure Reporting, perhaps even sell that report via the Azure Marketplace. &lt;/li&gt;    &lt;li&gt;If I make a mashup publicly available I would like to be able to know how many times it is called. I believe that the ability to INSERT data (e.g. into SQL Azure) using Data Explorer will be coming soon (its kind of already there with the Snapshot feature) so I'm wondering if there is a way to &amp;quot;trigger&amp;quot; an insertion when someone consumes one of my exposed resources? I suspect the answer is &amp;quot;not right now&amp;quot; so consider that a feature request. I guess you could crystalise that request as &amp;quot;Provide an eventing model within a mashup so that resources can be triggered when some event (e.g. Someone consumes a resource) occurs.&amp;quot; &lt;/li&gt;    &lt;li&gt;We need a scheduler that enables us to run Snapshots at some pre-defined time. &lt;/li&gt;    &lt;li&gt;I have a mashup published at &lt;a href="https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo"&gt;https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo&lt;/a&gt;. The link for the feed is &lt;a href="https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo/Feed"&gt;https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo/Feed&lt;/a&gt; but that doesn’t actually show me any data, it shows me a list of resources that produce the data however in this case there is only one resource (&lt;a href="https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo/Feed/jamiet-dataexplorer-text_user_screen_name"&gt;https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo/Feed/jamiet-dataexplorer-text_user_screen_name&lt;/a&gt;). Would it not make sense to link directly to the feed with data in it if there is only actually one external resource in my mashup? It would save a mouse-click at least. &lt;/li&gt;    &lt;li&gt;I haven’t yet figured out if its possible to do recursion. Still working on that one. &lt;/li&gt;    &lt;li&gt;In my &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2011/12/07/data-explorer-walkthrough-parsing-a-twitter-list.aspx" target="_blank"&gt;Twitter List example&lt;/a&gt; the values “jamiet” &amp;amp; “data-explorer” for the list owner and list slug respectively were hardcoded in the mashup; yes, they were parameters to a function but they were still hardcoded. It would have been much better if I were able to give the consumer of the mashup the ability to define/override those values when they consume it. In other words, a mashup needs to be parameterizable.&lt;/li&gt;    &lt;li&gt;Overall I am very impressed and the excitement that I displayed in my initial post &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2011/10/24/thoughts-on-data-explorer.aspx" target="_blank"&gt;Thoughts on Data Explorer&lt;/a&gt; is justified. Data Explorer coalesces nicely with existing interests of mine such as SQL Server, ETL &amp;amp; web-enabled data and I have high hopes that I will be using this extensively for clients in the years to come. &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=40196" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Data+Explorer/default.aspx">Data Explorer</category></item><item><title>Data Explorer walkthrough – Parsing a Twitter list</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2011/12/07/data-explorer-walkthrough-parsing-a-twitter-list.aspx</link><pubDate>Wed, 07 Dec 2011 13:40:21 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:40182</guid><dc:creator>jamiet</dc:creator><slash:comments>6</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/40182.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=40182</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=40182</wfw:comment><description>&lt;p&gt;Yesterday the public availability of Data Explorer, a new data mashup tool from the SQL Server team, was announced at &lt;a href="http://blogs.msdn.com/b/dataexplorer/archive/2011/12/06/announcing-the-labs-release-of-microsoft-codename-data-explorer.aspx" target="_blank"&gt;Announcing the Labs release of Microsoft Codename “Data Explorer”&lt;/a&gt;. Upon seeing the first public demos of Data Explorer at SQL Pass 2011 I published a blog post &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2011/10/24/thoughts-on-data-explorer.aspx" target="_blank"&gt;Thoughts on Data Explorer&lt;/a&gt; which must have caught someone’s attention because soon after I was lucky enough to be invited onto an early preview of Data Explorer, hence I have spent the past few weeks familiarising myself with it. In this blog post I am going to demonstrate how one can use Data Explorer to consume and parse a Twitter list.&lt;/p&gt;  &lt;p&gt;I have set up a list specifically for this demo and suitably it is a list of tweeters that tweet about Data Explorer – you can view the list at &lt;a title="http://twitter.com/#!/list/jamiet/data-explorer" href="http://twitter.com/#!/list/jamiet/data-explorer" target="_blank"&gt;http://twitter.com/#!/list/jamiet/data-explorer&lt;/a&gt;. Note that some of the screenshots in this blog post were taken prior to the public release and many of them have been altered slightly since then; with that in mind, here we go.&lt;/p&gt;  &lt;p&gt;First, browse to &lt;a title="https://dataexplorer.sqlazurelabs.com/" href="https://dataexplorer.sqlazurelabs.com/"&gt;https://dataexplorer.sqlazurelabs.com/&lt;/a&gt; and log in &lt;/p&gt;  &lt;p&gt;When logged in select New to create a new mashup &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_084C85EF.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_2722F9CD.png" width="654" height="123" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Give your mashup a suitable name &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_5AEAF01E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_13296737.png" width="318" height="89" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You will be shown some options for consuming a source of data. Click on Formula&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_0B31C4D5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_5F80FAD8.png" width="61" height="62" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;We’re going to be good web citizens and use &lt;a href="http://json.org/" target="_blank"&gt;JSON&lt;/a&gt; rather than XML to return data from our list. The URI for our Twitter API call is &lt;a title="https://api.twitter.com/1/lists/statuses.json?slug=data-explorer&amp;amp;owner_screen_name=jamiet" href="https://api.twitter.com/1/lists/statuses.json?slug=data-explorer&amp;amp;owner_screen_name=jamiet" target="_blank"&gt;https://api.twitter.com/1/lists/statuses.json?slug=data-explorer&amp;amp;owner_screen_name=jamiet&lt;/a&gt;, note how I have specified the list owner (&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;me&lt;/a&gt;) and the name of the list (what they call the slug) “data-explorer” as query parameters. If you go to that URL in your browser then you will be prompted to save a file containing the returned JSON document which, if all you want to do is see the document, isn’t very useful. In debugging my mashups I have found a service called &lt;a href="http://jsonformatter.curiousconcept.com" target="_blank"&gt;JSON Formatter&lt;/a&gt; to be invaluable because it allows us to see the contents of a JSON document by supplying the URI of that document as a parameter like so: &lt;a title="http://jsonformatter.curiousconcept.com/#https://api.twitter.com/1/lists/statuses.json?slug=data-explorer&amp;amp;owner_screen_name=jamiet" href="http://jsonformatter.curiousconcept.com/#https://api.twitter.com/1/lists/statuses.json?slug=data-explorer&amp;amp;owner_screen_name=jamiet" target="_blank"&gt;http://jsonformatter.curiousconcept.com/#https://api.twitter.com/1/lists/statuses.json?slug=data-explorer&amp;amp;owner_screen_name=jamiet&lt;/a&gt;. It might be useful to keep that site open in a separate window as you attempt to build the mashup below.&lt;/p&gt;  &lt;p&gt;I’ve digressed a little, let’s get back to our mashup. We’re going to use a function called &lt;font face="Consolas"&gt;Web.Contents()&lt;/font&gt; to consume the contents of the Twitter API call and pass the results into another function, &lt;font face="Consolas"&gt;Json.Document()&lt;/font&gt;, which parses the JSON document for us. The full formula is:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Consolas"&gt;= Json.Document(Web.Contents(“&lt;a href="https://api.twitter.com/1/lists/statuses.json?slug=data-explorer&amp;amp;owner_screen_name=jamiet"&gt;https://api.twitter.com/1/lists/statuses.json?slug=&lt;strong&gt;data-explorer&lt;/strong&gt;&amp;amp;owner_screen_name=&lt;strong&gt;jamiet&lt;/strong&gt;&lt;/a&gt;”))&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_17BF71F1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_0189569F.png" width="1048" height="48" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;When you type in that formula and simply hit enter you’re probably going to be faced with this screen:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_5C1F6330.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_5ADACA51.png" width="642" height="395" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Its asking you how you want to authenticate with the Twitter API. Calls to the &lt;a href="https://api.twitter.com/1/lists/statuses.json"&gt;https://api.twitter.com/1/lists/statuses.json&lt;/a&gt; resource don’t require authentication so anonymous access is fine, just hit continue. When you do you will see something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_325BE83D.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_4A131FA3.png" width="906" height="256" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The icon&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_76BBD97C.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_0F4B76CD.png" width="40" height="30" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;essentially indicates a dataset, so each record of these results is in itself another dataset. We’ll come onto how we further parse all of this later on but before we do we should clean up our existing formula so that we’re not hardcoding the values “data-explorer” and “jamiet”.&lt;/p&gt;  &lt;p&gt;The &lt;font face="Consolas"&gt;Web.Contents()&lt;/font&gt; function possesses the ability to specify named parameters rather than including them in the full URL. Change the formula to:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Consolas"&gt;= Json.Document(Web.Contents(&amp;quot;&lt;/font&gt;&lt;a href="https://api.twitter.com/1/lists/statuses.json&amp;quot;"&gt;&lt;font face="Consolas"&gt;https://api.twitter.com/1/lists/statuses.json&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Consolas"&gt;, [Query = [slug=&amp;quot;data-explorer&amp;quot;, owner_screen_name=&amp;quot;jamiet&amp;quot;] ]))&lt;/font&gt; :&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_4EA92A5D.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_38730F0B.png" width="1125" height="37" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That will return the same result as before but now we’ve broken out the query parameters {slug, owner_screen_name} into parameters of &lt;font face="Consolas"&gt;Web.Contents()&lt;/font&gt;. That’s kinda nice but they’re still hardcoded; instead what we want to do is turn the whole formula into a callable function, we do that by specifying a function signature and including the parameters of the signature in the formula like so:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Consolas"&gt;= (slug,owner_screen_name) =&amp;gt; Json.Document(Web.Contents(&amp;quot;&lt;/font&gt;&lt;a href="https://api.twitter.com/1/lists/statuses.json&amp;quot;"&gt;&lt;font face="Consolas"&gt;https://api.twitter.com/1/lists/statuses.json&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Consolas"&gt;, [Query = [slug=slug, owner_screen_name=owner_screen_name] ]))&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_13091B9D.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_11C482BE.png" width="1222" height="75" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Let’s give our new function a more meaningful name by right-clicking on the resource name which is currently set as “Custom1” and renaming it as “GetTwitterList”:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_6945A0A9.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_1A64DB4A.png" width="230" height="172" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_203F7EE3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_1194D2FE.png" width="231" height="68" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;We have now defined a new function within our mashup called &lt;font face="Consolas"&gt;GetTwitterList(slug, owner_screen_name)&lt;/font&gt; that we can call as if it were a built-in function.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_70A16056.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_2F26ADFD.png" width="774" height="309" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Let’s create a new resource as a formula that uses our new custom function and pass it some parameter values:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Consolas"&gt;= GetTwitterList(&amp;quot;data-explorer&amp;quot;, &amp;quot;jamiet&amp;quot;)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_54B02B5E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_4CB888FC.png" width="413" height="355" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;We still have the same results but now via a nice neat function that abstracts away the complexity of &lt;font face="Consolas"&gt;Json.Document( Web.Contents() )&lt;/font&gt;.&lt;/p&gt;  &lt;p&gt;As stated earlier each of the records is in itself a dataset each of which, in this case, represents lots of information about a single tweet. We can go a long way to parsing out the information using a function called &lt;font face="Consolas"&gt;IntoTable() &lt;/font&gt;that takes a dataset and converts it into a table of values:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_274E958E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_6A4A63FB.png" width="715" height="211" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Here is the result of applying &lt;font face="Consolas"&gt;IntoTable()&lt;/font&gt; to the results of &lt;font face="Consolas"&gt;GetTwitterlist()&lt;/font&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_56BD045A.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_47A62580.png" width="780" height="373" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is much more useful, we can now see lots of information about each tweet however notice that information about the user who wrote the tweet is wrapped up in yet another nested dataset called “user”. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;All the time note how whatever data we are seeing and whatever we do to that data via the graphical UIs is always reflected in the formula bar; in the screenshot immediately above notice that we are selecting the “user” and “text” columns (the checkbox for “user” is off the screen but is checked).&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;We can now parse out the user’s screen_name using a different function – AddColumn(). AddColumn() taken an input and allows us to define a new column (in this case called “user-screen_name”) and specify an expression for that column based on the input. A picture speaks a thousand words so:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Consolas"&gt;= Table.AddColumn(intoTable, &amp;quot;user_screen_name&amp;quot;, each [user][screen_name])&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_2CF98967.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_44B0C0CD.png" width="615" height="396" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;There we have our new column, user_screen_name, containing the name of the tweeter that tweeted the tweet. At this point let’s take a look at the &lt;a href="http://jsonformatter.curiousconcept.com/#https://api.twitter.com/1/lists/statuses.json?slug=data-explorer&amp;amp;owner_screen_name=jamiet"&gt;raw JSON&lt;/a&gt; to see where this got parsed out from:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_17BB5DF2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_55D478A3.png" width="673" height="625" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Notice that the screen_name, UserEd_, is embedded 3 levels deep within the hierarchical JSON document.&lt;/p&gt;  &lt;p&gt;We’re almost there now. The final step is to use the function &lt;font face="Consolas"&gt;SelectColumns()&lt;/font&gt; to select the subset of columns that we are interested in::&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Consolas"&gt;= Table.SelectColumns(InsertedCustom,{&amp;quot;text&amp;quot;, &amp;quot;user_screen_name&amp;quot;})&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_6D1F7D14.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_4BBFD778.png" width="593" height="370" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Which gives us our final result:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_31133B5F.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_48CA72C5.png" width="512" height="410" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;At this point hit the Save button:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_5C0B2964.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_0D2A6405.png" width="216" height="110" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;OK, so we have a mashup that pulls some data out of twitter, parses it and then….well…nothing! It doesn’t actually &lt;em&gt;do &lt;/em&gt;anything with that data.&amp;#160; We have to &lt;em&gt;publish&lt;/em&gt; the mashup so that it can be consumed and we do that by heading back to the home page (which is referred to as “My Workspace”) by clicking the My Workspace button near the top of the page:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_1305079E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_122CA1B4.png" width="130" height="37" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Back in My Workspace you can select your newly created mashup (by clicking on it) and options Preview, Snapshot &amp;amp; Publish appear:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_434BDC54.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_225869AD.png" width="381" height="180" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;We’ll ignore Preview and Snapshot for now, hit the Publish button instead at which point we are prompted for a name that we will publish the mashup as:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_15EA4684.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_06D367AA.png" width="500" height="235" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Hitting Publish will do the necessary and make our data feed available at a public URI:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_176B6298.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_649B5C23.png" width="641" height="78" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Head to that URL (&lt;a title="https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo" href="https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo"&gt;https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo&lt;/a&gt;) and here’s what you see:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_7129093F.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_6139C47B.png" width="571" height="526" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can download the mashup output as a CSV file or an Excel workbook. You can also download the whole mashup so you can edit it as you see fit and, most importantly, you can access the output of the mashup via an OData feed at &lt;a title="https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo/Feed/jamiet-dataexplorer-text_user_screen_name" href="https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo/Feed/jamiet-dataexplorer-text_user_screen_name"&gt;https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo/Feed/jamiet-dataexplorer-text_user_screen_name&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We have used Data Explorer’s JSON parsing and dataset navigation abilities to pull out the data that we are interested in and present it in a neat rectangular data structure that we are familiar with. Moreover we have done it without installing any software and we have made that data accessible via an open protocol; that’s pretty powerful and, in my wholly worthless opinion, very cool indeed.&lt;/p&gt;  &lt;p&gt;Have fun playing with Data Explorer. Feel free to &lt;a href="https://ws41451459.dataexplorer.sqlazurelabs.com/Published/TwitterListDemo/ResultsInLinkedFormat" target="_blank"&gt;download my Twitter List Demo mashup&lt;/a&gt; and mess about with it to your heart’s content.&lt;/p&gt;  &lt;p&gt;               &lt;p&gt;&lt;a href="http://twitter.com/jamiet"&gt;@jamiet&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=40182" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Data+Explorer/default.aspx">Data Explorer</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/twitter/default.aspx">twitter</category></item><item><title>Thoughts on Data Explorer</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2011/10/24/thoughts-on-data-explorer.aspx</link><pubDate>Mon, 24 Oct 2011 09:55:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:39339</guid><dc:creator>jamiet</dc:creator><slash:comments>5</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/39339.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=39339</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=39339</wfw:comment><description>&lt;p&gt;To my mind the most interesting piece of news to come out of the recent PASS conference was the unveiling of a new SQL Azure Labs project coming from the SQL Server organisation that has the codename "Data Explorer" (not a very imaginitive codename I'm sure you'll agree) and for which there is information available at &lt;a href="http://www.microsoft.com/en-us/sqlazurelabs/labs/dataexplorer.aspx" target="_blank"&gt;http://www.microsoft.com/en-us/sqlazurelabs/labs/dataexplorer.aspx&lt;/a&gt; (in case you've surfed on here a few months on from when I originally wrote this blog post you should expect that that that URI will have become a dead link).&lt;/p&gt;&lt;p&gt;My good buddy Chris Webb (&lt;a href="http://cwebbbi.wordpress.com/" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/#%21/Technitrain" target="_blank"&gt;twitter&lt;/a&gt;) has already blogged about Data Explorer at&amp;nbsp; &lt;a href="http://cwebbbi.wordpress.com/2011/10/12/pass-summit-2011-day-1-keynote/" target="_blank"&gt;Pass Summit 2011 - Day 1 Keynote&lt;/a&gt; and &lt;a href="http://cwebbbi.wordpress.com/2011/10/20/self-service-etl-with-data-explorer/" target="_blank"&gt;Self-Service ETL with Data Explorer&lt;/a&gt; in which he made a very telling observation:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;i&gt;It allows you to mash up data from various different sources then publish the result as an OData feed – very similar to &lt;a href="http://pipes.yahoo.com/" target="_blank"&gt;Yahoo Pipes&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I couldn't agree more with that assertion. I blogged about Yahoo Pipes over four years ago at &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/2007/05/07/Taking-Yahoo-Pipes-for-a-test-drive.aspx" target="_blank"&gt;Taking Yahoo Pipes for a test drive&lt;/a&gt; and I referred to it then as "ETL for RSS feeds"; it interested me greatly because here was a tool that enabled non-developers to pull data from multiple sources and make it available as a single data source that could be easily consumed; moreover it ran as a cloud service which has also long been an interest of mine. Granted, it only did this for RSS feeds but the premise was still really interesting to me; I believe that making data easily consumable is far more important than the tool chosen to consume it hence why I'm such a massive advocate of &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/06/03/thinking-differently-about-bi-delivery.aspx" target="_blank"&gt;iCalendar for BI&lt;/a&gt; and why you'll rarely find me talking about the likes of Business Objects, Cognos, Qlikview, Tableau and Power View on this blog (no disrespect intended to those tools or the people that use them - they're just not what floats my boat).&lt;/p&gt;&lt;p&gt;Where Yahoo Pipes consumes RSS feeds and provides RSS feeds, Data Explorer consumes from loads of different places and provides &lt;a href="http://www.odata.org" target="_blank"&gt;OData &lt;/a&gt;feeds (something I've been &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/tags/Astoria/default.aspx" target="_blank"&gt;banging on about&lt;/a&gt; &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/tags/odata/default.aspx" target="_blank"&gt;for a while now&lt;/a&gt;) and if you're in the Microsoft ecosystem OData is increasingly looking like the &lt;a href="http://en.wikipedia.org/wiki/Lingua_franca" target="_blank"&gt;lingua franca&lt;/a&gt; for platform and device independent data integration. Moreover, according to recent blog post &lt;a href="http://blogs.msdn.com/b/timmall/archive/2011/10/21/creating-a-custom-rss-reader-in-montego-cloud.aspx" target="_blank"&gt;Creating a custom RSS reader in Montego (cloud)&lt;/a&gt; by project lead Tim Mallalieu Data Explorer will also be able to pull data directly out of web pages and that is stepping firmly into the territory of &lt;a href="http://kapowsoftware.com/" target="_blank"&gt;Kapow&lt;/a&gt; which, again, is a tool that Chris and I have blogged about before at &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/2009/07/08/kapow-etl-for-html.aspx" target="_blank"&gt;Kapow – ETL for HTML&lt;/a&gt; and &lt;a href="http://cwebbbi.wordpress.com/2009/06/29/kapow-technologies/%20" target="_blank"&gt;Kapow Technologies&lt;/a&gt;. Chris referred to Kapow as:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;i&gt;a cross between a screenscraper and an ETL tool&lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;and again I wouldn't disagree. Data Explorer looks like filling the missing link that I was alluding to in the final paragraphs of my June 2009 blog post &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/2009/06/23/enterprise-mashups.aspx" target="_blank"&gt;Enterprise Mashups&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Are you spotting a common theme here? Data Explorer is an ETL tool and given my obvious SSIS affiliations that makes it very interesting to me. That it runs as a cloud service and will be available to non-developers only makes it more intriguing and I can't wait until Data Explorer becomes available for us to tinker with later this year. No doubt Chris will be keeping a watching brief too.&lt;/p&gt;&lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt; &lt;/p&gt;&lt;p&gt;UPDATE:Some further thoughts...&lt;/p&gt;&lt;p&gt;It would be interesting to see what else could be done with this data once its exposed as a feed. I'll wager that in the not too distant future you'll be able to (for example) sell the output from your Data Explorer mashup on &lt;a href="https://datamarket.azure.com/" target="_blank"&gt;Azure Datamarket&lt;/a&gt; or view geocoded feeds on Bing Maps (note that &lt;a href="http://www.odata.org/blog/2011/10/14/geospatial-properties" target="_blank"&gt;Geospatial support is coming to OData in the very near future&lt;/a&gt;). There are lots of possibilities I'm sure and I'm looking forward to seeing what ideas others have for using and sharing this data.&lt;br&gt;&lt;/p&gt;&lt;p&gt;I'm also wondering whether there will be an option to host Data Explorer (and hence Data Explorer mashups) inside the enterprise. Today most enterprise data is contained within the corporate firewall thus will not be accessible from a Data Explorer service provided via SQL Azure; it would be a shame if such data could not be accessed by Data Explorer and hence why I hope there will be an on-premise version available. I can think of many scenarios at my past clients where the ability to easily make data consumable over HTTP and behind the firewall would have been invaluable.&lt;br&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=39339" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Data+Explorer/default.aspx">Data Explorer</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ETL/default.aspx">ETL</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/OData/default.aspx">OData</category></item></channel></rss>