<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Buttonfactory</title>
	<atom:link href="https://www.thebuttonfactory.nl/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.thebuttonfactory.nl</link>
	<description>Tips, Tricks and Tuturials on IT related subjects</description>
	<lastBuildDate>Mon, 23 Nov 2020 16:11:38 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>

<image>
	<url>https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/11/cropped-Test-Button-2-2.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>The Buttonfactory</title>
	<link>https://www.thebuttonfactory.nl</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">12315182</site>	<item>
		<title>PowerBI -Fix:  The import List.ConformToPageReader matches no exports. Did you miss a module reference?</title>
		<link>https://www.thebuttonfactory.nl/powerbi-fix-the-import-list-conformtopagereader-matches-no-exports-did-you-miss-a-module-reference/</link>
					<comments>https://www.thebuttonfactory.nl/powerbi-fix-the-import-list-conformtopagereader-matches-no-exports-did-you-miss-a-module-reference/#respond</comments>
		
		<dc:creator><![CDATA[Melanie koorevaar]]></dc:creator>
		<pubDate>Mon, 23 Nov 2020 16:11:38 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Big Data]]></category>
		<category><![CDATA[PowerBI]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[gateway]]></category>
		<category><![CDATA[List.ConformToPageReader]]></category>
		<guid isPermaLink="false">http://www.thebuttonfactory.nl/?p=4706</guid>

					<description><![CDATA[Did you wake up this morning finding PowerBI failure messages in your inbox? Then you are probably not the only one. Your Gateway is out of date and left you with errors on your Datasets on PowerbI. Some datasets are not able to refresh due to a module not being found, but testing your connections.]]></description>
										<content:encoded><![CDATA[<p>Did you wake up this morning finding PowerBI failure messages in your inbox?</p>
<p><img data-recalc-dims="1" height="199" width="300" decoding="async" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2020/11/PBI_blg1.png?resize=300%2C199&#038;ssl=1" alt="" /></p>
<p>Then you are probably not the only one. Your Gateway is out of date and left you with errors on your Datasets on PowerbI.</p>
<p><img data-recalc-dims="1" height="99" width="300" decoding="async" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2020/11/PBI_blg2.png?resize=300%2C99&#038;ssl=1" alt="" /><br />
Some datasets are not able to refresh due to a module not being found, but testing your connections all seems to be working fine ...or not? It does not cleary indicate something is wrong with your gateway, it just gives you a friendly suggestion to update, but all connections are A OK!<br />
<img data-recalc-dims="1" height="62" width="300" decoding="async" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2020/11/PBI_blg4.png?resize=300%2C62&#038;ssl=1" alt="" /></p>
<p>What you need to do is install the recently released (let me do a wild guess, last Sunday I...?) gateway version number: 3000.66.4 november 2020<br />
<img data-recalc-dims="1" height="34" width="300" decoding="async" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2020/11/PBI_blg3.png?resize=300%2C34&#038;ssl=1" alt="" /></p>
<p>Once you update your (on-premise) gateway server and give it a restart. You will be able to refresh all your reports.<br />
<img data-recalc-dims="1" height="298" width="300" decoding="async" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2020/11/PBI_blg5.png?resize=300%2C298&#038;ssl=1" alt="" /></p>
<p>Thank you Microsoft for keeping us busy today!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.thebuttonfactory.nl/powerbi-fix-the-import-list-conformtopagereader-matches-no-exports-did-you-miss-a-module-reference/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4706</post-id>	</item>
		<item>
		<title>IBM Watson assistant &#8211; Live web chat integration</title>
		<link>https://www.thebuttonfactory.nl/ibm-watson-assistant-web-chat-integration/</link>
					<comments>https://www.thebuttonfactory.nl/ibm-watson-assistant-web-chat-integration/#respond</comments>
		
		<dc:creator><![CDATA[Melanie koorevaar]]></dc:creator>
		<pubDate>Wed, 30 Oct 2019 15:23:38 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[IBM Watson]]></category>
		<guid isPermaLink="false">http://www.thebuttonfactory.nl/?p=4679</guid>

					<description><![CDATA[IBM has launced a new feature as add on to the virtual assistant: Web chat - Live agent. IBM is really putting some work in becoming the best virtual assistant. This functionallity can switch a user from a chatbot conversation directly to a real human agent. This is the second feature, next to the search.]]></description>
										<content:encoded><![CDATA[<p>IBM  has launced a new feature as add on to the virtual assistant: <strong>Web chat - Live agent.</strong> IBM is really putting some work in becoming the best virtual assistant.<br />
This functionallity can switch a user from a chatbot conversation directly to a real human agent.</p>
<p>This is the second feature, next to the search skill (Discovery), that can really boost your chatbot game. Since your chatbot can now be a single point of contact for all your customers!<br />
<img data-recalc-dims="1" height="319" width="640" decoding="async" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2019/10/WA_Webcast3.png?resize=640%2C319&#038;ssl=1" alt="" /><br />
The web agent is an of the shelf integration, just add a script provided by IBM, no developer or programming skills are needed.<br />
<img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2019/10/WA_Webcast5.png?w=640&#038;ssl=1" alt="" /></p>
<p>How do you integrate it on your own website?<br />
You need to look up the Live Engage integration in the catalog on IBM cloud. You will need a plus or premium plan. You will be able to escalate conversations to this platform out of the box using Web Chat.</p>
<p>Just put the script element in the header of the website page you want it to display your assistant:</p>
<pre><code class="language-markdown">&lt;html&gt;
&lt;head&gt;&lt;/head&gt;
&lt;body&gt;
    &lt;title&gt;My Test Page&lt;/title&gt;
    &lt;p&gt;The body of my page.&lt;/p&gt;
    &lt;!-- put copied script elements here --&gt;
    &lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>This is how the UI looks like for an agent. It can see the history of the current chat and respond real time to the customer.<br />
<img data-recalc-dims="1" height="363" width="640" decoding="async" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2019/10/WA_Webcast6.png?resize=640%2C363&#038;ssl=1" alt="" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.thebuttonfactory.nl/ibm-watson-assistant-web-chat-integration/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4679</post-id>	</item>
		<item>
		<title>Golang and that strange asterisk and ampersant</title>
		<link>https://www.thebuttonfactory.nl/golang-and-that-strange-asterisk-and-ampersant/</link>
					<comments>https://www.thebuttonfactory.nl/golang-and-that-strange-asterisk-and-ampersant/#respond</comments>
		
		<dc:creator><![CDATA[Jacqueline]]></dc:creator>
		<pubDate>Sun, 18 Aug 2019 09:29:39 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<guid isPermaLink="false">http://www.thebuttonfactory.nl/?p=4540</guid>

					<description><![CDATA[When learning Golang and coming from other (scripting) languages, that asterisk and ampersant may strike as a bit odd. This is a beginner Golang post! Let's start with a basic Golang program outline and in the main func, let's create a variable named a and assign it the value Three-toed sloth. package main import (.]]></description>
										<content:encoded><![CDATA[<p>When learning Golang and coming from other (scripting) languages, that asterisk and ampersant may strike as a bit odd.</p>
<p>This is a beginner Golang post!</p>
<p>Let's start with a basic Golang program outline and in the main func, let's create a variable named <strong>a</strong>  and assign it the value <strong>Three-toed sloth</strong>.</p>
<pre><code class="language-go">package main
import (
    &quot;fmt&quot;
)
func main() {
  a := &quot;Three-toed sloth&quot;
  fmt.Println(a)
}</code></pre>
<p>Notice the <strong>:</strong> before the <strong>=</strong> and that no type was specified.  The Go compiler is able to derive the type based on the literal value of the variable. So it knows it's a string. </p>
<p>I could also have declared the variable like this:</p>
<pre><code class="language-sh">var a string = &#039;Three-toed sloth</code></pre>
<p>Ok, so the program will return:</p>
<pre><code class="language-sh">Three-toed sloth</code></pre>
<p>So you see that <strong>a</strong> is assigned a value of <strong>Three-toed sloth</strong>. It has stored that value in memory. And we can get the memory address by adding the <strong>&amp;</strong> (ampersant). </p>
<p>Like this:</p>
<pre><code class="language-go">package main
import (
    &quot;fmt&quot;
)
func main() {
  a := &quot;Three-toed sloth&quot;
  fmt.Println(a)
  fmt.Println(&amp;a)
}</code></pre>
<p>This will return:</p>
<pre><code class="language-sh">Three-toed sloth
0xc0000861c0</code></pre>
<p>We can get the types like so:</p>
<pre><code class="language-go">fmt.Printf(&quot;%T\n&quot;,a)
fmt.Printf(&quot;%T\n&quot;,&amp;a)</code></pre>
<p>Adding this to our func will return:</p>
<pre><code class="language-sh"> string
*string</code></pre>
<p>We can also get the value of what is stored on that memory address like so (with the asterisk!):</p>
<pre><code class="language-go">  b := &amp;a
  fmt.Println(*b)</code></pre>
<p>This will return:</p>
<pre><code class="language-sh">Three-toed sloth</code></pre>
<p>And finally we can do:</p>
<pre><code class="language-go">    fmt.Println(*&amp;b)</code></pre>
<p>Now what would that return?</p>
<p>Exactly:</p>
<pre><code class="language-sh">0xc0000861c0</code></pre>
<p>Anyways, here is the complete code of this very useful exercise:</p>
<pre><code class="language-go">package main
import (
    &quot;fmt&quot;
)

func main() {
    a := &quot;Three-toed sloth&quot;
    fmt.Println(a)
    fmt.Println(&amp;a)
    fmt.Printf(&quot;%T\n&quot;,a)
    fmt.Printf(&quot;%T\n&quot;,&amp;a)
    b := &amp;a
    fmt.Println(*b)
    fmt.Println(*&amp;b)
}
</code></pre>
<p>So the gist of this post comes down to:</p>
<ol>
<li>The &amp; will give you the memory address</li>
<li>The asterisk (*) will give you the value stored at an address, aka the pointer to the memory location where the value of the variable is stored.</li>
</ol>
<hr>
<p>Now consider this piece of code without any pointers:</p>
<pre><code class="language-go">package main
import (
    &quot;fmt&quot;
)

func main() {
    x := 100
    blah(x)
    fmt.Println(x)
}

func blah(y int) {
    fmt.Println(y)
    y = 12
    fmt.Println(y)
}</code></pre>
<p>This will return</p>
<pre><code class="language-sh">100 # from blah
12 # from blah
100</code></pre>
<p>But when we change the signature of 'blah' so that it will take in a memory address instead of an actual int</p>
<pre><code class="language-go">package main
import (
    &quot;fmt&quot;
)

func main() {
    x := 100
    blah(&amp;x)
    fmt.Println(&quot;From main: &quot;, x)
}

func blah(y *int) {
    fmt.Println(&quot;1.From foo:&quot;, y)
    *y = 12
    fmt.Println(&quot;2.From foo:&quot;, y)
}</code></pre>
<p>This will return</p>
<pre><code class="language-sh">1.From foo: 0xc00001c0c8
2.From foo: 0xc00001c0c8
From main:  12</code></pre>
<p>That value will be never be the value of 100 because the blah function assigns the <strong>memory address</strong> the value of 12.</p>
<p>Finally a tip for a great Golang mentor:  <a href="https://twitter.com/Todd_McLeod">https://twitter.com/Todd_McLeod</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.thebuttonfactory.nl/golang-and-that-strange-asterisk-and-ampersant/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4540</post-id>	</item>
		<item>
		<title>Protected: Simple JSON codes mockup voor Watson Assistant</title>
		<link>https://www.thebuttonfactory.nl/simple-json-codes-mockup-for-watson-assistant/</link>
					<comments>https://www.thebuttonfactory.nl/simple-json-codes-mockup-for-watson-assistant/#respond</comments>
		
		<dc:creator><![CDATA[Melanie koorevaar]]></dc:creator>
		<pubDate>Fri, 05 Jul 2019 20:16:41 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[IBM Watson]]></category>
		<guid isPermaLink="false">http://www.thebuttonfactory.nl/?p=4519</guid>

					<description><![CDATA[There is no excerpt because this is a protected post.]]></description>
										<content:encoded><![CDATA[<form action="https://www.thebuttonfactory.nl/wp-login.php?action=postpass" class="post-password-form" method="post"><input type="hidden" name="redirect_to" value="https://www.thebuttonfactory.nl/simple-json-codes-mockup-for-watson-assistant/" /></p>
<p>This content is password protected. To view it please enter your password below:</p>
<p><label for="pwbox-4519">Password: <input name="post_password" id="pwbox-4519" type="password" spellcheck="false" required size="20" /></label> <input type="submit" name="Submit" value="Enter" /></p>
</form>
]]></content:encoded>
					
					<wfw:commentRss>https://www.thebuttonfactory.nl/simple-json-codes-mockup-for-watson-assistant/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4519</post-id>	</item>
		<item>
		<title>IBM Cloud platform Watson API &#8211; CLI Tools Error: NO CF API endpoint set</title>
		<link>https://www.thebuttonfactory.nl/ibm-cloud-platform-watson-api-cli-tools-error-no-cf-api-endpoint-set/</link>
					<comments>https://www.thebuttonfactory.nl/ibm-cloud-platform-watson-api-cli-tools-error-no-cf-api-endpoint-set/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 05 Jul 2019 17:16:36 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[IBM Watson]]></category>
		<guid isPermaLink="false">http://www.thebuttonfactory.nl/?p=4501</guid>

					<description><![CDATA[IBM Watson is a really good AI platform. But since development of the Watson Platform goes so quickly, they keep pushing new updates and workspaces. If you are a developer, this can be quite time consuming, since you need to keep rebuilding the former workspace now called Skills and APi configurments. This last Update to.]]></description>
										<content:encoded><![CDATA[<p>IBM Watson is a really good AI platform.<br />
But since development of the Watson Platform goes so quickly, they keep pushing new updates and workspaces.<br />
If you are a developer, this can be quite time consuming, since you need to keep rebuilding the former workspace now called Skills and APi configurments.<br />
This last Update to V2 and the deprecation of the bluemix environment gave me quite a few headaches.</p>
<p>To save you from the hassle, here is an example how you can rebuild a Watson assistant and Watson discovery API with the cloud CLI Tool.</p>
<pre>c:\Program Files\IBM\Cloud\bin&gt;ibmcloud cf push
<span style="color: #ff0000;">FAILED</span>
<span style="color: #ff0000;">No CF API endpoint set.</span>
Use 'ibmcloud target --cf-api ENDPOINT [-o ORG] [-s SPACE]' to target Cloud Foundry, or 'ibmcloud target --cf' to target it interactively.</pre>
<p>it's because you are still pointing to the old bluemix link:<br />
c:\Program Files\IBM\Cloud\bin&gt;ibmcloud api https://api.eu-gb.bluemix.net<br />
Setting api endpoint...<br />
API endpoint https://api.eu-gb.bluemix.net is going to be deprecated. Use https://cloud.ibm.com.</p>
<p>here is what you do:<br />
c:\Program Files\IBM\Cloud\bin&gt;ibmcloud api https://cloud.ibm.com<br />
c:\Program Files\IBM\Cloud\bin&gt;\ibmcloud login<br />
now your ENDPOINT is set to the cloud.ibm.com<br />
Now set the right environment for discovery:<br />
c:\Program Files\IBM\Cloud\bin&gt;ibmcloud target --cf-api api.eu-gb.cf.cloud.ibm.com</p>
<p>Now you can (re-)do al your CF functions</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.thebuttonfactory.nl/ibm-cloud-platform-watson-api-cli-tools-error-no-cf-api-endpoint-set/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4501</post-id>	</item>
		<item>
		<title>Deploy linked Azure Resource Manager templates with a SAS token</title>
		<link>https://www.thebuttonfactory.nl/a-complex-arm-template/</link>
					<comments>https://www.thebuttonfactory.nl/a-complex-arm-template/#respond</comments>
		
		<dc:creator><![CDATA[Jacqueline]]></dc:creator>
		<pubDate>Mon, 02 Jul 2018 05:23:27 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<guid isPermaLink="false">http://www.thebuttonfactory.nl/?p=4046</guid>

					<description><![CDATA[ARM templates tend to get huge when your deployments get more complex. With linking you can call an ARM template from another template and create a hierarchy of your templates, making it easier to adjust and reuse the templates. You can pass parameters from the master template to the linked template. Linked templates are not.]]></description>
										<content:encoded><![CDATA[<p>ARM templates tend to get huge when your deployments get more complex.<br />
With linking you can call an ARM template from another template and create a hierarchy of your templates, making it easier to adjust and reuse the templates. You can pass parameters from the master template to the linked template.</p>
<p>Linked templates are not very intuitive to use however. In this blog post I will walk you through an example where I deploy a storage account with a linked template. I will also show you how to use the template in a CD/CI pipeline in Visual Studio Team Services.</p>
<p><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/linked.png?ssl=1"><img data-recalc-dims="1" fetchpriority="high" decoding="async" data-attachment-id="4250" data-permalink="https://www.thebuttonfactory.nl/a-complex-arm-template/linked/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/linked.png?fit=401%2C380&amp;ssl=1" data-orig-size="401,380" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="linked arm templates" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/linked.png?fit=300%2C284&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/linked.png?fit=401%2C380&amp;ssl=1" class="alignnone size-medium wp-image-4250" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/linked.png?resize=300%2C284&#038;ssl=1" alt="azure-arm" width="300" height="284" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/linked.png?resize=300%2C284&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/linked.png?w=401&amp;ssl=1 401w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>A complete example is on my <a href="https://github.com/jacqinthebox/arm-templates/tree/master/domain-2members">Github repository</a>.</p>
<p>&nbsp;</p>
<h2>The linked storage template</h2>
<p>Let's start with a regular template for storage. <em>However, without the variables!</em> A linked template only has parameters.<br />
These parameters will be populated by the master template. These parameters can be hardcoded, populated by variables or declared in a separate parameters template.</p>
<pre><code class="language-json">{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "storageAccountType": {
            "type": "string",
            "defaultValue": "Standard_LRS",
            "allowedValues": [
                "Standard_LRS",
                "Standard_GRS",
                "Standard_ZRS",
                "Premium_LRS"
            ]
        },
        "storageAccountTier": {
            "type": "string",
            "defaultValue": "Standard",
            "allowedValues": [
                "Standard",
                "Premium"
            ]
        }
    },
    "resources": [
        {
            "apiVersion": "2017-10-01",
            "name": "[concat('disk', uniqueString(resourceGroup().id))]",
            "type": "Microsoft.Storage/storageAccounts",
            "sku": {
                "name": "[parameters('storageAccountType')]",
                "tier": "[parameters('storageAccountTier')]"
            },
            "kind": "Storage",
            "location": "[resourceGroup().location]",
            "tags": {}
        }
    ]
}
</code></pre>
<p>Let's call this template storage.json.<br />
Now we are going to call this template from a master template that I will name template.json.</p>
<p>&nbsp;</p>
<h2>The master template</h2>
<p>Let's create a folder structure like this:</p>
<p><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/foldertree.png?ssl=1"><img data-recalc-dims="1" decoding="async" data-attachment-id="4260" data-permalink="https://www.thebuttonfactory.nl/a-complex-arm-template/foldertree/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/foldertree.png?fit=178%2C123&amp;ssl=1" data-orig-size="178,123" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="foldertree" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/foldertree.png?fit=178%2C123&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/foldertree.png?fit=178%2C123&amp;ssl=1" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/foldertree.png?resize=178%2C123&#038;ssl=1" alt="" width="178" height="123" class="alignnone size-full wp-image-4260" /></a></p>
<p>In template.json I need to make a reference to storage.json. I could put my ARM Templates on Github or GitLab and reference the public URI of storage.json. But what if you are in an enterprise and you need to keep your templates private? What if you want to run the templates from a private storage account?<br />
Then you will want to protect them with a SAS Token. How that works will be described in the last part of this article.</p>
<p>This is how the master.json file will look like:</p>
<pre><code class="language-json"> {
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "artifactsLocationSasToken": {
            "type": "string"
        },
        "artifactsLocationStorageAccount": {
            "type": "string"
        }
    },
    "variables": {
        "storageAccountType": "Standard_LRS",
        "storageAccountTier": "Standard",
        "nestedTemplates": {
            "storageTemplateUrl": "storageTemplateUrl": "[uri(deployment().properties.templateLink.uri, 'nestedtemplates/storage.json' )]"
        }
    },
    "resources": [
        {
            "name": "storageDeployment",
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2017-05-10",
            "dependsOn": [],
            "properties": {
                "mode": "Incremental",
                "templateLink": {
                    "uri": "[concat(variables('nestedTemplates').storageTemplateUrl, parameters('artifactsLocationSasToken'))]",
                    "contentVersion": "1.0.0.0"
                },
                "parameters": {
                    "storageAccountType": {
                        "value": "[variables('storageAccountType')]"
                    },
                    "storageAccountTier": {
                        "value": "[variables('storageAccountTier')]"
                    }
                }
            }
        },
    ],
    "outputs": {
    }
}
</code></pre>
<p>Some explanation: according to the <a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-linked-templates">Microsoft docs</a> you can use deployment() to get the base URL for the current template, and use that to get the URL for other templates in the same location. The templateLink property is only returned when linking to a remote template with a URL. If you're using a local template, that property isn't available.</p>
<p>So we need to concatenate <code>uri(deployment().properties.templateLink.uri</code> plus <code>nestedtemplates/storage.json</code>. That looks like this:</p>
<pre><code class="language-json">"nestedTemplates": {
"storageTemplateUrl": "storageTemplateUrl": "[uri(deployment().properties.templateLink.uri, 'nestedtemplates/storage.json' )]"
}
</code></pre>
<p>And append the SAS Token" <code>parameters('artifactsLocationSasToken')</code> in our resource section:</p>
<pre><code class="language-json">"nestedTemplates": {
"templateLink": {
"uri": "[concat(variables('nestedTemplates').storageTemplateUrl, parameters('artifactsLocationSasToken'))]",
"contentVersion": "1.0.0.0"
},
</code></pre>
<p>&nbsp;</p>
<h2>Pass the parameters</h2>
<p>As already mentioned, you can pass parameters:</p>
<ul>
<li>Hardcoded the nested template (not recommended)</li>
<li>Hardcoded in the master template in parameters or variables (semi recommended)</li>
<li>In a separate parameters file (recommended)</li>
</ul>
<p>I would recommend to use the parameters file to set values that are unique to your deployment. Then you can use the <code>concat</code> function to create other resources names in variables.</p>
<p>&nbsp;</p>
<h2>Nested templates and dependencies</h2>
<p>You can reference to the deployment like this:</p>
<pre><code class="language-json">"nestedTemplates":
"dependsOn": [
"Microsoft.Resources/deployments/storageDeployment"
]
</code></pre>
<p>&nbsp;</p>
<h2>Deployment</h2>
<p>Finally, the deployment. If you are in an enterprise and you need to keep your templates private you will want to run the templates from a private storage account. You can achieve this with a SAS Token.</p>
<p>The steps are as follows:</p>
<ul>
<li>Create separate resource group with a storage account</li>
<li>Create a container in blob storage</li>
<li>Upload all templates and scripts to this container</li>
<li>Create a SAS Token for this container with a valid time of 2 hrs</li>
<li>Inject the SAS Token to your parameters.json file</li>
<li>Append the SAS Token to the nested template URI</li>
</ul>
<p>Basically, this is what the PowerShell script does when you create an ARM Template in Visual Studio! However, I think it's good to know what it actually does under the hood.</p>
<p>I would suggest you to create a service principal. <a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal">Here</a> is how.<br />
We need the clientId, Secret, TenantId and SubscriptionId from the principal.</p>
<p>You can find the complete script <a href="https://github.com/jacqinthebox/arm-templates/blob/master/domain-2members/New-AzureDeploy.ps1">here</a>.</p>
<p>Then run the script:</p>
<pre><code class="language-powershell">$vars = @{
ClientId = ""
Secret = ""
TenantId = ""
SubscriptionId = ""
ResourceGroupName = "azure-vm-poc"
ArtifactsResourceGroup = 'my-artificats'
ArtifactsLocationStorageAccount = 'mybeautifulartifacts'
}

# modify path if needed
.\New-AzureDeploy.ps1 @vars -Verbose
</code>
</pre>
<p>&nbsp;</p>
<h2>Add the script to a build or release pipeline with VSTS</h2>
<p>Simply add an Azure Powershell script task and call the script. Define the variables in VSTS.</p>
<p><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/vsts.png?ssl=1"><img data-recalc-dims="1" decoding="async" data-attachment-id="4255" data-permalink="https://www.thebuttonfactory.nl/a-complex-arm-template/vsts/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/vsts.png?fit=1694%2C797&amp;ssl=1" data-orig-size="1694,797" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="vsts" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/vsts.png?fit=300%2C141&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/vsts.png?fit=640%2C301&amp;ssl=1" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/vsts.png?resize=300%2C141&#038;ssl=1" alt="" width="300" height="141" class="alignnone size-medium wp-image-4255" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/vsts.png?resize=300%2C141&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/vsts.png?resize=768%2C361&amp;ssl=1 768w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/vsts.png?resize=1024%2C482&amp;ssl=1 1024w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/vsts.png?resize=600%2C282&amp;ssl=1 600w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/vsts.png?w=1694&amp;ssl=1 1694w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/07/vsts.png?w=1280&amp;ssl=1 1280w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<h2>Troubleshoot</h2>
<p>Sometimes the error message in the PowerShell console are a bit cryptic. With this command you will get more verbose error messages:</p>
<pre><code class="language-powershell">(Get-AzureRmLog -Status "Failed" | Select-Object -First 1) | Format-List
</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.thebuttonfactory.nl/a-complex-arm-template/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4046</post-id>	</item>
		<item>
		<title>Artificial Intelligence &#8211; Chat Bot Back to Basic part 3</title>
		<link>https://www.thebuttonfactory.nl/artificial-intelligence-chat-bot-back-to-basic-part-3/</link>
					<comments>https://www.thebuttonfactory.nl/artificial-intelligence-chat-bot-back-to-basic-part-3/#respond</comments>
		
		<dc:creator><![CDATA[Melanie koorevaar]]></dc:creator>
		<pubDate>Thu, 24 May 2018 22:32:22 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[cortana]]></category>
		<category><![CDATA[LUIS]]></category>
		<category><![CDATA[machine learning]]></category>
		<guid isPermaLink="false">http://www.thebuttonfactory.nl/?p=4123</guid>

					<description><![CDATA[We experimented a little with Machine learning, but now we get to the part where it really get's interesting. Creating a chatbot. In this example, I use a simple tool called Q&#38;A maker and the Azure QnA maker resource. When you connect both services, you can integrate the bot on social media like Skype, messenger.]]></description>
										<content:encoded><![CDATA[<p><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/chatbot.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4124" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-chat-bot-back-to-basic-part-3/chatbot/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/chatbot.jpg?fit=357%2C355&amp;ssl=1" data-orig-size="357,355" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="chatbot" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/chatbot.jpg?fit=300%2C298&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/chatbot.jpg?fit=357%2C355&amp;ssl=1" class="size-full wp-image-4124 alignleft" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/chatbot.jpg?resize=357%2C355&#038;ssl=1" alt="" width="357" height="355" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/chatbot.jpg?w=357&amp;ssl=1 357w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/chatbot.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/chatbot.jpg?resize=300%2C298&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/chatbot.jpg?resize=90%2C90&amp;ssl=1 90w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/chatbot.jpg?resize=100%2C100&amp;ssl=1 100w" sizes="auto, (max-width: 357px) 100vw, 357px" /></a>We experimented a little with Machine learning, but now we get to the part where it really get's interesting.<strong> Creating a chatbot.</strong></p>
<p>In this example, I use a simple tool called Q&amp;A maker and the Azure QnA maker resource. When you connect both services, you can integrate the bot on social media like Skype, messenger or as a Cortana service, or create a (mobile) app. Sign up at <a href="https://qnamaker.ai" target="_blank" rel="noopener">https://qnamaker.ai.</a> and create a new knowledgebase.</p>
<p>I added some of my <a href="https://www.thebuttonfactory.nl/artificial-intelligence/artificial-intelligence-prepping-data-back-to-basic-part-1/">car data</a> to the knowledge base and named it 'license check'. Based on a license plate we send to the bot, it will respond with the matching car brand. we need to train the bot and publish it. as you can see in this example: Save and train your Q&amp;A with the data, test the data and when you like the results you Publish it. <a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/qena.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4141" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-chat-bot-back-to-basic-part-3/qena/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/qena.jpg?fit=1329%2C263&amp;ssl=1" data-orig-size="1329,263" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="qena" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/qena.jpg?fit=300%2C59&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/qena.jpg?fit=640%2C127&amp;ssl=1" class="alignnone size-large wp-image-4141" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/qena.jpg?resize=640%2C127&#038;ssl=1" alt="" width="640" height="127" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/qena.jpg?resize=1024%2C203&amp;ssl=1 1024w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/qena.jpg?resize=300%2C59&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/qena.jpg?resize=768%2C152&amp;ssl=1 768w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/qena.jpg?resize=600%2C119&amp;ssl=1 600w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/qena.jpg?w=1329&amp;ssl=1 1329w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>When you publish the Q&amp;A it will open a new screen with the URL details, you will need the details to associate your Q&amp;A data with the Azure bot:</p>
<p>Go to Azure Bot service in Azure portal and go to the Application Settings page, in the App Settings section, set the QnAKnowledgebaseId, QnAAuthKey, and QnAEndpointHostName values from the published page and save the keys to Azure.</p>
<p>Now try out the new bot in the Azure webchat.</p>
<p><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/testwebchat.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4145" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-chat-bot-back-to-basic-part-3/testwebchat/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/testwebchat.jpg?fit=859%2C509&amp;ssl=1" data-orig-size="859,509" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="testwebchat" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/testwebchat.jpg?fit=300%2C178&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/testwebchat.jpg?fit=640%2C379&amp;ssl=1" class="alignnone wp-image-4145 " src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/testwebchat.jpg?resize=554%2C328&#038;ssl=1" alt="" width="554" height="328" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/testwebchat.jpg?w=859&amp;ssl=1 859w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/testwebchat.jpg?resize=300%2C178&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/testwebchat.jpg?resize=768%2C455&amp;ssl=1 768w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/testwebchat.jpg?resize=600%2C356&amp;ssl=1 600w" sizes="auto, (max-width: 554px) 100vw, 554px" /></a></p>
<p>This is still very basic information, but we can 'learn' our bot new skills, for instance to be more social. Since we are humans, we always greet someone when we meet. So, what if someone says hello? the bot will not recognize this as a license plate and will respond with an error, but we can learn the bot, that whenever someone says Hi, Hello or Hoi, The bot will respond back with a friendly Hello! as you can see in this clip. It even understands bad sentences and grammar:</p>
<p><iframe loading="lazy" title="Autobot Chat English Version" width="640" height="480" src="https://www.youtube.com/embed/XvrDENGhrw0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>This is just the very basics of a chatbot. You can also add LUIS (Language understanding intelligence service) to your bot. LUIS service is a language processor. You need to create a LUIS service in Azure portal: add new resource and browse for LUIS. Then sign up at <a href="https://www.luis.ai" target="_blank" rel="noopener">https://www.luis.ai</a> and create an intent to associate LUIS with your Q&amp;A content. This makes your bot interesting to publish it under Cortana, You can just tell your computer what license plate you are looking for.</p>
<p><strong>Read my previous post on creating the <a href="https://www.thebuttonfactory.nl/artificial-intelligence/artificial-intelligence-prepping-data-back-to-basic-part-1/">car data</a> for Machine learning.</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.thebuttonfactory.nl/artificial-intelligence-chat-bot-back-to-basic-part-3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4123</post-id>	</item>
		<item>
		<title>Artificial Intelligence prepping data &#8211; Back to basic part 1</title>
		<link>https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/</link>
					<comments>https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/#respond</comments>
		
		<dc:creator><![CDATA[Melanie koorevaar]]></dc:creator>
		<pubDate>Sat, 19 May 2018 18:26:52 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[artificial inteligence]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[dataprepping]]></category>
		<category><![CDATA[dataset]]></category>
		<category><![CDATA[machine learning]]></category>
		<category><![CDATA[Machine learning studio]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[open data]]></category>
		<category><![CDATA[sql server 2017]]></category>
		<category><![CDATA[ssis]]></category>
		<guid isPermaLink="false">http://www.thebuttonfactory.nl/?p=4078</guid>

					<description><![CDATA[What street legal cars taught me about Machine learning? It's all about the right data being available and the RDW data can't be trusted! I impulsively signed up for an Artificial Intelligence certification track 2 months ago, So I've been experimenting with Artificial Intelligence for a while now and in the beginning of the course.]]></description>
										<content:encoded><![CDATA[<p>What street legal cars taught me about Machine learning? It's all about the right data being available and the RDW data can't be trusted!</p>
<p>I impulsively signed up for an Artificial Intelligence certification track 2 months ago, So I've been experimenting with Artificial Intelligence for a while now and in the beginning of the course it was one though cookie! Those formula's to interpreted the data predictability really freaked me out!</p>
<p><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Dab32ELWsAAWN4m.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4079" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/dab32elwsaawn4m/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Dab32ELWsAAWN4m.jpg?fit=1152%2C1211&amp;ssl=1" data-orig-size="1152,1211" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Dab32ELWsAAWN4m" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Dab32ELWsAAWN4m.jpg?fit=285%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Dab32ELWsAAWN4m.jpg?fit=640%2C673&amp;ssl=1" class="alignnone wp-image-4079 size-medium" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Dab32ELWsAAWN4m.jpg?resize=285%2C300&#038;ssl=1" alt="" width="285" height="300" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Dab32ELWsAAWN4m.jpg?resize=285%2C300&amp;ssl=1 285w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Dab32ELWsAAWN4m.jpg?resize=768%2C807&amp;ssl=1 768w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Dab32ELWsAAWN4m.jpg?resize=974%2C1024&amp;ssl=1 974w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Dab32ELWsAAWN4m.jpg?resize=600%2C631&amp;ssl=1 600w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Dab32ELWsAAWN4m.jpg?w=1152&amp;ssl=1 1152w" sizes="auto, (max-width: 285px) 100vw, 285px" /></a></p>
<p>But once I got past the formula's and I saw the resemblance of the workspace with Microsoft products like SSIS and BI I see endless possibilities. This takes the data to a whole new level.</p>
<p><strong>Preparing the data:</strong></p>
<p>I did a test on all cars that are currently on the road in the Netherlands and combined it with performance data. I wanted to find the fastest street legal car. I guess I just wanted to find out what kind of cars I should fancy these days according to the performance stats.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4080" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/2016-chevrolet-camaro-2ss-coupe-angular-front/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/2016-chevrolet-camaro-2ss-coupe-angular-front.png?fit=1360%2C903&amp;ssl=1" data-orig-size="1360,903" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2016-chevrolet-camaro-2ss-coupe-angular-front" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/2016-chevrolet-camaro-2ss-coupe-angular-front.png?fit=300%2C199&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/2016-chevrolet-camaro-2ss-coupe-angular-front.png?fit=640%2C425&amp;ssl=1" class="wp-image-4080 alignleft" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/2016-chevrolet-camaro-2ss-coupe-angular-front.png?resize=241%2C160&#038;ssl=1" alt="" width="241" height="160" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/2016-chevrolet-camaro-2ss-coupe-angular-front.png?resize=300%2C199&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/2016-chevrolet-camaro-2ss-coupe-angular-front.png?resize=768%2C510&amp;ssl=1 768w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/2016-chevrolet-camaro-2ss-coupe-angular-front.png?resize=1024%2C680&amp;ssl=1 1024w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/2016-chevrolet-camaro-2ss-coupe-angular-front.png?resize=450%2C300&amp;ssl=1 450w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/2016-chevrolet-camaro-2ss-coupe-angular-front.png?resize=600%2C398&amp;ssl=1 600w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/2016-chevrolet-camaro-2ss-coupe-angular-front.png?w=1360&amp;ssl=1 1360w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/2016-chevrolet-camaro-2ss-coupe-angular-front.png?w=1280&amp;ssl=1 1280w" sizes="auto, (max-width: 241px) 100vw, 241px" />I used an open data set from the dutch <a href="https://www.rdwcheck.nl/rdw-check/" target="_blank" rel="noopener">RWD</a> (Driver and Vehicle Standards Agency). It contained 14m rows and it's 7GB in size. So I had to prepare the data in order to keep the experiment basic and performance high. I imported it into my SQL server and I filtered out the the stationwagons, campers, scooters and trailers, So I was left with a 900000  rows data set.</p>
<p>I use a SQL Server 2017 and the Microsoft Azure machine learning studio to create a new experiment.</p>
<p>In order to make a prediction I needed to combine the brand data with the engine displacement data, because horsepower data was not available, to see which models are high performance based on the engine capacity. So sadly the smaller engines which are supercharged are not correctly represented in the prediction.</p>
<p>The calculation based on above rules, took a local SQL server on an i5 laptop about 15 minutes. I needed more data preparation.</p>
<p>Based on engine displacement, a top 3 came up. But I didn't like the results at all. Sure, the engine displacement was high, but the cars are heavy and their performance isn't the best. Super charged Turbo's and gearing make all the difference, but aren't properly represented in this data result.<a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/cilinderinhoud-1.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4087" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/cilinderinhoud-2/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/cilinderinhoud-1.jpg?fit=633%2C190&amp;ssl=1" data-orig-size="633,190" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="cilinderinhoud" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/cilinderinhoud-1.jpg?fit=300%2C90&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/cilinderinhoud-1.jpg?fit=633%2C190&amp;ssl=1" class="alignnone size-full wp-image-4087" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/cilinderinhoud-1.jpg?resize=633%2C190&#038;ssl=1" alt="" width="633" height="190" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/cilinderinhoud-1.jpg?w=633&amp;ssl=1 633w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/cilinderinhoud-1.jpg?resize=300%2C90&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/cilinderinhoud-1.jpg?resize=600%2C180&amp;ssl=1 600w" sizes="auto, (max-width: 633px) 100vw, 633px" /></a></p>
<p>I had to filter out a lot of data, next up I added the weight of the car, but it wasn't trust worthy either. I found a data set which contained the Kw of the cars and top speed and joined the data with my current results and added a calculation in SQL on the Kw row * 1,362 to calculate the Hp of the car. The Hp outcome looks pretty accurate.  After 4 hours of combining data and filtering the queries I gave up. Based on this data there is no way you can truly point out the fastest cars. I had to change my plans. Too many uncertain variables to make a decent prediction and not even close to the start of an IA project <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<figure id="attachment_4092" aria-describedby="caption-attachment-4092" style="width: 466px" class="wp-caption alignleft"><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/weight-1.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4092" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/weight-2/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/weight-1.jpg?fit=836%2C288&amp;ssl=1" data-orig-size="836,288" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="weight" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/weight-1.jpg?fit=300%2C103&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/weight-1.jpg?fit=640%2C220&amp;ssl=1" class="wp-image-4092" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/weight-1.jpg?resize=466%2C160&#038;ssl=1" alt="" width="466" height="160" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/weight-1.jpg?w=836&amp;ssl=1 836w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/weight-1.jpg?resize=300%2C103&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/weight-1.jpg?resize=768%2C265&amp;ssl=1 768w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/weight-1.jpg?resize=600%2C207&amp;ssl=1 600w" sizes="auto, (max-width: 466px) 100vw, 466px" /></a><figcaption id="caption-attachment-4092" class="wp-caption-text">Lot's of NULL data</figcaption></figure>
<figure id="attachment_4102" aria-describedby="caption-attachment-4102" style="width: 846px" class="wp-caption alignnone"><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/basedOnPK.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4102" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/basedonpk/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/basedOnPK.jpg?fit=846%2C452&amp;ssl=1" data-orig-size="846,452" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="basedOnPK" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/basedOnPK.jpg?fit=300%2C160&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/basedOnPK.jpg?fit=640%2C342&amp;ssl=1" class="wp-image-4102 size-full" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/basedOnPK.jpg?resize=640%2C342&#038;ssl=1" alt="" width="640" height="342" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/basedOnPK.jpg?w=846&amp;ssl=1 846w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/basedOnPK.jpg?resize=300%2C160&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/basedOnPK.jpg?resize=768%2C410&amp;ssl=1 768w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/basedOnPK.jpg?resize=600%2C321&amp;ssl=1 600w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a><figcaption id="caption-attachment-4102" class="wp-caption-text">This No. 1 car can't be trusted!</figcaption></figure>
<p>After more data crunching, The results are still not really worth to display. So here is a TOP 21 of "fastest" cars...based on...well the obvious HP and Weight sorting:</p>
<figure id="attachment_4111" aria-describedby="caption-attachment-4111" style="width: 982px" class="wp-caption alignnone"><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/top20_fastestCars.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4111" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/top20_fastestcars/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/top20_fastestCars.jpg?fit=982%2C494&amp;ssl=1" data-orig-size="982,494" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="top20_fastestCars" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/top20_fastestCars.jpg?fit=300%2C151&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/top20_fastestCars.jpg?fit=640%2C322&amp;ssl=1" class="wp-image-4111 size-full" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/top20_fastestCars.jpg?resize=640%2C322&#038;ssl=1" alt="" width="640" height="322" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/top20_fastestCars.jpg?w=982&amp;ssl=1 982w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/top20_fastestCars.jpg?resize=300%2C151&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/top20_fastestCars.jpg?resize=768%2C386&amp;ssl=1 768w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/top20_fastestCars.jpg?resize=600%2C302&amp;ssl=1 600w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a><figcaption id="caption-attachment-4111" class="wp-caption-text">btw, did you know there is only one Koenigsegg on the dutch roads.</figcaption></figure>
<p>Ok, I got a little bit carried away with data prepping.</p>
<p>Now let's import it into an IA experiment: First you need to create a resource in the Azure Portal for your workspace. I won't get into details, we did this before!</p>
<p>Verify that you created the following new resources: A Machine Learning Workspace, A Machine Learning Plan and A Storage Account.</p>
<p><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/azure_reesource_1.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4113" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/azure_reesource_1/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/azure_reesource_1.jpg?fit=1135%2C301&amp;ssl=1" data-orig-size="1135,301" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="azure_reesource_1" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/azure_reesource_1.jpg?fit=300%2C80&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/azure_reesource_1.jpg?fit=640%2C170&amp;ssl=1" class="alignnone size-large wp-image-4113" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/azure_reesource_1.jpg?resize=640%2C170&#038;ssl=1" alt="" width="640" height="170" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/azure_reesource_1.jpg?resize=1024%2C272&amp;ssl=1 1024w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/azure_reesource_1.jpg?resize=300%2C80&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/azure_reesource_1.jpg?resize=768%2C204&amp;ssl=1 768w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/azure_reesource_1.jpg?resize=600%2C159&amp;ssl=1 600w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/azure_reesource_1.jpg?w=1135&amp;ssl=1 1135w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>Browse to the Machine learning workspace you created and launch Machine Learning Studio. This opens a new browser page.</p>
<p>Go to experiments and down in the left  corner click NEW.</p>
<p><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_1.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4115" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/azure_ia_1/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_1.jpg?fit=1019%2C588&amp;ssl=1" data-orig-size="1019,588" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Azure_IA_1" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_1.jpg?fit=300%2C173&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_1.jpg?fit=640%2C369&amp;ssl=1" class="alignnone size-full wp-image-4115" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_1.jpg?resize=640%2C369&#038;ssl=1" alt="" width="640" height="369" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_1.jpg?w=1019&amp;ssl=1 1019w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_1.jpg?resize=300%2C173&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_1.jpg?resize=768%2C443&amp;ssl=1 768w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_1.jpg?resize=600%2C346&amp;ssl=1 600w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>Rename the experiment and add a dataset. Upload a new dataset. Datasets --&gt; NEW--&gt; Select data to upload. <a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_4.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4117" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/azure_ia_4/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_4.jpg?fit=943%2C585&amp;ssl=1" data-orig-size="943,585" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Azure_IA_4" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_4.jpg?fit=300%2C186&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_4.jpg?fit=640%2C397&amp;ssl=1" class="alignnone size-full wp-image-4117" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_4.jpg?resize=640%2C397&#038;ssl=1" alt="" width="640" height="397" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_4.jpg?w=943&amp;ssl=1 943w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_4.jpg?resize=300%2C186&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_4.jpg?resize=768%2C476&amp;ssl=1 768w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_4.jpg?resize=600%2C372&amp;ssl=1 600w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a>Now that you have the dataset ready, you can drag it into your experiment and start running tests and variables on the data.</p>
<p><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_2.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4116" data-permalink="https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/azure_ia_2/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_2.jpg?fit=979%2C588&amp;ssl=1" data-orig-size="979,588" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Azure_IA_2" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_2.jpg?fit=300%2C180&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_2.jpg?fit=640%2C384&amp;ssl=1" class="alignnone size-full wp-image-4116" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_2.jpg?resize=640%2C384&#038;ssl=1" alt="" width="640" height="384" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_2.jpg?w=979&amp;ssl=1 979w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_2.jpg?resize=300%2C180&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_2.jpg?resize=768%2C461&amp;ssl=1 768w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/05/Azure_IA_2.jpg?resize=600%2C360&amp;ssl=1 600w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>In my <a href="https://www.thebuttonfactory.nl/artificial-intelligence/artificial-intelligence-chat-bot-back-to-basic-part-3/">next post</a> we will dive deeper into Artificial Intelligence</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.thebuttonfactory.nl/artificial-intelligence-prepping-data-back-to-basic-part-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4078</post-id>	</item>
		<item>
		<title>PaaS taking over the world! Are dba&#8217;s a dying breed?</title>
		<link>https://www.thebuttonfactory.nl/paas-taking-over-the-world-are-dbas-a-dying-breed/</link>
					<comments>https://www.thebuttonfactory.nl/paas-taking-over-the-world-are-dbas-a-dying-breed/#respond</comments>
		
		<dc:creator><![CDATA[Melanie koorevaar]]></dc:creator>
		<pubDate>Sun, 01 Apr 2018 15:58:53 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[database as a service]]></category>
		<category><![CDATA[dba]]></category>
		<category><![CDATA[iaas]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[paas]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlserver]]></category>
		<guid isPermaLink="false">http://www.thebuttonfactory.nl/?p=3976</guid>

					<description><![CDATA[&#160; It's easter weekend, or as the dutch say 'PaaS weekend'. So, it might be a good idea to talk a bit about PaaS. What is it and what does this mean for you as a Database administrator? Are Dba's a dying breed. Will they just shift over to more complex or broader tasks or are.]]></description>
										<content:encoded><![CDATA[<figure id="attachment_4060" aria-describedby="caption-attachment-4060" style="width: 150px" class="wp-caption alignleft"><a href="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/04/PaaSHaaS-1.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4060" data-permalink="https://www.thebuttonfactory.nl/paas-taking-over-the-world-are-dbas-a-dying-breed/paashaas-2/" data-orig-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/04/PaaSHaaS-1.jpg?fit=1280%2C1024&amp;ssl=1" data-orig-size="1280,1024" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="PaaS vs IaaS" data-image-description="" data-image-caption="&lt;p&gt;PaaS&lt;/p&gt;
" data-medium-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/04/PaaSHaaS-1.jpg?fit=300%2C240&amp;ssl=1" data-large-file="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/04/PaaSHaaS-1.jpg?fit=640%2C512&amp;ssl=1" class="size-thumbnail wp-image-4060" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/04/PaaSHaaS-1.jpg?resize=150%2C150&#038;ssl=1" alt="" width="150" height="150" srcset="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/04/PaaSHaaS-1.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/04/PaaSHaaS-1.jpg?resize=90%2C90&amp;ssl=1 90w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/04/PaaSHaaS-1.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/04/PaaSHaaS-1.jpg?resize=100%2C100&amp;ssl=1 100w, https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/04/PaaSHaaS-1.jpg?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a><figcaption id="caption-attachment-4060" class="wp-caption-text">PaaS vs IaaS</figcaption></figure>
<p>&nbsp;</p>
<p style="text-align: left;"><em>I</em><em>t's easter weekend, or as the dutch say 'PaaS weekend'. </em><em>So, it might be a good idea to talk a bit about PaaS. What is it and what does this mean for you as a Database administrator? Are Dba's a dying breed. Will they just shift over to more complex or broader tasks or are they here to stay. It all depends on the company and the software they are running.</em></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>What is <strong>#Iaas</strong>? in short, it's a VM. Your database is running in a data center. As a Dba you have the same job requirements as when running a database on-premise. Update, backup, patches, tuning, security and account control.</p>
<p>But <strong>#PaaS</strong> is a different story, it runs the database as a service, so there is no need for a dba. At least that's what they tell you. But does PaaS solve all your performance and tuning needs, is that faulty query when moved to PaaS suddely solved? Nope. <a href="https://docs.microsoft.com/en-us/sql/advanced-analytics/tutorials/machine-learning-services-tutorials" target="_blank" rel="noopener"><em>Machine learning</em></a> is doing a great job so far, but it isn't the magical quick fix, yet.</p>
<p>In all honesty most companies don't care about tuning a database, not all applications have complex queries and tasks running on their SQL server, most are fine running an express edition. They don't even bother having a Dba. The database is taken care of by a system engineer, if being looked at, at all.</p>
<p>Where does this put you as a Dba? Don't sob, we still need you! It's a big relief that the market, which is still flooded with old school high maintenance MS SQL driven apps. How nice if these could be taken care of with PaaS. The only good thing coming out of these high maintenance, splintered databases, is the data itself. Do you really want to spend your time updating, patching and granting rights to users and saying no to SA account requests? No, you don't!</p>
<p>But second, in the real world, companies don't evolve as fast as the IT world itself. Most applications, lots outdated or not are not being replaced overnight and not all the vendors are quite ready for PaaS environments with their applications. So you just have to decide on which side you want to be, fast IT or slow IT. There is still a big playground available for both for the coming years.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.thebuttonfactory.nl/paas-taking-over-the-world-are-dbas-a-dying-breed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3976</post-id>	</item>
		<item>
		<title>Polybase configuration on SQL Server 2017 Part II</title>
		<link>https://www.thebuttonfactory.nl/polybase-configuration-on-sql-server-2017-part-ii/</link>
					<comments>https://www.thebuttonfactory.nl/polybase-configuration-on-sql-server-2017-part-ii/#respond</comments>
		
		<dc:creator><![CDATA[Melanie koorevaar]]></dc:creator>
		<pubDate>Fri, 16 Mar 2018 18:06:13 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[blob]]></category>
		<category><![CDATA[datawarehouse]]></category>
		<category><![CDATA[hadoop]]></category>
		<category><![CDATA[Polybase]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sql2017]]></category>
		<guid isPermaLink="false">http://www.thebuttonfactory.nl/?p=3475</guid>

					<description><![CDATA[Nowadays your precious data can be stored everywhere, not just on several servers with different SQL versions, your data probably is wide spread in the cloud. It's also a good idea to store data in the cloud with stretch database to release your local discs from excessive data and still be able to query it,.]]></description>
										<content:encoded><![CDATA[<figure id="attachment_3549" aria-describedby="caption-attachment-3549" style="width: 707px" class="wp-caption alignright"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/03/polybase7.jpg?resize=640%2C278&#038;ssl=1" alt="" width="640" height="278" /><figcaption id="caption-attachment-3549" class="wp-caption-text">Image: Microsoft</figcaption></figure>
<p>Nowadays your precious data can be stored everywhere, not just on several servers with different SQL versions, your data probably is wide spread in the cloud. It's also a good idea to store data in the cloud with <a href="https://www.thebuttonfactory.nl/?p=3281" target="_blank" rel="noopener">stretch database</a> to release your local discs from excessive data and still be able to query it, but also use it in your SSIS and BI environment and keep an acceptable ETL. With Microsoft's polybase you can access, import and export any data structured, semi, or non structured on the Hadoop platform and azure blob storage using T- SQL language.</p>
<p>The best business knowledge comes from the data you collect. So it might be a good idea to put the data you collect into some good use. Businesses collect lot's of data, but in most cases this is also where it ends. Those who read my posts before,  know I am all about combining various sources with linked servers, since SQL 2014 lot's of new features are available for using all your data on business intelligence platforms.</p>
<p>In my last post, we had a <a href="https://www.thebuttonfactory.nl/?p=3462" target="_blank" rel="noopener">first look and troubleshoot of a polybase installation</a>. This time we are going to configure and use the polybase in SQL server 2017. I'm going to use the Blob storage on Azure to demonstrate how you can implement this solution in your (local) SQL database.</p>
<p>First things first, now you've got your polybase installation ready, check if the services for polybase exist and are running.</p>
<p>Services: '<strong>SQL Server PolyBase Data Movement'</strong> and '<strong>SQL Server PolyBase Engine'<img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/03/polybase-services_1.jpg?resize=624%2C374&#038;ssl=1" alt="" width="624" height="374" /></strong></p>
<p>You need to configure Polybase in order to start using it. Fire up SSMS and open a new query window. Type</p>
<pre>sp_configure ' hadoop connectivity', 4;
reconfigure</pre>
<p>Option 4 is <em>Azure blob storage (WASB[S])</em>. For more info on availability of the Polybase connectivity configuration, take a look <a href="https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/polybase-connectivity-configuration-transact-sql" target="_blank" rel="noopener">here</a>. Run the query and make sure you restart both Polybase services on the machine to finish the configuration.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/03/polybase_configure_2.jpg?resize=640%2C66&#038;ssl=1" alt="" width="640" height="66" /></p>
<p>In order to start using the blob storage make sure you have an Azure storage account if you don't have an Azure account yet, create one <a href="https://portal.azure.com/" target="_blank" rel="noopener">here</a>.</p>
<p>Login to Azure and on the left side select and create a new <strong>storage account</strong><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/www.thebuttonfactory.nl/wp-content/uploads/2018/03/Polybase_azure_5.jpg?resize=627%2C568&#038;ssl=1" alt="" width="627" height="568" /></p>
<p>Give it some time, once the storage is created, you also need to create a container on the Azure storage.</p>
<p>To connect your local db to azure  storage, you need to get the azure storage key from your Azure storage account you just created and put it in the configuration file of your SQL installation.<br /> Look for the <em>core-site.xml</em> file in the installation path of SQL Server.<br /> The path looks simular to this: "<em>C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLBinnPolybaseHadoopconf"</em><br /> This will open the config directory  with the <em>core-site.xml</em> file.</p>
<p>Open the file in notepad and add code before the block of code mentioning Kerebos.</p>
<p>Fill in the storage name, in my case polybasedemo  and the storagekey and save the file.</p>
<pre> fs.azure.account.key..blob.core.windows.net
</pre>
<p>Now we have to create an external data source in SSMS. Replace containername@storagename with the names you created on Azure.</p>
<pre>CREATE EXTERNAL DATA SOURCE PolyBaseDemo WITH
( TYPE = HADOOP, -- wasbs:// containername@storagename.blob.core.windows.net/ 
LOCATION = 'wasbs://containername@storagename.blob.core.windows.net/' );</pre>
<p>Next up, we create the external file format to define external data on Azure blob storage, this needs to be done in order to create the external table</p>
<pre>CREATE EXTERNAL FILE FORMAT PolybaseFormat 
WITH ( FORMAT_TYPE = DELIMITEDTEXT , FORMAT_OPTIONS ( FIELD_TERMINATOR = ',' ) );</pre>
<p>This creates 2 new server objects in SSMS and now all is left to create the external table itself. In this demo I use an excel sheet with some irrelevant data to have some test data available.</p>
<p>USE [DemoPolybase] CREATE EXTERNAL TABLE [dbo].[Customers] ( [Name] VARCHAR(255) NULL, [adres] VARCHAR(255) NULL, [postalcode] VARCHAR(6) NULL ) WITH (LOCATION = N'/Customer_Export.csv', DATA_SOURCE = PolyBaseDemo, FILE_FORMAT = PolybaseFormat, REJECT_TYPE = Value, REJECT_VALUE = 10) GO</p>
<p>And to see if this worked, just query the data <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>SELECT * FROM [Customers]</p>
<p>Now put this knowledge into action yourself with some real data!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.thebuttonfactory.nl/polybase-configuration-on-sql-server-2017-part-ii/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3475</post-id>	</item>
	</channel>
</rss>
