<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>WesleyB's Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/wesleyb/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/wesleyb/feed.xml</link>
    <description>My long term memory for data related information.</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:34:41 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Monitoring usage of utilities in my home</title>
      <link>https://docs.microsoft.com/archive/blogs/wesleyb/monitoring-usage-of-utilities-in-my-home</link>
      <pubDate>Mon, 25 Jun 2018 18:11:18 GMT</pubDate>
      <dc:creator><![CDATA[Wesley Backelant]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wesleyb/?p=1015</guid>
      <description><![CDATA[As a technology and data lover I felt it was a bit strange that keeping up-to-date with the usage of...]]></description>
      <content:encoded><![CDATA[As a technology and data lover I felt it was a bit strange that keeping up-to-date with the usage of electricity, gas and water consumption in my house was an after the facts exercise.  There certainly are a lot of talks about Smart Meters but they haven't rolled out yet here and when they do the question is how fine grained we will get the data as a consumer.  Hence, I started looking for a way to get more real-time insights into this.

There are several solutions on the market and in the end I decided to buy a <a href="https://www.flukso.net/">Flukso.</a> Flukso is an open-source monitoring solution developed in Belgium.  It comes with a base module to which the different sensors can be connected.  What was nice is the fact that they also support MQTT next to their REST API.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/P9180415.jpg"><img width="300" height="225" class="alignnone wp-image-1185 size-medium" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/P9180415-300x225.jpg" /></a>

It also comes with a simple WebUI but of course I wanted to build something myself, so I have more freedom to explore the data.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-08-13_43_11-Microsoft-Edge.png"><img width="1024" height="604" class="alignnone size-large wp-image-1025" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-08-13_43_11-Microsoft-Edge-1024x604.png" /></a>

Before I started building the solution I set out a few goals for myself:
<ul>
 	<li>It needed to be portable enough so I can run it on my Raspberry PI</li>
 	<li>Since Flukso is open source I want to make my code available publicly too</li>
 	<li>In order to make sure other people can benefit from it as easily as possible, I wanted to use Infrastructure as Code</li>
</ul>
Based on this I came to the following toolset: .NET Core 2.1, VS Code (yes I'm a fan), Visual Studio Team Services, Docker, GitHub and Terraform.

<b><i>I own a Flukso, just tell me how to deploy to my Raspberry PI</i></b>

If you don't care about all the code and just want to get started capturing the data you can deploy the backend using the terraform script (described below).  Then download the docker-compose.yml and the fluksocore.service file to your Raspberry PI and run it.  The readme on <a href="https://github.com/wesback/fluksocore">GitHub</a> has more details.

<em><strong>Architecture</strong></em>

The architecture is not too complex, I'm picking up the data, on my Raspberry PI, from the Flukso over MQTT and pushing this to Event Hubs.  From Event Hubs there are 2 streams, one is using Event Hubs Capture which automatically pushes the data to a storage account (in AVRO format) and the other is using Stream Analytics to aggregate the data by minute and push it to SQL Database for reporting with Power BI.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-26-10_13_19-Window.png"><img width="1024" height="397" class="alignnone size-large wp-image-1195" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-26-10_13_19-Window-1024x397.png" /></a>

<em><strong>Platform</strong></em>

I have heard a lot of good things about <a href="https://www.terraform.io/">Terraform</a> around IaC so I decided this would be a great moment to learn.  I was very pleasantly surprised to see the VS Code add-ins (<a href="https://marketplace.visualstudio.com/items?itemName=mauve.terraform">Syntax</a> - <a href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureterraform">Azure</a>) and the default integration of Terraform in our <a href="https://docs.microsoft.com/en-us/azure/terraform/terraform-cloud-shell">Azure Shell.</a> The Terraform script is available on GitHub and it takes care of the deployment, I'm also deploying an Azure Container Registry if you want to keep your version of the container private.

It all starts with writing your terraform file(s) (*.tf), you can define variables in a variables.tf file and finally define the values for these variables in a .tfvars file.  The next step is to initialize the environment using "<strong><em>terraform init</em></strong>" to download the right provider and initialize the environment.  Now you can run "<strong><em>terraform plan -out tfplan.out</em></strong>" to see what changes are going to be made and finally just run "<em><strong>terraform apply tfplan.out</strong></em>" to do the actual deployment.  One of the very nice things is the "<strong>terraform destroy</strong>" command, this cleans up all the resources.  Probably not the best thing to do in production but very useful during development.  Since the Azure Shell is also integrated in VS Code I can just do all this from within my development environment.

To do all this from VS Code you will need to install a few Extensions., here is the list of the Extensions I installed.  If you are using Windows and want to use the Azure Shell from VS Code you will also need to install Node.js 6 or later (<a href="https://nodejs.org">https://nodejs.org</a>).

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_27_31-FluksoCore.png"><img width="1024" height="726" class="alignnone size-large wp-image-1135" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_27_31-FluksoCore-1024x726.png" /></a>

Use CTRL-SHIFT-P to launch <strong><em>Azure: Sign In</em></strong>, then select the right subscription with <em><strong>Azure: Select Subscriptions</strong></em> and finally use <strong><em>Azure Terraform: Init</em></strong> command.  Next to the Terraform files, you will have to copy the SQL folder to the cloud shell or wherever you want to deploy from too.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_14_57-terraform.tfvars-FluksoCore-Visual-Studio-Code.png"><img width="1024" height="726" class="alignnone size-large wp-image-1055" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_14_57-terraform.tfvars-FluksoCore-Visual-Studio-Code-1024x726.png" /></a><a href="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_17_51-FluksoCore-Visual-Studio-Code.png"></a>

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_17_51-FluksoCore-Visual-Studio-Code.png"><img width="1024" height="726" class="alignnone size-large wp-image-1105" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_17_51-FluksoCore-Visual-Studio-Code-1024x726.png" /></a>

After you have executed the "<strong><em>terraform apply</em></strong>" command it should have created a Resource Group (default is RG-Flukso) with the necessary services.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_22_53-Window.png"><img width="1024" height="524" class="alignnone size-large wp-image-1125" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_22_53-Window-1024x524.png" /></a>

<b><i>Code</i></b>

Now that we have the supporting services running on Azure we can start looking at the code.  As mentioned I used .NET Core 2.1 to make it portable and use Docker to run the actual application on my Raspberry Pi 3.

Since Flukso has an MQTT endpoint I am adding a NuGet package called <a href="https://www.nuget.org/packages/MQTTnet/">MQTTNet</a> to my project, I'm doing this in the Integrated Terminal of VS Code by executing the command "<em><strong>dotnet add package MQTTNet</strong></em>".  Next to this I'm also adding some packages for configuration, EventHubs and Newtonsoft.Json.  If you download the code from GitHub this is all done of course, you just need to run "<em><strong>dotnet restore</strong></em>" in the folder where you clone the code.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_43_30-FluksoCore.csproj-FluksoCore-Visual-Studio-Code.png"><img width="1024" height="726" class="alignnone size-large wp-image-1145" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_43_30-FluksoCore.csproj-FluksoCore-Visual-Studio-Code-1024x726.png" /></a>

Next I needed to Dockerize the application for easy deployment across different devices.  You need to pay attention to the runtime version you select to make sure it can run on ARM.  In the backend I'm using Visual Studio Team Services to build and push the container image to <a href="https://hub.docker.com/r/wesback/fluksocore/">DockerHub </a>whenever I push updates to Git.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_48_16-Dockerfile.arm-FluksoCore-Visual-Studio-Code.png"><img width="1024" height="726" class="alignnone size-large wp-image-1165" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/2018-06-23-10_48_16-Dockerfile.arm-FluksoCore-Visual-Studio-Code-1024x726.png" /></a>

The code is available on GitHub @ <a href="https://github.com/wesback/fluksocore">https://github.com/wesback/fluksocore</a>.  I still need add my Azure Stream Analytics code.  I will update the post as soon as finish that part.  You can write a pretty straightforward query to output the data to Azure SQL Database, visualizing the data in Power BI is a logical next step.  You can already find an example on how to write a query at <a href="https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-build-an-iot-solution-using-stream-analytics">https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-build-an-iot-solution-using-stream-analytics</a>.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/pbiflukso.png"><img width="911" height="533" class="alignnone size-full wp-image-1175" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/pbiflukso.png" /></a>

<b><i>What's next?</i></b>

<b></b><i></i>As always there are still a few things I want/need to do when I find some time.  Currently I'm not doing any unit testing (shame on me) so I definitely need to add those.  Another improvement I would like to do is switching to IoT Edge and IoT Hub, that would allow me to already do some preprocessing on the Raspberry before sending the data to the cloud.

Once I have captured enough historical data I could start using this to start predicting my consumption.  Hopefully it can also learn me something about (bad) habits to lower my energy consumption!]]></content:encoded>
    </item>
    <item>
      <title>Modernizing “Did my dad influence me?” – Part 2</title>
      <link>https://docs.microsoft.com/archive/blogs/wesleyb/modernizing-did-my-dad-influence-me-part-2</link>
      <pubDate>Fri, 23 Mar 2018 12:18:26 GMT</pubDate>
      <dc:creator><![CDATA[Wesley Backelant]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wesleyb/?p=895</guid>
      <description><![CDATA[In Part 1 we saw how we can capture the LastFM data from the API.  This of course just gives me some...]]></description>
      <content:encoded><![CDATA[In <a href="https://blogs.msdn.microsoft.com/wesleyb/2018/03/15/modernizing-did-my-dad-influence-me-part-1/">Part 1</a> we saw how we can capture the LastFM data from the API.  This of course just gives me some raw data on an Azure Storage Account.  Having data stored on a storage account gives us a wide range of options to process the data, we can use tools like Polybase to read it into Azure SQL Data Warehouse, connect directly from Power BI or when the dataset needs pre-processing or it becomes too large to handle with traditional systems we can use solutions like Azure Databricks to process the data.

In Part 2 we will focus on processing the data, so we can build beautiful dashboards in Power BI.  Note that we are going to focus on Azure Databricks even though I do realize that the dataset is not huge, but we are learning remember?

Prerequisites:
<ul>
 	<li><a href="https://blogs.msdn.microsoft.com/wesleyb/2018/03/15/modernizing-did-my-dad-influence-me-part-1/">An export of the LastFM data you are interested in</a></li>
 	<li><a href="https://docs.microsoft.com/en-us/azure/azure-databricks/">Azure Databricks account</a></li>
 	<li><a href="http://www.powerbi.com">Power BI</a></li>
</ul>
<a href="https://azure.microsoft.com/en-us/services/databricks/">Azure Databricks</a> is an easy to use Spark platform with a strong focus on collaboration.  Microsoft and Databricks collaborated on this offering and it truly makes using Spark a walk in the park.  Azure Databricks went <a href="https://databricks.com/blog/2018/03/22/azure-databricks-industry-leading-analytics-platform-powered-by-apache-spark.html">GA</a> recently so we are working in fully supported environment.

First, we'll create an Azure Databricks Workspace which is simple, all you need is a name, location and the Pricing tier.  Azure Databricks is secured with Azure Active Directory which is of course important to align your efforts around identity in the organization.  After about a minute you will be able to launch the Workspace.  Just push the big "Launch Workspace" button to get started!

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/createdatabricks.png"><img width="1024" height="585" class="alignnone size-large wp-image-905" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/createdatabricks-1024x585.png" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/launchdatabricks.png"><img width="1024" height="585" class="alignnone size-large wp-image-915" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/launchdatabricks-1024x585.png" /></a>

Once you launch the Workspace you will see the Azure Databricks welcome page.  There are links immediately on the page to help you get started, and the navigation is on the left side.

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/databrickswelcome.png"><img width="1024" height="585" class="alignnone size-large wp-image-925" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/databrickswelcome-1024x585.png" /></a>

<span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">The first thing we need to do is create a cluster as we need a place to process the code we are going to write.  So let's go ahead and click <strong>Clusters - + Create Cluster</strong>.  For the "Cluster Type" you will have two choices, Serverless or Standard.  A serverless pool is self-managed pool of cloud resources that is auto-configured, it has some benefits like optimizing the configuration to get the best performance for your workload, better concurrency, creating isolated environments for each notebook, ....  You can read more details about serverless pools <a href="https://docs.azuredatabricks.net/user-guide/clusters/serverless-pools.html">here</a>.  We are however going to choose for Standard just because Serverless Pools are currently in Beta.  Creating a cluster takes a couple of arguments like the name and the version of the Databricks runtime and Python.  Now comes the interesting part which is choosing the size of the nodes to support your cluster, this comes with a couple of interesting options like auto scale where you can define the minimum and maximum workers.  From a cost perspective it is very useful to enable Auto Termination if you know you will not be needing the cluster 24/7, just tell Databricks after how many minutes of inactivity it can drop the cluster.  You can also assign some Tags for tracking on the Azure part, override the Spark configuration and enable logging.</span>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/createcluster4.png"><img width="1024" height="585" class="alignnone size-large wp-image-955" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/createcluster4-1024x585.png" /></a>

While the cluster is provisioning let's go ahead a start writing code.  We'll go back to the Welcome Page and click <strong>Notebook</strong> under <strong>New</strong>.  I'm going to give my notebook a name and choose the default language, here I'm going for Scala because <a href="http://twitter.com/nathan_gs">@nathan_gs</a> was my Spark mentor and he's a Scala fan.

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/createnotebook.png"><img width="1024" height="585" class="alignnone size-large wp-image-945" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/createnotebook-1024x585.png" /></a>

Now we can start to crunch the data using Scala, I'll add the code to the GitHub <a href="https://github.com/wesback/LastFMReader">repo</a> so you can replicate this easily.
Azure Databricks allows you to mount storage which makes it easy to access the data.

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/lastfmworkspace.png"><img width="1024" height="585" class="alignnone size-large wp-image-965" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/lastfmworkspace-1024x585.png" /></a>

We can also do visualization right inside the notebook which is a great addition while you are doing data exploration.

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/databricksvisual.png"><img width="1024" height="370" class="alignnone size-large wp-image-975" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/databricksvisual-1024x370.png" /></a>

Now we have done some of the data wrangling we can start visualizing the data to get some of the insights and answer the question if my father has influenced me, and whether I am influencing my daughter.  Connecting Power BI to Azure Databricks is documented <a href="https://docs.azuredatabricks.net/user-guide/bi/power-bi.html">here</a>.

<u><span style="color: #000120"><a href="https://msdnshared.blob.core.windows.net/media/2018/03/pbi1.png"><img width="1024" height="592" class="alignnone size-large wp-image-985" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/pbi1-1024x592.png" /></a></span></u>We can see a couple of interesting things now that we have visualized the data.  It looks like there is quite some overlap between what I'm listening and what my father is listening.  On my side I have not been successful in convincing my father of System Of A Down though.  I am very happy to see that at least I am having some impact on my daughter too, although she hasn't been able to convince me of Ariana Grande.  I am quite proud if you look at some of the top songs my daughter has in her list.  <a href="https://msdnshared.blob.core.windows.net/media/2018/03/pbi3.png"><img width="1024" height="601" class="alignnone size-large wp-image-1005" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/pbi3-1024x601.png" /></a>

Power BI also allows you to import the data into its own in-memory model which obviously makes sense from a performance point-of-view (given your dataset is not in the terabytes ranges of course).  A neat thing you can do if the data is in memory is use Q&amp;A to get insights.  This way you can just ask questions to your data instead of building your visualizations with drag &amp; drop.

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/pbi2.png"><img width="1024" height="639" class="alignnone size-large wp-image-995" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/pbi2-1024x639.png" /></a>

Both Azure Databrick and Power BI have a lot more interesting capabilities obviously, but my post would be endless if I had to dive into all of this.

In Part 3 we will look at how we can use Serverless solutions to automate the deployment of the Docker containers to Azure Containers Instances.]]></content:encoded>
    </item>
    <item>
      <title>Modernizing "Did my dad influence me?" - Part 1</title>
      <link>https://docs.microsoft.com/archive/blogs/wesleyb/modernizing-did-my-dad-influence-me-part-1</link>
      <pubDate>Thu, 15 Mar 2018 09:17:32 GMT</pubDate>
      <dc:creator><![CDATA[Wesley Backelant]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wesleyb/?p=795</guid>
      <description><![CDATA[In 2013 I decided to investigate how much influence my dad had on my musical choice, you can read...]]></description>
      <content:encoded><![CDATA[In 2013 I decided to investigate how much influence my dad had on my musical choice, you can read about it <a href="https://blogs.msdn.microsoft.com/wesleyb/2013/07/01/did-my-dad-influence-me/">here.</a>  At that point I was doing a lot of Power BI work so I decided to build it all in Power BI.  Fast forward a few years later and I was working with <a href="https://twitter.com/nathan_gs">@nathan_gs</a> to bring some of the data manipulation to <a href="https://blogs.msdn.microsoft.com/wesleyb/2015/08/28/using-spark-on-azure-part-1/">Spark</a> as an exercise.

Enter 2018 where things like VS Code, Containers, .NET Core, Azure Databricks are the new popular kids on the block.  As such I started the journey to move the solution to these new set of technologies.  A small disclaimer, I am not a fulltime developer so feel free to contribute to the code if you can improve it ;-)

For Part 1 let's focus on the basics, getting the LastFM API data on Azure Storage for later processing using .NET Core and Docker.

Prerequisites:
<ul>
 	<li><a href="https://docs.microsoft.com/en-us/dotnet/core/">.NET Core</a></li>
 	<li><a href="https://code.visualstudio.com/">Visual Studio Code</a></li>
 	<li><a href="https://www.docker.com/get-docker">Docker</a></li>
 	<li><a href="https://docs.microsoft.com/en-us/windows/wsl/about">WSL</a></li>
 	<li><a href="https://www.last.fm/">LastFM Account</a> + <a href="https://www.last.fm/api">API Key</a></li>
 	<li><a href="https://azure.microsoft.com/en-us/">Azure Account</a></li>
</ul>
I decided to go for <a href="https://docs.microsoft.com/en-us/dotnet/core/">.NET Core</a> and <a href="https://code.visualstudio.com/">Visual Studio Code</a><span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px"> </span>which are both cross-platform and open source.  If you don't know Visual Studio Code, you should really give it a try.  In fact, it has even been voted as default IDE in the <a href="http://blog.dustinkirkland.com/2017/09/results-of-ubuntu-desktop-applications.html">Ubuntu Desktop Applications Survey.</a>

You can find my code on <a href="https://github.com/wesback/LastFMReader">GitHub</a> and the container on <a href="https://hub.docker.com/r/wesback/lastfmreader/">DockerHub</a>.  I'm also using the <a href="https://docs.microsoft.com/en-us/windows/wsl/about">WSL</a> on Windows 10 (aka Windows Subsystem for Linux).  Personally, I'm using Debian but there are different flavours like Ubuntu, Kali Linux, OpenSUSE or SLES.

There are a couple of NuGet Packages I'm using in the project.  If you wonder how to add these to a project, you can do this from within VS Code using the Terminal window.  It allows you to run bash or PowerShell scripts right within your IDE.  Adding packages is as simple as running the following command:
<pre><span>dotnet add package Newtonsoft.Json
</span></pre>
<a href="https://msdnshared.blob.core.windows.net/media/2018/03/2018-03-15-09_21_20-Program.cs-LastFM.ReaderCore-Visual-Studio-Code.png"><img width="1024" height="636" class="alignnone wp-image-805 size-large" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/2018-03-15-09_21_20-Program.cs-LastFM.ReaderCore-Visual-Studio-Code-1024x636.png" /></a>

Reading the data from the API is simple.  What you need to do is get an API key on the <a href="https://www.last.fm/api">LastFM website</a>. I'm just using the <a href="https://www.last.fm/api/show/user.getRecentTracks">user.getRecentTracks</a> API.  This gives you the list of tracks you listened too including the needed metadata.  It takes a page size parameter so first I determine the number of pages the API will return.

One of the interesting learnings for me was the way configuration works in .NET Core.  I started out with a simple appsettings.json file but then realized it would be easier if it would also accept environment variables for Docker.  It is a bit of magic but straightforward to do in .NET Core.  Just use the AddEnvironmentVariables() method and that allows you to override the appsettings with environment variables.  The tricky part was that you need to add the right NuGet packages for this to work, so here are the ones I used.
<pre><span>dotnet add package </span><span>Microsoft.Extensions.Configuration
</span><span>dotnet add package </span><span>Microsoft.Extensions.Configuration.EnvironmentVariable
dotnet add package Microsoft.Extensions.Configuration.Json
</span></pre>
<a href="https://msdnshared.blob.core.windows.net/media/2018/03/lastfmconfig.png"><img width="1024" height="636" class="alignnone size-large wp-image-875" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/lastfmconfig-1024x636.png" /></a>

<span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">If you decide you just want to export your data but aren't planning on installing the prerequisites and compiling this yourself, you can quickly run this as a container.  </span>You can find the documentation <a href="https://docs.docker.com/engine/examples/dotnetcore/#create-a-dockerfile-for-an-aspnet-core-application">here</a> on how to create a Docker file for a .NET Core application.

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/dockerfile.png.png"><img width="1024" height="636" class="alignnone size-large wp-image-815" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/dockerfile.png-1024x636.png" /></a>

Executing a Docker container can obviously be done in different ways.  For this particular type of application I decided to go for the easiest solution which are <a href="https://azure.microsoft.com/en-us/services/container-instances/">Azure Container Instances</a>.  For this I'm again using bash, install the <a href="https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest">Azure CLI</a> or use the <a href="https://shell.azure.com/">shell</a> inside the browser to get started.  I've added the code below the screenshots, just replace the parameters with your values and you should be good to go.

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/aci1.png"><img width="1024" height="568" class="alignnone size-large wp-image-845" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/aci1-1024x568.png" /></a> <a href="https://msdnshared.blob.core.windows.net/media/2018/03/aci2.png"><img width="1024" height="568" class="alignnone size-large wp-image-855" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/aci2-1024x568.png" /></a>
<pre>az login
az group create -l westeurope -n RGLastFMReader

az container create -g RGLastFMReader --name lastfmreader --image wesback/lastfmreader --cpu 1 --memory 1 --restart-policy Never --location=westeurope -e lastfmkey=&lt;LASTFMKEY&gt; storageaccount=&lt;STORAGEACCOUNT&gt; storagekey=&lt;STORAGEKEY&gt; lastfmuser=&lt;USER&gt;</pre>
In the next part we'll look at how we can automate the export and how we can use services like Azure Databricks to transform the data in a more useful format for reporting.  Stay tuned!

I would like to thank <a href="https://www.last.fm/">LastFM</a> for their fantastic work and rich API, if you are not tracking your listening habits yet do get an account there!  Please make sure you read the <a href="https://www.last.fm/api/tos">TOS</a> if you use the API.

<a href="http://www.last.fm"><img width="145" height="45" class="alignnone size-full wp-image-865" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/untitled.png" /></a>

&nbsp;

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Cloud, Data and AI Announcements @ Ignite 2017</title>
      <link>https://docs.microsoft.com/archive/blogs/wesleyb/cloud-data-and-ai-announcements-ignite-2017</link>
      <pubDate>Tue, 26 Sep 2017 10:48:43 GMT</pubDate>
      <dc:creator><![CDATA[Wesley Backelant]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wesleyb/?p=755</guid>
      <description><![CDATA[As always around this time of the year we hold our annual conferences Ignite and Envision.  This is...]]></description>
      <content:encoded><![CDATA[As always around this time of the year we hold our annual conferences Ignite and Envision.  This is typically the time to pay close attention as new announcements are plenty.  Let's walk through some of the most important announcements.

<strong>Data &amp; AI</strong>

<em>Machine Learning</em>

Talking to data scientist has taught us that improvements to the end-to-end process of experimenting and deploying are much needed. Our new Azure Machine Learning offer will make data scientists more productive by introducing an IDE that will <strong>accelerate data preparation</strong> and allow you to take a DevOps type approach to data science.  Azure Machine Learning will support <strong>develop once and deploy everywhere</strong>, from <strong>on-premises to cloud using Spark, containers, GPU acceleration, to the edge with our IoT Edge.  </strong>Read more at <a href="http://bit.ly/2xv9hGL">http://bit.ly/2xv9hGL</a>.

<em>Azure Data Factory</em>

Data volumes are growing and so are the number of analytics projects delivered through the cloud.  One of the important aspects of all these solutions is <strong>moving data</strong> to the cloud or pushing it back to your on-premises solution after the heavy computing has been done in the cloud.  Being able to <strong>automate the computational workload</strong> with platforms like Spark, Data Lake Analytics, ... guarantees that you will <strong>benefit greatly from the pay-as-you-go model </strong>of the cloud.  With the introduction of Azure Data Factory v2 we will strengthen our data movement &amp; orchestration solution by adding important capabilities such as trigger based execution, <strong>Integration Services runtime</strong>,  ... Read more at <a href="http://bit.ly/2xvo5VP">http://bit.ly/2xvo5VP</a> and <a href="http://bit.ly/2huxJAj">http://bit.ly/2huxJAj</a>.

<em>SQL Database</em>

With the addition of SQL Database Managed Instance, you can combine the benefits of <strong>PaaS with near 100% SQL Server compatibility</strong>, effectively allowing you to seamlessly <strong>lift &amp; shift </strong>your on-premises solutions to the cloud.  Read more at <a href="http://bit.ly/2yoGBhI">http://bit.ly/2yoGBhI</a>.  Using our Database Migration Services at <a href="http://bit.ly/2yo236q">http://bit.ly/2yo236q</a> we will make it even easier!

<em>Cosmos DB</em>

Serverless computing is increasingly being used in modern cloud architectures, combining the power of our global scale <strong>Cosmos DB</strong> with <strong>Azure Functions</strong> allows you to build <strong>serverless compute at near-infinite global scale with extremely low latency </strong>and all this supported by fully managed services.  By using this you can enhance real-time user experience and app performance without focusing on the infrastructure to make it happen. Read more at <a href="http://bit.ly/2wRBbdW">http://bit.ly/2wRBbdW</a>.

<em>Dynamics 365 AI</em>

Today we announced <strong>an intelligent virtual agent for customer care</strong>, an intelligent assistant for customer service staff all <strong>powered by Microsoft AI</strong>.   HP Inc, Macyâ€™s and Microsoft are already using this technology to improve overall customer satisfaction.  Read more at <a href="http://bit.ly/2hsYsko">http://bit.ly/2hsYsko</a>.

SQL Server 2017

While there are many additions to SQL Server 2017 like <strong>in-database R &amp; Python, graph support</strong> and many more, the biggest news is certainly the release of SQL Server on Linux.  SQL Server can now run on <strong>Windows, Linux and Docker containers</strong>.  Read more at <a href="http://bit.ly/2y3gUXX">http://bit.ly/2y3gUXX</a>.  Together with Red Hat we provide up to 30% off SQL Server 2017 through an annual subscription. When customers purchase a new Red Hat Enterprise Linux subscription to support their SQL Server, they will be eligible for another 30% off their Red Hat Enterprise Linux subscription price.  Read more at <a href="http://bit.ly/2xAIquz">http://bit.ly/2xAIquz</a>.

<strong>Storage &amp; Platform</strong>

<em>Azure Tailored Kernel for Ubuntu</em>

Microsoft has been investing significantly in the backbone of Azure with new developments like FPGAs to boost network speed inside the Azure data centers.  This allows Azure VMs to provide as much as <strong><em>25Gbps bandwidth with low latency</em></strong>.  Canonical and Microsoft collaborated to bring this to life in Ubuntu on Azure with this new kernel.  Read more at <a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fbit.ly%2F2jQBXGU&amp;data=02%7C01%7CWesley.Backelant%40microsoft.com%7Ce4d4334ab16b4c222d2808d50273757b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636417617273057538&amp;sdata=FMhrGYXVxav1rSJ70zoqZOaqTw36fbdzdBO8ym2KH%2FY%3D&amp;reserved=0">http://bit.ly/2jQBXGU</a>

<em>Availability Zones</em>

As more and more mission critical workloads find their way to the cloud, we are committed to make sure that high availability comes as seamless as possible.  With the introduction of Availability Zones, we allow customers to run applications with <strong>higher availability and fault tolerance to datacenter failures</strong>.  Read more at <a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fbit.ly%2F2xVYE2Q&amp;data=02%7C01%7CWesley.Backelant%40microsoft.com%7Ce4d4334ab16b4c222d2808d50273757b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636417617273057538&amp;sdata=o35ZWmhgyEJuyNRjR87domiuDyIxphtEX2A95Rb1l1k%3D&amp;reserved=0">http://bit.ly/2xVYE2Q</a>

<em>Larger Storage</em>

Azure Storage is the foundation of any solution running in the cloud.  This is also one of the services that sees an incredibly fast growth.  To accommodate this we have announced faster and larger storage with storage accounts that can have <strong>up to 5PB and 50K IOPS</strong>.  Read more at <a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fbit.ly%2F2jM9P85&amp;data=02%7C01%7CWesley.Backelant%40microsoft.com%7Ce4d4334ab16b4c222d2808d50273757b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636417617273057538&amp;sdata=2GPEa5%2B1Wv5IYHAbrqt3bLhNxrewyezLV3uRIK19igs%3D&amp;reserved=0">http://bit.ly/2jM9P85</a>

<em>Confidential Computing</em>

Microsoft spends one billion dollars per year on cyber security of which a significant part is spent on Azure.  As customers demand more security and privacy we are committed to provide more advanced solutions.  With our new confidential computing offer we will <strong>encrypt data even while in use</strong>.  Read more at <a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fbit.ly%2F2wbCHMK&amp;data=02%7C01%7CWesley.Backelant%40microsoft.com%7Ce4d4334ab16b4c222d2808d50273757b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636417617273057538&amp;sdata=Kz8A%2BygmPWJyrIr8LDhRZ%2Ffo%2BYipaDKgyasNpeyaQ%2BE%3D&amp;reserved=0">http://bit.ly/2wbCHMK</a>

<em>VNET Service Endpoint</em>

VNet service endpoints allow you to secure Azure PaaS service (Azure Storage / Azure SQL Database) resources to your virtual networks.  Traffic from your virtual network to the services will always remain on the Microsoft Azure network backbone, this will <strong>increase security and lower latency</strong>. Read more at <a href="http://bit.ly/2wS2pkE">http://bit.ly/2wS2pkE</a>.

<strong>Internet-of-Things</strong>

Many announcements across different IoT services like the introduction of a new <strong>SaaS offer </strong>called <strong>IoT Central</strong>, Azure IoT Hub <strong>Device Provisioning Service</strong> and new capabilities in our <strong>IoT Edge</strong> to support cloud intelligence services like <strong>Cognitive Services, Machine Learning</strong> and more on the edge.  Read more at <a href="http://bit.ly/2y2Tpy9">http://bit.ly/2y2Tpy9</a>.

As I mentioned this is just a selection of the announcements but it should give you more than enough reading material for today (and probably tomorrow) 😉]]></content:encoded>
    </item>
    <item>
      <title>Microsoft continues push in Open Source, Bots, AI &amp; Deep Learning</title>
      <link>https://docs.microsoft.com/archive/blogs/wesleyb/microsoft-continues-push-in-open-source-bots-ai-deep-learning</link>
      <pubDate>Thu, 17 Nov 2016 09:53:14 GMT</pubDate>
      <dc:creator><![CDATA[Wesley Backelant]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wesleyb/?p=735</guid>
      <description><![CDATA[At Microsoft we have these fantastic moments where we deliver so much innovation at the same time...]]></description>
      <content:encoded><![CDATA[<span lang="EN-US"><span style="color: #000000;font-family: Calibri">At Microsoft we have these fantastic moments where we deliver so much innovation at the same time that it becomes difficult to capture all the great things we are doing.  So here is just a small sample of some amazing things we announced in the last couple of weeks and at Connect today.</span></span>

<b><span lang="EN-US"><span style="color: #000000;font-family: Calibri">Open Source</span></span></b>

<span lang="EN-US"><span style="color: #000000;font-family: Calibri">Let me start with probably the biggest announcement we made today, </span><b><i><span><span style="color: #000000;font-family: Calibri">Microsoft is joining the Linux Foundation as a Platinum member</span></span></i></b><span style="color: #000000;font-family: Calibri">.  Read all about this incredible announcement here: </span><a href="http://bit.ly/2f4H69Z"><span style="color: #0563c1;font-family: Calibri">http://bit.ly/2f4H69Z</span></a><span style="color: #000000;font-family: Calibri">.  </span></span>

<span lang="EN-US"><span style="color: #000000;font-family: Calibri">This is fantastic news that fortifies our commitment to the Linux community.  Some important steps were already taken as we have open-sourced several core technologies such as .NET Core and PowerShell to make them available cross-platform.  </span></span>

<span lang="EN-US"><span style="color: #000000;font-family: Calibri">We have announced the public preview of </span><b><i><span style="color: #000000;font-family: Calibri">SQL Server on Linux</span></i></b><span style="color: #000000;font-family: Calibri"> today at Connect.  SQL Server has been the leading operational database platform for the last couple of years and we are really excited to expand this beyond the Windows platform.  To learn more about SQL Server on Linux please visit </span><a href="http://bit.ly/2f0CsXu"><span style="color: #0563c1;font-family: Calibri">http://bit.ly/2f0CsXu</span></a><span style="color: #000000;font-family: Calibri">.</span></span>

<span style="font-family: Calibri">Both Google and Samsung announced that they will be joining the .NET Foundation, read their announcements here: <a href="http://bit.ly/2fFYHU6">http://bit.ly/2fFYHU6</a> and <a href="http://bit.ly/2ghjv7N">http://bit.ly/2ghjv7N</a>.</span>

<b><span lang="EN-US"><span style="color: #000000;font-family: Calibri">Bots</span></span></b>

<span lang="EN-US"><span style="color: #000000;font-family: Calibri">We are really humbled by the number of people working on our </span><b><i><span style="color: #000000;font-family: Calibri">Bot Framework </span></i></b><span style="color: #000000;font-family: Calibri">announced earlier this year.  Bots allow you to interact with users where they are, whether it is your website or app, Facebook Messenger, Skype, Slack, Microsoft Teams or several other popular services.  In order to support everyone in this journey and making it easier for you to start, we have announced the industry’s first </span><b><i><span style="color: #000000;font-family: Calibri">Cloud Bot-as-a-Service</span></i></b><span style="color: #000000;font-family: Calibri">: </span></span><a href="http://bit.ly/2fwgEa4"><span lang="EN-US"><span style="color: #0563c1;font-family: Calibri">http://bit.ly/2fwgEa4</span></span></a><span lang="EN-US"><span style="color: #000000;font-family: Calibri">.  </span></span>

<b><span lang="EN-US"><span style="color: #000000;font-family: Calibri">AI / Deep learning / Big Data / Cognitive Services</span></span></b>

<span lang="EN-US"><span style="color: #000000;font-family: Calibri">Microsoft has always been about democratizing technology and for us AI should not be an exception to our mission.  Please read more about how Microsoft is enabling AI for every person and organization at </span></span><a href="http://bit.ly/2fEwpJB"><span lang="EN-US"><span style="color: #0563c1;font-family: Calibri">http://bit.ly/2fEwpJB</span></span></a><span lang="EN-US"><span style="color: #000000;font-family: Calibri">.</span></span>

<span lang="EN-US"><span style="color: #000000;font-family: Calibri">In order to push AI and machine learning forward we also understand the </span><b><i><span style="color: #000000;font-family: Calibri">fundamental investments</span></i></b><span style="color: #000000;font-family: Calibri"> that are needed in</span><b><i><span style="color: #000000;font-family: Calibri"> Deep Learning</span></i></b><span style="color: #000000;font-family: Calibri">.  Over the last couple of months we have announced several important advancements and partnerships in this area.</span></span>
<ul>
 	<li><span lang="EN-US"><span style="color: #000000;font-family: Calibri">Microsoft expands artificial intelligence (AI) efforts with creation of new Microsoft AI and Research Group with 5000 engineers: </span></span><a href="http://bit.ly/2gg5mZp"><span lang="EN-US"><span style="color: #0563c1;font-family: Calibri">http://bit.ly/2gg5mZp</span></span></a><span lang="EN-US"><span style="color: #000000;font-family: Calibri"></span></span></li>
 	<li><span lang="EN-US"><span style="color: #000000;font-family: Calibri">How Bing and Azure are using an AI supercomputer in the cloud: </span></span><a href="http://bit.ly/2fU2LR8"><span lang="EN-US"><span style="color: #0563c1;font-family: Calibri">http://bit.ly/2fU2LR8</span></span></a><span lang="EN-US"><span><span style="color: #000000"></span></span></span></li>
 	<li><span lang="EN-US"><span style="color: #000000;font-family: Calibri">The Microsoft Cognitive Toolkit is a free, open-source toolkit that trains deep learning algorithms: </span></span><a href="http://bit.ly/2fkaydw"><span lang="EN-US"><span style="color: #0563c1;font-family: Calibri">http://bit.ly/2fkaydw</span></span></a><span lang="EN-US"><span><span style="font: 7pt 'Times New Roman';margin: 0px"><span style="color: #000000">      </span></span></span></span></li>
 	<li><span lang="EN-US"><span style="color: #000000;font-family: Calibri">Leading genome research center migrates to DNANexus on Azure: </span></span><a href="http://bit.ly/2fw7Oc8"><span lang="EN-US"><span style="color: #0563c1;font-family: Calibri">http://bit.ly/2fw7Oc8</span></span></a><span lang="EN-US"><span style="color: #000000;font-family: Calibri"></span></span></li>
 	<li><span lang="EN-US"><span style="color: #000000;font-family: Calibri">Microsoft and OpenAI are joining forces as OpenAI will run most of its large-scale experiments on Azure: </span></span><a href="http://bit.ly/2eX8jZ6"><span lang="EN-US"><span style="color: #0563c1;font-family: Calibri">http://bit.ly/2eX8jZ6</span></span></a><span lang="EN-US"><span style="color: #000000;font-family: Calibri"></span></span></li>
 	<li><span lang="EN-US"><span style="color: #000000;font-family: Calibri">How Uber is using Cognitive Services to improve security: </span></span><a href="http://wapo.st/2cZDRzh"><span lang="EN-US"><span style="color: #0563c1;font-family: Calibri">http://wapo.st/2cZDRzh</span></span></a><span style="color: #000000;font-family: Calibri"> </span></li>
</ul>
<span lang="EN-US"><span style="color: #000000;font-family: Calibri">At Connect we also announced the general availability of our </span><b><i><span style="color: #000000;font-family: Calibri">Azure Data Lake Services</span></i></b><span style="color: #000000;font-family: Calibri"> and </span><b><i><span style="color: #000000;font-family: Calibri">R Server for HDInsight</span></i></b><span style="color: #000000;font-family: Calibri">.  Azure Data Lake Store is the first cloud Data Lake store for enterprises that is secure, massively scalable and built on the open HDFS standard.  Azure Data Lake Analytics allows you to easily develop and run massively parallel data transformation and processing programs using U-SQL over petabytes of data.  Using R Server for HDInsight you can achieve incredible scale by combining the power and familiarity of R and power of Apache Spark.  The HDInsight family is also getting a new member with the preview of </span><b><i><span style="color: #000000;font-family: Calibri">Kafka on HDInsight</span></i><span style="color: #000000;font-family: Calibri">, </span></b><span style="color: #000000;font-family: Calibri">the open source distributed streaming platform.  For more information about The Intelligent Lake and our HDInsight improvements check out </span><a href="http://bit.ly/2ghCq36"><span style="color: #0563c1;font-family: Calibri">http://bit.ly/2ghCq36</span></a><span style="color: #000000;font-family: Calibri">.  </span></span>

<span lang="EN-US"><span style="color: #000000;font-family: Calibri">Enjoy!</span></span>]]></content:encoded>
    </item>
    <item>
      <title>Using Spark on Azure - Part 2 - Enter Power BI</title>
      <link>https://docs.microsoft.com/archive/blogs/wesleyb/using-spark-on-azure-part-2-enter-power-bi</link>
      <pubDate>Thu, 03 Sep 2015 04:32:00 GMT</pubDate>
      <dc:creator><![CDATA[Wesley Backelant]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wesleyb/2015/09/03/using-spark-on-azure-part-2-enter-power-bi/</guid>
      <description><![CDATA[As you have seen in Part 1 it is very easy to create a powerful Spark cluster and get some great...]]></description>
      <content:encoded><![CDATA[<p>As you have seen in <a title="Part 1" href="http://blogs.msdn.com/b/wesleyb/archive/2015/08/28/using-spark-on-azure-part-1.aspx">Part 1</a> it is very easy to create a powerful Spark cluster and get some great data exploration capabilities right in the Zeppelin notebooks.&nbsp; But at one point you may want to visualize your data so you can share it with your colleagues.&nbsp; Power BI is an incredibly rich solution not only allowing you to connect to files, services and databases but also Big Data systems like Spark.&nbsp; Because certain systems like Azure SQL Data Warehouse, SQL&nbsp; Server Analysis Services and Spark provide great performance we also allow you to connect directly to these data sources, skipping the in-memory modeling work and just passing through the queries directly to the source.</p>
<p>So how easy is it to connect to a Spark cluster running on Azure?&nbsp; Let's find out!</p>
<p>First go to <strong>Get Data</strong> and select <strong>Databases</strong></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/4111.sparkpowerbi1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/4111.sparkpowerbi1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/4111.sparkpowerbi1.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/4111.sparkpowerbi1.png" alt="" border="0" /></a></p>
<p>You&nbsp;will get the list of data sources where we currently support a live connection.&nbsp; Here you obviously have to select <strong>Spark</strong> and select click <strong>Connect</strong>.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/3630.sparkpowerbi2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/3630.sparkpowerbi2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/3630.sparkpowerbi2.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/3630.sparkpowerbi2.png" alt="" border="0" /></a></p>
<p>Enter the details of your cluster (clustername.azurehdinsight.net)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/5383.sparkpowerbi3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/5383.sparkpowerbi3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/5383.sparkpowerbi3.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/5383.sparkpowerbi3.png" alt="" border="0" /></a></p>
<p>That's basically it, you are now connected to the Spark cluster and you can start digging into the data.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/4101.sparkpowerbi5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/4101.sparkpowerbi5.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/4101.sparkpowerbi5.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/4101.sparkpowerbi5.png" alt="" border="0" /></a></p>
<p>Another option is to use the Power BI Desktop if you want to enrich the data with additional calculations or transformations.&nbsp; <br />You will have to download the Spark ODBC driver if you want to use Power BI Desktop to connect to your Spark cluster, you can get that <a href="http://blogs.msdn.com/controlpanel/blogs/posteditor.aspx/<a title=&quot;here&quot; href=&quot;https:/www.microsoft.com/en-us/download/details.aspx?id=49883&quot;>here</a>">here</a>.</p>
<p>Now let's try to see if I had some influence on my daughter (on her music choice at least :-)).&nbsp; Let's start by connecting to the Spark cluster from our Power BI Desktop.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/0474.powerbidesktopspark1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/0474.powerbidesktopspark1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/0474.powerbidesktopspark1.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/0474.powerbidesktopspark1.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/6064.powerbidesktopspark2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/6064.powerbidesktopspark2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/6064.powerbidesktopspark2.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/6064.powerbidesktopspark2.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/2821.powerbidesktopspark3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/2821.powerbidesktopspark3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/2821.powerbidesktopspark3.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/2821.powerbidesktopspark3.png" alt="" border="0" /></a></p>
<p>Let's look at the dashboard I have built to see the influence of my father on me and myself on my daughter.&nbsp; First thing I noticed is that my listening moments are completely different from my father's.&nbsp; You can see when my wife comes home by looking at the time I stop listening to music ;-)&nbsp; I was very happy to see the top songs for me and my daughter and I really hope she will keep on listening to this kind of music.&nbsp; Looking at the chart for me and my father I'm pretty sure he is thinking the same :-)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/4857.powerbidesktopspark4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/4857.powerbidesktopspark4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/4857.powerbidesktopspark4.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/4857.powerbidesktopspark4.png" alt="" border="0" /></a></p>
<p>Since we are using the Power BI In-Memory model here I can also use Q&amp;A to investigate trends.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/3733.powerbidesktopspark6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/3733.powerbidesktopspark6.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/3733.powerbidesktopspark6.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/3733.powerbidesktopspark6.png" alt="" border="0" /></a></p>
<p>I hope these posts make clear that you can get up and running incredibly quickly with Spark using Azure and go from raw data to beautiful visualizations.</p>
<p>Nathan and myself are already thinking about our next blog post about Spark... stay tuned!!!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Using Spark on Azure - Part 1</title>
      <link>https://docs.microsoft.com/archive/blogs/wesleyb/using-spark-on-azure-part-1</link>
      <pubDate>Fri, 28 Aug 2015 05:01:00 GMT</pubDate>
      <dc:creator><![CDATA[Wesley Backelant]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wesleyb/2015/08/28/using-spark-on-azure-part-1/</guid>
      <description><![CDATA[The world of data is one that is evolving quite rapidly, over the last years many new technologies...]]></description>
      <content:encoded><![CDATA[<p>The world of data is one that is evolving quite rapidly, over the last years many new technologies have seen the light like Hadoop, Hive, Pig and many many more.&nbsp; One project that has gotten quite some attention lately is Spark which is described as follows: "Spark is a fast and general engine for large-scale data processing."&nbsp; Of course there&nbsp;are many projects in this particular area but Spark is gaining a lot of traction with its high performance in-memory handling.&nbsp; Spark also stands out by delivering not only an engine for data processing but a full platform offering Spark SQL, Spark Streaming, ML Lib (Machine Learning) and GraphX (a graph DB).</p>
<p>As Microsoft we have a history of embracing Big Data technologies on our Azure platform.&nbsp; We offer templates in our IAAS platform for HortonWorks, Cloudera and MapR among other&nbsp;Big Data Services.&nbsp; We also offer HDInsight, our 100% Apache Hadoop-based service in the cloud.&nbsp; By using HDInsight you are up and running in minutes with your own Big Data cluster, these clusters can come in different types such as Hadoop (HortonWorks), HBase, Storm and more recently Spark.&nbsp; If you want to read more in detail about this please refer to <a title="https://azure.microsoft.com/en-us/blog/interactive-analytics-on-big-data-with-the-release-of-spark-for-azure-hdinsight/" href="https://azure.microsoft.com/en-us/blog/interactive-analytics-on-big-data-with-the-release-of-spark-for-azure-hdinsight/" target="_blank">https://azure.microsoft.com/en-us/blog/interactive-analytics-on-big-data-with-the-release-of-spark-for-azure-hdinsight/</a>.</p>
<p>If you want to learn how easy it is to setup a Spark cluster on Azure please follow the instructions here: <a href="https://azure.microsoft.com/en-us/documentation/articles/hdinsight-apache-spark-zeppelin-notebook-jupyter-spark-sql/">https://azure.microsoft.com/en-us/documentation/articles/hdinsight-apache-spark-zeppelin-notebook-jupyter-spark-sql/</a></p>
<p>We will go through a practical example on how you can take an input file and process it using Spark, for this I will call in the help of someone with a lot of experience in Spark (Nathan Bijnens - <a title="@nathan_gs" href="https://twitter.com/nathan_gs" target="_blank">@nathan_gs</a>).</p>
<p>My <a title="previous post" href="http://blogs.msdn.com/b/wesleyb/archive/2013/07/01/did-my-dad-influence-me.aspx">previous post</a> (I know it has been way to long since I blogged :-)) was about using Last.FM data to see if my father had influenced me.&nbsp; As I am a father myself I figured I should now see how I am influencing my daughter, so I created her an account on Last.FM too.&nbsp; The goal of this post is to show how easy it is to work with Spark on Azure, we are not trying to prove the performance of Spark since there are more than enough benchmarks done.&nbsp; Because we want to work with a raw file on Spark I have written an Azure WebJob that reads the Last.FM API every night and outputs this to an Azure Storage Account (in JSON).&nbsp; This will be the starting point for our journey from raw file to Power BI Dashboard.&nbsp;</p>
<p>In part 1&nbsp;we will&nbsp;see how you can take this JSON file and prepare it to be used in Power BI (as a Hive table).&nbsp; Attached some screenshots of the Zeppelin Notebook, if you want some of the source code you can find it on my OneDrive @ <a title="LastFMSpark" href="https://onedrive.live.com/redir?resid=F8448F26F719FCAC!192419&amp;authkey=!AB4ZLro6lU-ysos&amp;ithint=file%2ctxt" target="_blank">https://onedrive.live.com/redir?resid=F8448F26F719FCAC!192419&amp;authkey=!AB4ZLro6lU-ysos&amp;ithint=file%2ctxt</a>)</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/4762.sparkblog1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/4762.sparkblog1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/4762.sparkblog1.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/4762.sparkblog1.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/4540.sparkblog2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/4540.sparkblog2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/4540.sparkblog2.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/4540.sparkblog2.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/7317.sparkblog3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/7317.sparkblog3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/7317.sparkblog3.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/7317.sparkblog3.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/2112.sparkblog4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/2112.sparkblog4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/2112.sparkblog4.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/2112.sparkblog4.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/8463.sparkblog5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/8463.sparkblog5.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/8463.sparkblog5.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/8463.sparkblog5.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/1830.sparkblog6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/1830.sparkblog6.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/1830.sparkblog6.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/1830.sparkblog6.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/5444.sparkblog7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/5444.sparkblog7.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/5444.sparkblog7.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/5444.sparkblog7.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/2117.sparkblog8.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/2117.sparkblog8.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/2117.sparkblog8.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/2117.sparkblog8.png" alt="" border="0" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Did my dad influence me?</title>
      <link>https://docs.microsoft.com/archive/blogs/wesleyb/did-my-dad-influence-me</link>
      <pubDate>Mon, 01 Jul 2013 05:45:00 GMT</pubDate>
      <dc:creator><![CDATA[Wesley Backelant]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wesleyb/2013/07/01/did-my-dad-influence-me/</guid>
      <description><![CDATA[I always love it when I can combine things I really love and in this case I was thinking about music...]]></description>
      <content:encoded><![CDATA[<p>I always love it when I can combine things I really love and in this case I was thinking about music and BI.&nbsp; When Data Explorer was first released on Azure Labs I played around with it a couple of times, but I have to admit at that point I failed to see just how impressive it actually is.&nbsp; When we announced the first Data Explorer for Excel Preview I was completely hooked.&nbsp; The power and beauty of the tool and the expression language was just brilliant to see, and I started wondering how far I could take it.&nbsp; As a good exercise I asked myself the following question: <strong>"Did my dad influence me when it comes to my music choice?"</strong>.&nbsp; Since I am interested in music I obviously joined Last.FM (in 2007) which tracks the music you listen to on your computer.&nbsp; Now I'm lucky because my dad is also pretty modern when it comes to computers, and he soon joined me on Last.FM.&nbsp; With this information I had everything I needed to start my journey.</p>
<p>First step in this exercise was finding out how I could get data from Last.FM to start my analysis.&nbsp; I turns out Last.FM has quite a nice <a href="http://www.last.fm/api">API</a>&nbsp;which could give me all the information I needed to do my analysis.&nbsp; There are 2 outputs possible, JSON and XML.&nbsp; In my first attempt I started using the XML output because it is more readable in the browser, this is important if you don't know the output yet.&nbsp; However, it also has more overhead and that's why I decided to go for JSON instead.&nbsp; Data Explorer supports JSON very well so it was easy to move to the JSON output.</p>
<p>There was a specific call I was very interested in,&nbsp;<a href="http://www.last.fm/api/show/user.getRecentTracks">user.getRecentTracks</a>&nbsp;which gives the tracks you listened too with some attributes like the time and -&nbsp;interesting for Power View - a URL to the artist image on Last.FM.&nbsp; One challenge however is the fact that it also accepts a parameter called limit which defined the number of rows per page (which has a max limit of 200) and a parameter page.&nbsp; You can probably guess what I needed next, loop over the&nbsp;API with a different page number so I can get my entire history.&nbsp; Turns out this isn't to difficult in the Data Explorer language, just just need to define a function that takes a parameter.&nbsp; The easiest way to do this, is to build the query from within the UI and then take that as a starting point for your function.&nbsp;</p>
<p>My query started with the following statement:</p>
<p><em>let</em><br /><em>&nbsp;&nbsp;&nbsp; Source = Json.Document(Web.Contents(<span style="color: #000000; text-decoration: underline;">"<a href="http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&amp;api_key=myapikey&amp;format=json&amp;limit=200&amp;page=1&amp;extended=1&amp;user"><span style="color: #000000; text-decoration: underline;">http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&amp;api_key=myapikey&amp;format=json&amp;limit=200&amp;page=1&amp;extended=1&amp;user</span></a>=dis4ea"))</span></em><br />&nbsp;&nbsp;&nbsp; ...</p>
<p>I changed it to</p>
<p><em>(page as number) =&gt;</em></p>
<p><em>let</em><br /><em>&nbsp;&nbsp;&nbsp; Source = Json.Document(Web.Contents<span style="color: #000000;">(</span><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">"<a href="http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&amp;api_key=myapikey&amp;format=json&amp;limit=200&amp;page=1&amp;extended=1&amp;user"><span style="color: #000000; text-decoration: underline;">http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&amp;api_key=myapikey&amp;format=json&amp;limit=200&amp;page=" &amp; Number.ToText(page) &amp; "&amp;extended=1&amp;user</span></a>=dis4ea"))<br /></span></span></em><span style="color: #000000;">&nbsp;&nbsp;&nbsp; ...</span><em></em></p>
<p>After that you can call the 'function' by starting a new query with the following:</p>
<p><em>let<br />&nbsp;&nbsp;&nbsp; Source = Table.Combine(List.Transform({1..10}, GetLastFMTracksByPage))<br />in<br />&nbsp;&nbsp; Source</em></p>
<p>*(GetLastFMTracksByPage is the name of the previous query)</p>
<p>You can learn more about this trick on Kasper De Jonge's <a href="http://www.powerpivotblog.nl/nba-team-spending-and-their-results-with-excel-powerpivot-and-data-explorer">blog</a>.</p>
<p>Now this was a good start but remember the original question was to compare it with my dad's listening habits.&nbsp; So I actually needed a second parameter which is the user name and that's when it became interesting, I was trying to get that working but couldn't find a good solution immediately.&nbsp; So I reached out to my friends in the product team and they came up with a couple of interesting answers (many thanks to Faisal Mohamood and Clemens Szyperski for their help!).&nbsp; Adding a second parameter wasn't too difficult but you need to have the right syntax to loop over it.&nbsp;</p>
<p>First I added the second parameter user name to the definition:</p>
<p>(page as number, username as text) =&gt;</p>
<p><em>let</em><br /><em>&nbsp;&nbsp;&nbsp; Source = Json.Document(Web.Contents<span style="color: #000000;">(</span><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">"<a href="http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&amp;api_key=myapikey&amp;format=json&amp;limit=200&amp;page=1&amp;extended=1&amp;user"><span style="color: #000000; text-decoration: underline;">http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&amp;api_key=myapikey&amp;format=json&amp;limit=200&amp;page=" &amp; Number.ToText(page) &amp; "&amp;extended=1&amp;user</span></a>=" &amp; username))<br /></span></span></em><span style="color: #000000;">&nbsp;&nbsp;&nbsp; ...</span></p>
<p>Now it's a matter of finding the right syntax for the&nbsp;Table.Combine statement:</p>
<p><em>let</em><br /><em>&nbsp;&nbsp;&nbsp; Source = Table.Combine(List.Transform({1..99}, each GetLastFMTracksByPage(_ , "dis4ea")))</em><br /><em>in</em><br /><em>&nbsp;&nbsp;&nbsp; Source</em></p>
<p>That solved the first problem of having a dynamic parameter, but it would be even better&nbsp;to have&nbsp;the list for my dad and myself merged into a single table.&nbsp; So&nbsp;how can we do this?&nbsp; Faisal came up with the great idea to use a table and a custom column to solve this one.&nbsp; I created a table in Excel with the following layout:</p>
<p>Username, Page<br />dis4ea, 1<br />dis4ea, 2<br />master_cobra, 1<br />...</p>
<p>Then I created the&nbsp;following query starting from this table:</p>
<p><em>let</em><br /><em>&nbsp;&nbsp; Source = Excel.CurrentWorkbook(){[Name="ParameterTable"]}[Content],</em><br /><em>&nbsp;&nbsp; InsertedCustom = Table.AddColumn(Source, "Custom", each GetLastFMTracksByPage([Page], [UserName]))</em><br /><em>in</em><br /><em>&nbsp;&nbsp; InsertedCustom</em></p>
<p>This made it possible to&nbsp;have all the data in one table (with an extra column UserName) and it also makes it easy to extend it with other user&nbsp;names.&nbsp; Now it was just a matter of visualizing the information in Power View and get the answer to my question, did my dad influence my music choice?&nbsp; If you look at the screenshot below I think I can safely conclude that he did (for the record, my user name is dis4ea).</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/3247.lastfm.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/3247.lastfm.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/3247.lastfm.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75/3247.lastfm.png" alt="" border="0" /></a><br />&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>PowerPivot on Lync – small update</title>
      <link>https://docs.microsoft.com/archive/blogs/wesleyb/powerpivot-on-lync-small-update</link>
      <pubDate>Mon, 23 Apr 2012 12:28:12 GMT</pubDate>
      <dc:creator><![CDATA[Wesley Backelant]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wesleyb/2012/04/23/powerpivot-on-lync-small-update/</guid>
      <description><![CDATA[Just a small heads up that I changed the Lync PowerPivot file to make it scale better.&#160; In...]]></description>
      <content:encoded><![CDATA[<p>Just a small heads up that I changed the Lync PowerPivot file to make it scale better.&#160; In order to do so I have removed several unique columns from the import and moved some calculations to the query side instead of the client side.</p>  <p>I have placed the new file <a href="https://skydrive.live.com/redir.aspx?cid=1f269859cc95d254&amp;resid=1F269859CC95D254!6611&amp;parid=1F269859CC95D254!6413" target="_blank">here</a> and the original file is still available <a href="https://skydrive.live.com/redir.aspx?cid=1f269859cc95d254&amp;resid=1F269859CC95D254!6414&amp;parid=1F269859CC95D254!6413" target="_blank">here</a>.</p>  <p>If you are interested in having this as a Tabular Model (for SQL Server Analysis Services) please let me know.&#160; You can easily do this yourself if you like of course by importing the model in the SQL Server Data Tools.</p>]]></content:encoded>
    </item>
    <item>
      <title>Extending your Lync monitoring data using PowerPivot and Power View</title>
      <link>https://docs.microsoft.com/archive/blogs/wesleyb/extending-your-lync-monitoring-data-using-powerpivot-and-power-view</link>
      <pubDate>Fri, 09 Mar 2012 05:26:58 GMT</pubDate>
      <dc:creator><![CDATA[Wesley Backelant]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wesleyb/2012/03/09/extending-your-lync-monitoring-data-using-powerpivot-and-power-view/</guid>
      <description><![CDATA[Cross posting from Ilse’s Blog.  During the last Techdays here in Belgium, I have had the privilege...]]></description>
      <content:encoded><![CDATA[<p>Cross posting from <a href="http://blogs.technet.com/b/ilvancri/" target="_blank">Ilse’s Blog</a>.</p>  <p>During the last Techdays here in Belgium, I have had the privilege of being able to present a session on Lync. I had chosen as a topic for that session “Deploying Lync: Notes from the Field, and more”, where I talked about the top ten questions I run into when talking to customers about deploying Lync in their environment. I tried to answer the following questions:</p>  <ul>   <li>Lync Online – Lync On Premises: where do we go? </li>    <li>Lync is a Puzzle, really? </li>    <li>Lync and NAT: Yes or No? </li>    <li>Whats’s up with the Picture in Lync? </li>    <li>Are there any tools available to help me design hardware and bandwidth requirements for Lync? </li>  </ul>  <p>And then the final topic I touched upon was monitoring, and that’s when I was happy to introduce one of my Technology Advisor colleagues, Wesley Backelant, who knows almost everything about PowerPivot and Power View and SQL and BI to the IT Pro Lync audience <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/5466.wlEmoticon-smile_1594239E.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/5466.wlEmoticon_2D00_smile_5F00_1594239E.png" /> And we promised to blog about it, so here it is, the details on the web <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/5466.wlEmoticon-smile_1594239E.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/5466.wlEmoticon_2D00_smile_5F00_1594239E.png" /></p>  <h1>Monitoring Server in Lync, why would you use it?</h1>  <p>In short, the Monitoring Server role in Lync is optional, and can be added after finishing the deployment of all the other server roles within Lync. The Monitoring Server enables you to capture both call detail records (CDR) for Enterprise Voice and Audio/Video conferences and data collections about your Audio/Video Quality of Experience, also incorporating data on&#160; file transfers, application sharing, and remote assistance. It does NOT archive the conversations itself (if you want to keep the IM conversations in your organization, you should consider deploying the Archiving server role).</p>  <h1>Some typical questions on the Monitoring Server role in Lync:</h1>  <ul>   <li>     <h3>Can the Monitoring server role be combined with any other Lync Server role?</h3>  Yes, as taken from <a href="http://technet.microsoft.com/en-us/library/gg425833.aspx">TechNet</a>:       <blockquote>       <p><em>“A Monitoring Server can be collocated with an Archiving Server, with a SQL Server store of an Enterprise Edition Front End pool, or with a file store of a Front End pool. The Monitoring Server requires a database, but the database can be collocated on the Monitoring Server, with the database server for the Archiving Server, or on the Back End Server of an Enterprise Edition Front End pool. A Monitoring Server cannot be collocated with a Standard Edition server in a production environment.”</em></p>     </blockquote>   </li>  </ul>  <ul>   <li>     <h3>Can you collocate the monitoring database with a Lync back-end database?</h3>  The answer is yes, but the back-end database needs to reside in a separate SQL instance. </li>    <li>     <h3>Do you require SQL Reporting Server?</h3>  No,&#160; but if you do you will be able to take advantage of the built-in Monitor Server Reports, which you can customize as wanted. </li>    <li>     <h3>What’s the advantage of using the Monitoring Server role with Microsoft System Center Operations Manager?</h3>  By installing the Microsoft System Center Operations Manager, which uses the Monitoring CDR and QoE data, you can enable the generation of near real-time alerts showing the health of call reliability and media quality, and define actions upon these. </li>    <li>     <h3>Do I need a monitoring server per Lync Pool, and even per Site?</h3>  No, as taken from the same Technet Article linked to before:       <blockquote>       <p><em>“Multiple central sites can also share any of the following that you deploy in one central site:</em></p>        <ul>         <li><em>Archiving Server</em> </li>          <li><em>Monitoring Server</em> </li>          <li><em>Stand-alone Mediation Server or pool</em> </li>          <li><em>Edge Server or Edge pool”</em> </li>       </ul>     </blockquote>   </li>    <li>     <h3>Any documentation available on how to deploy the Monitoring Server? </h3>  Yes: Microsoft Lync Server 2010 Monitoring Deployment Guide, available for download here: <a title="http://www.microsoft.com/download/en/details.aspx?id=8207" href="http://www.microsoft.com/download/en/details.aspx?id=8207">http://www.microsoft.com/download/en/details.aspx?id=8207</a>, which described the different steps envolved:       <ul>       <li>Installing Message Queuing for Monitoring </li>        <li>Installing SQL Server (with Reporting Services) </li>        <li>Adding a Monitoring Server to the Topology using Topology Builder </li>        <li>Installing the Monitoring Server </li>        <li>Deploying Monitoring Server Reports (if wanted) </li>        <li>Configuring Monitoring Server Settings </li>     </ul>   </li>  </ul>  <p>&#160;</p>  <ul>   <li>     <h3>Is there a document that described how to use the Monitoring Server Reports in a Lync Server 2010 deployment?</h3>  Sure there is, there is Microsoft Lync Server 2010: Using Monitoring Server Reports whitepaper available for download here: <a title="http://www.microsoft.com/download/en/details.aspx?id=890" href="http://www.microsoft.com/download/en/details.aspx?id=890">http://www.microsoft.com/download/en/details.aspx?id=890</a> </li>  </ul>  <h1>Built-In Reports examples:</h1>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/4572.image_43CA0B59.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/4572.image_5F00_43CA0B59.png"><img title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/4527.image_thumb_32559682.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/4527.image_5F00_thumb_5F00_32559682.png" width="754" height="535" /></a></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/4722.image3_64E0F1C3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/4722.image3_5F00_64E0F1C3.png"><img title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/6787.image3_thumb_654910B9.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/6787.image3_5F00_thumb_5F00_654910B9.png" width="754" height="523" /></a></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/7725.image6_6D3C9F1C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/7725.image6_5F00_6D3C9F1C.png"><img title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/3010.image6_thumb_06A08E58.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/3010.image6_5F00_thumb_5F00_06A08E58.png" width="754" height="516" /></a></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/5074.image9_0A89CEE9.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/5074.image9_5F00_0A89CEE9.png"><img title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/7331.image9_thumb_6EE12EF3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/7331.image9_5F00_thumb_5F00_6EE12EF3.png" width="754" height="535" /></a></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/2330.image12_7627F32D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/2330.image12_5F00_7627F32D.png"><img title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/5344.image12_thumb_1D5E2864.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/5344.image12_5F00_thumb_5F00_1D5E2864.png" width="754" height="535" /></a></p>  <h1>What does the Dashboard give me?</h1>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/6330.image28_7AC1E7B7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/6330.image28_5F00_7AC1E7B7.png"><img title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/4532.image28_thumb_622E3668.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/4532.image28_5F00_thumb_5F00_622E3668.png" width="754" height="523" /></a></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/1778.image32_636EBB48.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/1778.image32_5F00_636EBB48.png"><img title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/5025.image32_thumb_78C85CB1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/5025.image32_5F00_thumb_5F00_78C85CB1.png" width="754" height="535" /></a></p>  <p>And yes you can export the reports, and you can customize them…but if you know have the feeling as in “this is not exactly what I want to show my manager”, “I would like to have some more fancy reports” “I’m looking for an easier way to use the gathered data”…then please read along, because now it’s time to dive into PowerPivot and Power View!</p>  <h3>Let me start by saying that the solution provided here is obviously for demo purposes.&#160; It is not a perfect solution and we are not responsible for the production use of this file.</h3>  <h1>Technologies Used</h1>  <p>First a couple of words on the technology used in this solution.</p>  <p>PowerPivot is a powerful data mashup and data exploration tool based on xVelocity in-memory technologies providing unmatched analytical performance to process billions of rows at the speed of thought.&#160; It comes with a client part, a free add-in for Excel 2010, which allows you to import and combine data in an easy way.&#160; We used Excel in this particular case to get information from the Lync monitoring databases and create some interesting calculations.&#160; In order to get your hands on PowerPivot please visit the official <a href="http://www.microsoft.com/en-us/bi/powerpivot.aspx">website</a>.&#160; </p>  <p>The second part of the solution uses SharePoint and Power View to share and visualize the information in a very interactive way.&#160; Sharing PowerPivot files in a scalable and controlled way can be achieved by using the Excel Services functionality of SharePoint.&#160; With Excel Services you have the ability to share Excel files to a broad audience without the need to install Excel 2010 (and in this case PowerPivot) on every machine.&#160; If you need more information about Excel Services please read <a href="http://office.microsoft.com/en-us/sharepoint-server-help/getting-started-with-excel-services-and-excel-web-access-HA010377881.aspx#_Toc243961619">this</a>.&#160; When integrating SQL Server Reporting Services 2012 in SharePoint 2010, you will get a new powerful data visualization tool called Power View.&#160; Power View is really all about the interactive and stunning experience.&#160; Understanding Power View is actually the easiest by just watching this <a href="https://www.youtube.com/watch?v=75szAtMrkNs&amp;feature=channel_video_title">demo</a>.</p>  <p>Now that you know the technology part let’s dive into some of the details on how we created this.&#160; Of course we started by interviewing customers to understand what they would like to get out of the information available.&#160; Some of the topics that came up were duration distribution, average response time, number of sessions by type, uptake of Lync and a lot more interesting stuff!</p>  <p>Most of the information you need is available in the LcsCDR which is fully documented <a href="http://technet.microsoft.com/en-us/library/gg398570.aspx">here</a>.&#160; The leading table is SessionDetails so you better figure out how this table is structured.&#160; One additional set of data you may need is a date table, I have included a hidden sheet with dates but you could also use the <a href="https://datamarket.azure.com/dataset/1542c52d-d466-4094-a801-9ef8fd7c6485">DateStream feed</a> from our Windows Azure Marketplace.&#160; A couple of other tables we used are SIP, Users, ClientVersions and UriTypes</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/2744.clip_image002_12987EE2.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/2744.clip_5F00_image002_5F00_12987EE2.gif"><img title="clip_image002" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/0167.clip_image002_thumb_2F7D8FB8.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/0167.clip_5F00_image002_5F00_thumb_5F00_2F7D8FB8.gif" width="754" height="410" /></a></p>  <p>The other database we used was rtcab1 to get display names.&#160; This is a bit less straightforward to retrieve but here is how you can extract it:</p>  <p>SELECT avname.Value as 'DisplayName', avuri.Value as 'UserUri'    <br />&#160; FROM AbUserEntry u     <br />&#160; INNER JOIN AbAttributeValue avname ON avname.UserId = u.UserId AND avname.AttrId = 3     <br />&#160; INNER JOIN AbAttributeValue avuri ON avuri.UserId = u.UserId AND avuri.AttrId = 8</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/2260.clip_image004_23580192.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/2260.clip_5F00_image004_5F00_23580192.gif"><img title="clip_image004" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/4682.clip_image004_thumb_1A476212.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/4682.clip_5F00_image004_5F00_thumb_5F00_1A476212.gif" width="754" height="407" /></a></p>  <p>The entire model looks like this</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/2806.clip_image006_557729DE.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/2806.clip_5F00_image006_5F00_557729DE.gif"><img title="clip_image006" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="clip_image006" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/0361.clip_image006_thumb_1E0D04B1.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/0361.clip_5F00_image006_5F00_thumb_5F00_1E0D04B1.gif" width="754" height="407" /></a></p>  <p>Now that we have all the information in place it is time to visualize some of it.&#160; A couple examples of the things we built (remember it was built on a test database too so don’t freak out by the unanswered call rate <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/2043.clip_image008_1906B303.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/2043.clip_5F00_image008_5F00_1906B303.gif"><img title="clip_image008" style="border-width: 0px; margin: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="clip_image008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/1351.clip_image008_thumb_2317402F.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/1351.clip_5F00_image008_5F00_thumb_5F00_2317402F.gif" width="24" height="24" /></a>).</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/6153.clip_image010_7B302CD0.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/6153.clip_5F00_image010_5F00_7B302CD0.gif"><img title="clip_image010" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="clip_image010" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/1856.clip_image010_thumb_39BD7846.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/1856.clip_5F00_image010_5F00_thumb_5F00_39BD7846.gif" width="754" height="407" /></a></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/1016.clip_image012_30ACD8C6.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/1016.clip_5F00_image012_5F00_30ACD8C6.gif"><img title="clip_image012" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="clip_image012" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/6710.clip_image012_thumb_2F040AC1.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/6710.clip_5F00_image012_5F00_thumb_5F00_2F040AC1.gif" width="754" height="408" /></a></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/8741.clip_image014_25F36B41.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/8741.clip_5F00_image014_5F00_25F36B41.gif"><img title="clip_image014" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="clip_image014" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/4544.clip_image014_thumb_75A8828B.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/4544.clip_5F00_image014_5F00_thumb_5F00_75A8828B.gif" width="754" height="409" /></a></p>  <p>Taking this PowerPivot file to the server to share it with a broad audience is a matter of saving it on an Excel Services enabled SharePoint Server.&#160; This would give you the following view</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/5618.clip_image016_29B90DE0.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/5618.clip_5F00_image016_5F00_29B90DE0.gif"><img title="clip_image016" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="clip_image016" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/6786.clip_image016_thumb_607254E5.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/6786.clip_5F00_image016_5F00_thumb_5F00_607254E5.gif" width="754" height="409" /></a></p>  <p>But we promised a more compelling and interactive way of visualizing this information and that is exactly what you will do with Power View.&#160; Power View can be used on PowerPivot files published on SharePoint or on solutions deployed to SQL Server Analysis Services.&#160; As a little side note, you can import the PowerPivot model or build this model from scratch in SQL Server Data Tools to make it a real server-side solution running on SQL Server Analysis Services.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/4162.clip_image018_297462AD.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/4162.clip_5F00_image018_5F00_297462AD.gif"><img title="clip_image018" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="clip_image018" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/7128.clip_image018_thumb_2F979B49.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/7128.clip_5F00_image018_5F00_thumb_5F00_2F979B49.gif" width="754" height="428" /></a></p>  <p>The most popular view however is the adoption rate of Lync in the organization, this can be achieved by using the Scatter Chart functionality in Power View.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/0285.clip_image020_2686FBC9.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/0285.clip_5F00_image020_5F00_2686FBC9.gif"><img title="clip_image020" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="clip_image020" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/75/metablogapi/6165.clip_image020_thumb_763C1313.gif" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-75-metablogapi/6165.clip_5F00_image020_5F00_thumb_5F00_763C1313.gif" width="754" height="428" /></a></p>  <p>Please find the PowerPivot file <a href="http://sdrv.ms/ytR7As">here</a>.&#160; In order to get data from your enviroment go to the PowerPivot window, select “Design” and “Existing Connection”.&#160; Edit both connections to point to your SQL Server and when done use “Refresh All”.&#160; In the Excel Windows go to Data&quot; and select “Refresh All” and you are done.&#160; If you want to use Power View just upload the file to a SharePoint where this feature is enabled.</p>  <p>There is a LOT more you can get out of the Lync databases, so we hope this sparks a whole wave of creativity!&#160; Ilse’s favorite for example is the QoEMetric database to see the call quality for different users and devices.&#160; If I can find some time I’ll see if we can publish this PowerPivot file too.&#160; </p>  <p>&#160;</p>  <p>Ilse &amp; Wesley</p>]]></content:encoded>
    </item>
  </channel>
</rss>