<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Charlotte Skardon 🏳️‍⚧️</title>
    <description>The latest articles on DEV Community by Charlotte Skardon 🏳️‍⚧️ (@cskardon).</description>
    <link>https://dev.to/cskardon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F201559%2Fde605263-69a8-4ad1-8610-0bf2a8f4db6d.jpg</url>
      <title>DEV Community: Charlotte Skardon 🏳️‍⚧️</title>
      <link>https://dev.to/cskardon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cskardon"/>
    <language>en</language>
    <item>
      <title>Neo4j 4.0 is around the corner and I want to use SSIS with it. Can I?</title>
      <dc:creator>Charlotte Skardon 🏳️‍⚧️</dc:creator>
      <pubDate>Wed, 15 Jan 2020 18:23:00 +0000</pubDate>
      <link>https://dev.to/cskardon/neo4j-4-0-is-around-the-corner-and-i-want-to-use-ssis-with-it-can-i-3npc</link>
      <guid>https://dev.to/cskardon/neo4j-4-0-is-around-the-corner-and-i-want-to-use-ssis-with-it-can-i-3npc</guid>
      <description>&lt;p&gt;Yes!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2iX7hf2V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2020/01/image-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2iX7hf2V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2020/01/image-3.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s the TL;DR; out of the way &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2EAkP1Kt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s.w.org/images/core/emoji/12.0.0-1/72x72/1f642.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2EAkP1Kt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s.w.org/images/core/emoji/12.0.0-1/72x72/1f642.png" alt="🙂"&gt;&lt;/a&gt; The slightly longer version is that you need to use the 1.4.0.0 version of the Neo4j SSIS Components.&lt;/p&gt;

&lt;p&gt;This is the main change to the components for 1.4.0.0 – there are a couple of things tidied up and hopefully a smoother experience with the syntax highlighting in the Cypher editor screens.&lt;/p&gt;

&lt;p&gt;If you want to get your hands on the components – please visit: &lt;a href="http://bit.ly/neo4jssis"&gt;http://bit.ly/neo4jssis&lt;/a&gt; register and you’ll be sent out the download link. Registration is only used to let you know of updates to the tools, no marketing!&lt;/p&gt;

</description>
      <category>uncategorised</category>
      <category>neo4j</category>
    </item>
    <item>
      <title>Neo4j – SSIS – Connection Manager Love</title>
      <dc:creator>Charlotte Skardon 🏳️‍⚧️</dc:creator>
      <pubDate>Mon, 06 Jan 2020 17:45:00 +0000</pubDate>
      <link>https://dev.to/cskardon/neo4j-ssis-connection-manager-love-3jn4</link>
      <guid>https://dev.to/cskardon/neo4j-ssis-connection-manager-love-3jn4</guid>
      <description>&lt;p&gt;I’ve not written about the SSIS components for a bit, but I &lt;em&gt;have&lt;/em&gt; been working on them – adding things, improving things. One area that was always very basic was the Connection interface. Or lack thereof – indeed the interface was basically just the properties pane of Visual Studio – mmmm Functional.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kSPVc-1M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2020/01/image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kSPVc-1M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2020/01/image.png" alt=""&gt;&lt;/a&gt;A quick reminder&lt;/p&gt;

&lt;p&gt;Now though, you can double click on the Connection Manager and you’ll get a better interface – one that makes it easier to read!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ppDmq88F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2020/01/image-1-1024x736.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ppDmq88F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2020/01/image-1-1024x736.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve also added two new properties to help with connections, &lt;strong&gt;IPv6&lt;/strong&gt; and &lt;strong&gt;Use Encryption&lt;/strong&gt; , which hopefully are pretty obvious as to what they mean.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sypsFKsN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2020/01/image-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sypsFKsN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2020/01/image-2.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a short post as there’s not much to add, those of you on the mailing list will have found out about these updates last year, and if you want to get your hands on the toolset – please visit: &lt;a href="http://bit.ly/neo4jssis"&gt;http://bit.ly/neo4jssis&lt;/a&gt; register and you’ll be sent out the download link. Registration is only used to let you know of updates to the tools, no marketing!&lt;/p&gt;

</description>
      <category>etl</category>
      <category>neo4j</category>
      <category>ssis</category>
    </item>
    <item>
      <title>Neo4j &amp; NiFi – Getting NiFi Running</title>
      <dc:creator>Charlotte Skardon 🏳️‍⚧️</dc:creator>
      <pubDate>Fri, 13 Dec 2019 14:58:45 +0000</pubDate>
      <link>https://dev.to/cskardon/neo4j-nifi-getting-nifi-running-2a27</link>
      <guid>https://dev.to/cskardon/neo4j-nifi-getting-nifi-running-2a27</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MGx2gj8l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/12/neo4jnifi-1024x887.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MGx2gj8l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/12/neo4jnifi-1024x887.png" alt="Neo4j and Apache NiFi" width="880" height="762"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another day, another ETL tool, this time &lt;a href="https://nifi.apache.org/"&gt;Apache NiFi&lt;/a&gt; which is described as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An easy to use, powerful, and reliable system to process and distribute data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ve used SSIS and Kettle in the past, so I figured I’d be able to get this bad boy running easy enough – I mean – it’s ‘easy to use’ right? That’s not a descriptive sentence often used to describe SSIS or Kettle, so should be safe.&lt;/p&gt;

&lt;p&gt;Unfortunately – as with politics, bare faced lies are apparently acceptable in the software world as well. I’d probably replace ‘easy to use’ with ‘usable’ – as to the other keywords – powerful / reliable – I can’t confirm or deny the truth of these.&lt;/p&gt;

&lt;p&gt;Obviously – my experience is very very small – so take it with a pinch of salt – what I will say is that the &lt;a href="https://nifi.apache.org/docs.html"&gt;documentation&lt;/a&gt; is OK, but doesn’t really describe just what the ____ is going on.&lt;/p&gt;

&lt;p&gt;Complaints over – let’s crack on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Important information
&lt;/h2&gt;

&lt;p&gt;This is using NiFi 1.10.0, there are no graph bundles for lower versions – and in this version they are not packaged by default.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running NiFi
&lt;/h2&gt;

&lt;p&gt;I tried 4 ways to run NiFi, initially – I went with running it off of my local machine – which – yes – runs Windows 10. But I also have Java installed, so saved me doing any extra leg work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Windows 10 – Local
&lt;/h3&gt;

&lt;p&gt;I downloaded the zip, unzipped to a folder – ran &lt;code&gt;bin\run-nifi.bat&lt;/code&gt; – it started, showed me a lot of Java output – but that’s cool – I’m used to that. I connected to the URI – (&lt;a href="http://localhost:8080/nifi"&gt;http://localhost:8080/nifi&lt;/a&gt;) and – good news! It’s there.&lt;/p&gt;

&lt;p&gt;Stop it (CTRL+C), restart – and it never &lt;em&gt;ever&lt;/em&gt; succeeds in starting again. For why? I have no idea. I extracted it into a fresh directory and ran it – no dice, I rebooted, no dice, nothing I could do would sort it out – I had no instances of Java running ,netstat said the ports were not in use. Nada.&lt;/p&gt;

&lt;h3&gt;
  
  
  Windows Server 2019 – VM
&lt;/h3&gt;

&lt;p&gt;On second thoughts – and with much frustration from the Local attempts – I decide that maybe, &lt;em&gt;just maybe&lt;/em&gt; running this away from my work machine would make more sense, I have a Server 2019 ISO lying around – so – why not.&lt;/p&gt;

&lt;p&gt;Long story shorter – same deal – though without the initial success – OK – so the obvious link here is Windows, let’s go Ubuntu.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ubuntu 18.04 VM
&lt;/h3&gt;

&lt;p&gt;Install. Run. Fail.&lt;/p&gt;

&lt;p&gt;There’s a pattern. I followed the instructions to the letter – but no joy. At this point there are 2 options, but I wanted to be able to use my laptop later – so had to put the hammer back and go with Docker.&lt;/p&gt;

&lt;h3&gt;
  
  
  Docker for Windows Desktop
&lt;/h3&gt;

&lt;p&gt;Back on the main work machine O/S – I install docker – wait what? You didn’t have Docker installed already? Well – no – I’d used it a while ago – but found it messed up my machine way too much. But hey – after 3 fails, it’s time for a win – and I need a win.&lt;/p&gt;

&lt;p&gt;Crack open PowerShell and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --name nifi-run &amp;lt;code&amp;gt;-p 8080:8080&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;-d `&amp;lt;br&amp;gt;apache/nifi:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open up Chrome and go to the NiFi homepage (with the expectation of failure) – and… we have a winner!&lt;/p&gt;

&lt;p&gt;Having been caught out by this before – I stop and start it again, and it’s still working! MAGIC.&lt;/p&gt;

&lt;p&gt;Adding the Graph Bundles&lt;/p&gt;

&lt;p&gt;Now we have NiFi actually running, we need to get the Graph Bundles in place, and firstly, we need to download those, so go get them from the releases page of GitHub.&lt;/p&gt;

&lt;p&gt;Download&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://repository.apache.org/content/repositories/releases/org/apache/nifi/nifi-graph-client-service-api-nar/1.10.0/nifi-graph-client-service-api-nar-1.10.0.nar"&gt;NiFi Graph Client Service API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://repository.apache.org/content/repositories/releases/org/apache/nifi/nifi-graph-nar/1.10.0/nifi-graph-nar-1.10.0.nar"&gt;NiFi Graph&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://repository.apache.org/content/repositories/releases/org/apache/nifi/nifi-neo4j-cypher-service-nar/1.10.0/nifi-neo4j-cypher-service-nar-1.10.0.nar"&gt;NiFi Neo4j Cypher Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://repository.apache.org/content/repositories/releases/org/apache/nifi/nifi-other-graph-services-nar/1.10.0/nifi-other-graph-services-nar-1.10.0.nar"&gt;NiFi Other Graph Services&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You only need the first 3 for connecting to Neo4j, and why would you want to connect to another GraphDB eh? Oh yeah – Sadomasochism – forgot.&lt;/p&gt;

&lt;p&gt;Stick these files into something simple to remember, in my case, I went with &lt;code&gt;D:\Docker&lt;/code&gt; as we’ll need to reference them for the Docker container to be made.&lt;/p&gt;

&lt;p&gt;Also – I’m adding an ‘Import’ volume to the Docker container – to allow me to pass data into NiFi – my initial intention was (and in many ways still is) to be able to read a CSV file from this folder – and insert that into Neo4j.&lt;/p&gt;

&lt;p&gt;Create the Docker Container&lt;/p&gt;

&lt;p&gt;Pretty much the same command as before, only this time I’m adding 4 &lt;code&gt;-v&lt;/code&gt; parameters to the call. 3 of them are putting the &lt;code&gt;.nar&lt;/code&gt; files (downloaded above) into the container, the last is the ‘Import’ folder.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --name nifi `-p 8080:8080 `-v D:/Docker/nifi-graph-client-service-api-nar-1.10.0.nar:/opt/nifi/nifi-1.10.0/lib/nifi-graph-client-service-api-nar-1.10.0.nar `-v D:/Docker/nifi-graph-nar-1.10.0.nar:/opt/nifi/nifi-1.10.0/lib/nifi-graph-nar-1.10.0.nar `-v D:/Docker/nifi-neo4j-cypher-service-nar-1.10.0.nar:/opt/nifi/nifi-1.10.0/lib/nifi-neo4j-cypher-service-nar-1.10.0.nar `-v D:/Docker/Import:/opt/nifi/nifi-1.10.0/data-in `-d `apache/nifi:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aaaand,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cFSL7G49--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/12/image-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cFSL7G49--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/12/image-1.png" alt="" width="878" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Boom!&lt;/p&gt;

&lt;p&gt;This seems like a good place to pause – we have NiFi running with the Graph bundles there, next time we’ll execute some queries against it.&lt;/p&gt;

&lt;p&gt;Or. &lt;em&gt;try&lt;/em&gt;.&lt;/p&gt;

</description>
      <category>etl</category>
      <category>neo4j</category>
      <category>nifi</category>
    </item>
    <item>
      <title>Reactive Neo4j using .NET</title>
      <dc:creator>Charlotte Skardon 🏳️‍⚧️</dc:creator>
      <pubDate>Wed, 27 Nov 2019 15:09:37 +0000</pubDate>
      <link>https://dev.to/cskardon/reactive-neo4j-using-net-4j51</link>
      <guid>https://dev.to/cskardon/reactive-neo4j-using-net-4j51</guid>
      <description>&lt;p&gt;Version 4.0 of Neo4j is being actively worked on, and aside from the new things in the database itself, the drivers get an update as well – and one of the big updates is the addition of a Reactive way to develop against the DB.&lt;/p&gt;

&lt;p&gt;Now – I’ve not done reactive programming for a long time, I think I did play around with it when .NET 4 was first released, but I have no idea where that blog post has gone – so I may as well start as new.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I found it! Not the post, but the application – MousePath – which is now on GitHub: &lt;a href="https://github.com/cskardon/MousePath"&gt;MousePath&lt;/a&gt; – aside from it ‘working’ it’s not performant in any way.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is Rx/Reactive?
&lt;/h2&gt;

&lt;p&gt;Reactive in .NET is all about the &lt;code&gt;IObservable&amp;lt;T&amp;gt;/IObserver&amp;lt;T&amp;gt;&lt;/code&gt; interfaces. They’ve been around since .NET 4, but personally I’ve never really used them. They allow application code to &lt;em&gt;react&lt;/em&gt; to data being pushed to it, rather than the more traditional way of requesting the data.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There’s a good book (Intro to Rx) which I will been using to work this out, which is freely available online: &lt;a href="http://introtorx.com/"&gt;http://introtorx.com/&lt;/a&gt; .&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Starting off
&lt;/h2&gt;

&lt;p&gt;For this project, we’re going to need the nuget package – which in this case isn’t Neo4j.Driver – but &lt;a href="https://www.nuget.org/packages/Neo4j.Driver.Reactive/4.0.0-beta01"&gt;Neo4j.Driver.Reactive&lt;/a&gt;. When we add this to our project – and create a driver in the normal way- we can see we now have an ‘&lt;code&gt;RxSession&lt;/code&gt;‘ which is an extension method of the &lt;code&gt;IDriver&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OwJetpPk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/11/image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OwJetpPk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/11/image.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So let’s create a reactive session and see what we can see.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kUKReuC6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/11/image-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kUKReuC6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/11/image-1.png" alt=""&gt;&lt;/a&gt;RxSession&lt;/p&gt;

&lt;p&gt;We get &lt;code&gt;IObservable&lt;/code&gt; as opposed to the &lt;code&gt;AsyncSession&lt;/code&gt; giving us Tasks&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9hm0nt6F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/11/image-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9hm0nt6F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/11/image-2.png" alt=""&gt;&lt;/a&gt;AsyncSession&lt;/p&gt;

&lt;h2&gt;
  
  
  Doing a Run-ner
&lt;/h2&gt;

&lt;p&gt;So, back to our &lt;code&gt;RxSession&lt;/code&gt;, lets do a basic version, just using &lt;code&gt;Run&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var session = Driver.RxSession();var rxStatementResult = session.Run("MATCH (m:Movie) RETURN m.title");rxStatementResult .Records() .Subscribe( record =&amp;gt; Console.WriteLine("Got: " + record.Values["m.title"].As&amp;lt;string&amp;gt;()) );
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;In here, we’re hooking up to the ol’ classic Movies database, and simply writing the titles to the screen. NB – &lt;code&gt;Driver&lt;/code&gt; is a static property of type &lt;code&gt;IDriver&lt;/code&gt; I have defined elsewhere.&lt;/p&gt;

&lt;p&gt;The first two lines look pretty much like our normal code – the only real difference being the use of the ‘&lt;code&gt;RxSession&lt;/code&gt;‘ as opposed to just ‘&lt;code&gt;Session&lt;/code&gt;‘.&lt;/p&gt;

&lt;p&gt;Run on an &lt;code&gt;RxSession&lt;/code&gt; returns an &lt;code&gt;IRxStatementResult&lt;/code&gt; – which has 3 methods we’re interested in, (well actually only 1 at the moment) – &lt;code&gt;Records()&lt;/code&gt;, &lt;code&gt;Consume()&lt;/code&gt; and &lt;code&gt;Keys()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TOHQrF8z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/11/image-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TOHQrF8z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/11/image-3.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Records()&lt;/code&gt; gets us the records from the database, so the stuff we want to do things with, &lt;code&gt;Consume()&lt;/code&gt; whips through those records so we can get an &lt;code&gt;IResultSummary&lt;/code&gt; telling us what is going on, and &lt;code&gt;Keys()&lt;/code&gt; gets us the keys that are returned, in the simple statement I’ve done – ‘&lt;code&gt;m.title&lt;/code&gt;‘ is the only key.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Records()&lt;/code&gt; is what we’re using, as we want to deal with the data, &lt;code&gt;Records()&lt;/code&gt; return us an &lt;code&gt;IObservable&amp;lt;IRecord&amp;gt;&lt;/code&gt; and being &lt;code&gt;IObservable&lt;/code&gt; – we need to &lt;code&gt;Subscribe()&lt;/code&gt; to it to get the data. Subscribing means we will provide an &lt;code&gt;IObserver&lt;/code&gt; that will be notified whenever an &lt;code&gt;IRecord&lt;/code&gt; arrives.&lt;/p&gt;

&lt;p&gt;In this case, we have the contents being written to the console. Aces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quitting
&lt;/h2&gt;

&lt;p&gt;Being a console app – doing tiny amounts of work – I largely don’t need to worry about disposing of my resources, but let’s imagine resource usage is something we &lt;em&gt;do&lt;/em&gt; care about. How do you go about disposing of your resources?&lt;/p&gt;

&lt;p&gt;&lt;code&gt;IDisposable&lt;/code&gt;? INosable! – the &lt;code&gt;IRxSession&lt;/code&gt; doesn’t implement &lt;code&gt;IDisposable&lt;/code&gt;, instead we have to &lt;code&gt;Close&amp;lt;T&amp;gt;()&lt;/code&gt; it – and this is where things have got a little fuzzy for me – I’m not entirely sure I’m closing it correctly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var session = Driver.RxSession();var rxStatementResult = session.Run("MATCH (m:Movie) RETURN m.title");rxStatementResult .Records() .Subscribe( record =&amp;gt; Console.WriteLine("Got: " + record.Values["m.title"].As&amp;lt;string&amp;gt;()));session.Close&amp;lt;IRecord&amp;gt;();
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now, I expect to get either &lt;em&gt;no&lt;/em&gt; results, or a smaller subset (depending on the speed of the code running) – what I get is the close being called, but still getting the full amount of data – I suspect I misunderstand what is going on here.&lt;/p&gt;

&lt;p&gt;Let’s say I &lt;em&gt;do&lt;/em&gt; want a smaller subset – or to quit – how do I do it? Well, the &lt;code&gt;Subscribe()&lt;/code&gt; method actually returns an &lt;code&gt;IObservable&amp;lt;IRecord&amp;gt;&lt;/code&gt; – which is &lt;em&gt;also&lt;/em&gt; &lt;code&gt;IDisposable&lt;/code&gt; – so we ‘unsubscribe’ by disposing of our subscriber:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var session = Driver.RxSession();var rxStatementResult = session.Run("MATCH (m:Movie) RETURN m.title");var subscription = rxStatementResult .Records() .Subscribe(record =&amp;gt; Console.WriteLine("Got: " + record.Values["m.title"].As&amp;lt;string&amp;gt;()));await Task.Delay(220);subscription.Dispose();session.Close&amp;lt;IRecord&amp;gt;();
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;The ‘delay’ magic number there is enough time to get some records, but not all, anything less than that gave no results, anything more – all the results. ¯_(ツ)_/¯&lt;/p&gt;

&lt;h2&gt;
  
  
  Ooook So – Why Rx?
&lt;/h2&gt;

&lt;p&gt;It seems more complex right? Subscribe(), unsubscribe – no foreach in sight! What’s the point?&lt;/p&gt;

&lt;p&gt;My understanding – and this could be/probably is wrong – is that by using Rx – we’re reducing our overheads – i.e. instead of streaming everything, we can just stream what we’re consuming at the time.&lt;/p&gt;

&lt;p&gt;The other key benefits come from things like ‘&lt;code&gt;.Buffer&lt;/code&gt;‘ and the other commands (&lt;code&gt;Skip&lt;/code&gt;, &lt;code&gt;Last&lt;/code&gt;, etc) allowing you to stream things in a better way.&lt;/p&gt;

&lt;p&gt;One nice thing about Rx in .NET is that it’s not the same as async – you don’t have to have your entire stack in Rx to get the benefits – you can do bits and pieces where you need to – if you’ve got a lot of data maybe it makes sense for a given query.&lt;/p&gt;

</description>
      <category>net</category>
      <category>c</category>
      <category>neo4j</category>
      <category>rx</category>
    </item>
    <item>
      <title>Execute Cypher Task Updates</title>
      <dc:creator>Charlotte Skardon 🏳️‍⚧️</dc:creator>
      <pubDate>Mon, 21 Oct 2019 20:30:16 +0000</pubDate>
      <link>https://dev.to/cskardon/execute-cypher-task-updates-1akc</link>
      <guid>https://dev.to/cskardon/execute-cypher-task-updates-1akc</guid>
      <description>&lt;p&gt;Last week, Anabranch released version 1.1 of the tools for Neo4j – which included a very welcome addition to the toolset – being able to pull data &lt;strong&gt;from&lt;/strong&gt; a Neo4j instance.&lt;/p&gt;

&lt;p&gt;After doing the demo &lt;a href="https://dev.to/cskardon/using-a-data-flow-to-move-data-from-neo4j-in-ssis-2on2-temp-slug-7463602"&gt;post&lt;/a&gt; – I noticed a peculiarity – a quirk if you will with how the ‘Execute Cypher Task’ (see &lt;a href="https://dev.to/cskardon/neo4j-ssis-connecting-and-executing-cypher-in-a-control-flow-5f60-temp-slug-8430168"&gt;here&lt;/a&gt;) worked with multiple Neo4j Connection Managers defined – it would execute the Cypher against all the Connection Managers, not any specific one. This makes sense in some form – as a Control Flow Task doesn’t have a ‘Connection’ selector unlike a Data Flow Task.&lt;/p&gt;

&lt;p&gt;Version 1.2 of the tools fixes this and tidies up the Execute Cypher Task to have a better user interface as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding Cypher
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--arzBZCDX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-21.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--arzBZCDX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-21.png" alt="" width="658" height="677"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Cypher box still has highlighting, but now lines up to the edges properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing A Connection
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mfFxD2zR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mfFxD2zR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-22.png" alt="" width="576" height="610"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can choose from a drop down which connection you want to use. You will only see Neo4j Connection Managers here. The name of the Connection Manager will be the one you set it to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Validation
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---hGeQJ_Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-23.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---hGeQJ_Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-23.png" alt="" width="484" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will get a red cross on your task if you’re missing things (in this case the connection). If you look in the ‘Error List’ you will be able to see all the errors:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--T7fjygTV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T7fjygTV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-25.png" alt="" width="688" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting 1.2
&lt;/h2&gt;

&lt;p&gt;To get version 1.2, please visit: &lt;a href="http://bit.ly/neo4jssis"&gt;http://bit.ly/neo4jssis&lt;/a&gt; register and you’ll be sent out the download link. Registration is only used to let you know of updates to the tools, no marketing!&lt;/p&gt;

</description>
      <category>uncategorised</category>
      <category>neo4j</category>
      <category>ssis</category>
    </item>
    <item>
      <title>Using a Data Flow to move data **from** Neo4j in SSIS</title>
      <dc:creator>Charlotte Skardon 🏳️‍⚧️</dc:creator>
      <pubDate>Wed, 16 Oct 2019 20:11:44 +0000</pubDate>
      <link>https://dev.to/cskardon/using-a-data-flow-to-move-data-from-neo4j-in-ssis-84f</link>
      <guid>https://dev.to/cskardon/using-a-data-flow-to-move-data-from-neo4j-in-ssis-84f</guid>
      <description>&lt;p&gt;That’s right everyone! We’re going &lt;strong&gt;from&lt;/strong&gt; Neo4j this time, and this is a new release, the old version (1.0.0.0) didn’t have a ‘Neo4j as a Source’ component, 1.1.0.0 does.&lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/cskardon/using-a-data-flow-to-move-data-from-who-knows-where-to-neo4j-in-ssis-5g4l-temp-slug-4765482"&gt;last post&lt;/a&gt; we took data from a file and ingested it into Neo4j, so far so good – but one of the things we were missing was the ability to also pull from Neo4j, now the circle is complete, and in this post – I’m going to show you how to pull from one Neo4j instance into another. That’s right – Neo4j to Neo4j!&lt;/p&gt;

&lt;p&gt;As always – the video below shows the moving version of this post – but not everyone wants that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;OK, more complex than normal, as we need multiple instances of Neo4j running – and whilst that’s not rocket science – it is more complex than normal. I don’t want to go into it particularly – but hey! I would run one DB in Neo4j Desktop, then download one of the server editions (for this &lt;a href="https://neo4j.com/download-center/#community"&gt;Community&lt;/a&gt; will be just fine!)&lt;/p&gt;

&lt;h2&gt;
  
  
  Ports!
&lt;/h2&gt;

&lt;p&gt;You need to change the ports on your new server, as the Desktop ones will be using &lt;code&gt;7474/7687&lt;/code&gt; etc – So open up the &lt;code&gt;neo4j.conf&lt;/code&gt; file and change the following settings:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--49c_iwqu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--49c_iwqu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image.png" alt="" width="880" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are the ports I’m using – but go crazy and pick whatever you want – it’s your database after all. Aaaanyhews – I’m going to assume you know how to start your server version of the database. If not – there’s loads of stuff online about how to do it – and if it becomes clear that we’re in a world of pain here – I’ll write one &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2EAkP1Kt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s.w.org/images/core/emoji/12.0.0-1/72x72/1f642.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2EAkP1Kt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s.w.org/images/core/emoji/12.0.0-1/72x72/1f642.png" alt="🙂" width="72" height="72"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Clear the DBs
&lt;/h2&gt;

&lt;p&gt;WARNING!!! – which I don’t think we need – but here you go – &lt;em&gt;make sure you know which DB you are doing this on! Don’t delete your production DB by mistake!!!&lt;/em&gt; (•_•)&lt;/p&gt;

&lt;p&gt;On both the DBs we’re going to clear them, and add the ‘Movies’ demo set to one of them so – open up your browser window to both instances (&lt;a href="http://localhost:7474"&gt;http://localhost:7474&lt;/a&gt; and &lt;a href="http://localhost:7676"&gt;http://localhost:7676&lt;/a&gt; in my case) and execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MATCH (n) DETACH DELETE n
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then in one of the databases (and I will be using my &lt;code&gt;7474&lt;/code&gt; database) execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:play movies
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And step to the second step and put the movie data into your database. You can check the data is all there by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MATCH (n) RETURN COUNT(n)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get &lt;code&gt;171&lt;/code&gt; nodes. OK, now we’re all set up and ready to go!&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s SSIS
&lt;/h2&gt;

&lt;p&gt;As another assumption – I’m going with the fact that you know how to start up Visual Studio and create a new Package.&lt;/p&gt;

&lt;p&gt;Let’s first add one connection:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--80Guv00j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--80Guv00j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-1.png" alt="" width="590" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And, obvs pick Neo4j:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Em14ZKbi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Em14ZKbi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-2.png" alt="" width="688" height="699"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oooh – note the ‘version’ there as well – if yours says lower than that – then bad times &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IwZUrXu3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s.w.org/images/core/emoji/12.0.0-1/72x72/1f641.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IwZUrXu3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s.w.org/images/core/emoji/12.0.0-1/72x72/1f641.png" alt="🙁" width="72" height="72"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rename it to something like ‘The Source’ or whatever you find memorable:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--s4SXGgUN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s4SXGgUN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-3.png" alt="" width="209" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make sure the user / pass and server are all correct:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Yg0nZvWJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Yg0nZvWJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-4.png" alt="" width="513" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Looking good! Now – repeat – for the other server – remembering the port will be different – and choosing a different name, something like ‘The Destination’ for example, and you should end up with this state of affairs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uJYSK81s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uJYSK81s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-5.png" alt="" width="357" height="117"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s add a ‘Data Flow’ to our package now, again you can rename if you want. I did, but don’t let that force you into doing anything:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eYo4yC3Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eYo4yC3Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-6.png" alt="" width="880" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Double click on it, and we’re into Data Flow design heaven!&lt;/p&gt;

&lt;h2&gt;
  
  
  Add the Source
&lt;/h2&gt;

&lt;p&gt;Drag the ‘Execute Cypher Source’ component from the toolbox onto the page:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4zPVt7Lb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4zPVt7Lb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-7.png" alt="" width="880" height="217"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Double click on it to enter the ‘Edit’ page:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sG-NhzKk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-8-1024x641.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sG-NhzKk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-8-1024x641.png" alt="" width="880" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Cypher we’re going to execute is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MATCH (m:Movie) RETURN m.title AS title
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now – some &lt;strong&gt;TOP TIPS&lt;/strong&gt;. This works best if you RETURN specific columns, SSIS doesn’t know what to do with a full node, and using the AS there makes the output columns easier to use.&lt;/p&gt;

&lt;p&gt;Once you’ve got the Cypher – you need to select the Connection to use (see the picture) – which is why naming them nicely is SUPER useful.&lt;/p&gt;

&lt;p&gt;Once you’ve done that, hit ‘Refresh’ to get the Output Columns populated:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f_9kwlKP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f_9kwlKP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-9.png" alt="" width="335" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Job done. Good work!&lt;/p&gt;

&lt;h2&gt;
  
  
  Add the Destination
&lt;/h2&gt;

&lt;p&gt;No surprises for guessing this involves dragging the Destination to the page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BvkCHEiH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-10-1024x304.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BvkCHEiH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-10-1024x304.png" alt="" width="880" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, join up the Source to the Destination:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WZCpQOhN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WZCpQOhN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-12.png" alt="" width="608" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The UI for this is not as fully fledged out as the other, so unfortunately we need to head into the &lt;em&gt;Advanced Editor&lt;/em&gt;. So Right click on it, and open the Advanced Editor:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--62X_4YUN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--62X_4YUN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-13.png" alt="" width="504" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First we want to set the connection:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YPN6ve0I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YPN6ve0I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-14.png" alt="" width="621" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Again – naming!!&lt;/p&gt;

&lt;p&gt;Then we’re going to go to the ‘Input’ tab and select our input from the Source:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xMb_Md_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xMb_Md_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-15.png" alt="" width="880" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Press OK to save all that, and then double click on the Destination item and go to the Cypher Editor:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VX37lUMN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-16-1024x585.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VX37lUMN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-16-1024x585.png" alt="" width="880" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First off – you can see the ‘title’ listed in the parameters, so that’s good – Cypher wise we’re doing a MERGE- so we only get one ‘Cloud Atlas’ (because &lt;em&gt;no-one&lt;/em&gt; needs more than one of those).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MERGE (:Movie {title: $title})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this point, we have our two things and no red crosses or errors anywhere, so let’s run it!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0aS_ab7V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0aS_ab7V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-17.png" alt="" width="655" height="351"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Run it!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3RVVkW5x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-18.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3RVVkW5x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-18.png" alt="" width="154" height="100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No surprises – we press ‘Start’ and get the ‘liney’ version of the page which hopefully you see as:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rFQWspJs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rFQWspJs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/10/image-19.png" alt="" width="646" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;38 rows (hahaha Rows!) and if you go to your ‘Destination’ database you should see the movies there.&lt;/p&gt;

&lt;h2&gt;
  
  
  I want it
&lt;/h2&gt;

&lt;p&gt;Of course you do – these controls are currently in an open beta, to register to get the controls, please go to: &lt;a href="http://bit.ly/neo4jssis"&gt;http://bit.ly/neo4jssis&lt;/a&gt;&lt;/p&gt;

</description>
      <category>neo4j</category>
      <category>ssis</category>
    </item>
    <item>
      <title>Using a Data Flow to move data from who knows where to Neo4j in SSIS</title>
      <dc:creator>Charlotte Skardon 🏳️‍⚧️</dc:creator>
      <pubDate>Fri, 19 Jul 2019 16:43:15 +0000</pubDate>
      <link>https://dev.to/cskardon/using-a-data-flow-to-move-data-from-who-knows-where-to-neo4j-in-ssis-4fd7</link>
      <guid>https://dev.to/cskardon/using-a-data-flow-to-move-data-from-who-knows-where-to-neo4j-in-ssis-4fd7</guid>
      <description>&lt;p&gt;In what is rapidly becoming a series of posts – we look into another of the components in the Anabranch SSIS Components for Neo4j package. The &lt;a href="https://dev.to/cskardon/neo4j-ssis-connecting-and-executing-cypher-in-a-control-flow-5f60-temp-slug-8430168"&gt;last post&lt;/a&gt; looked at using the “Execute Cypher Task” from within a Control Flow, but that’s not so useful, I mean – it’s &lt;em&gt;great&lt;/em&gt; for doing things like Deleting a DB, adding indexes etc, but when we want to get Data from one source to another, we gotta go all Data Flowy.&lt;/p&gt;

&lt;p&gt;I’m working on the principle that you’ve gone through the last post, as well, I’m going to pick up from where we left off, and I make no apologies for my assumptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Clear the DB
&lt;/h2&gt;

&lt;p&gt;I should mention – please check which DB instance you are connected to – nothing says ‘problem’ quite like deleting your production database.&lt;/p&gt;

&lt;p&gt;Let’s first clear the Neo4j instance back to an empty state, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MATCH (n) DETACH DELETE n
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Clear Package
&lt;/h2&gt;

&lt;p&gt;We don’t want the Execute Cypher Task any more, so select it – and press Delete, or go all Mousey and right-click – the choice is yours&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-14.png"&gt;&lt;/a&gt;Deleting the mouse way&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s Data Flow (Task)!
&lt;/h2&gt;

&lt;p&gt;Drag a Data Flow Task onto the Control Flow workspace:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-15.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Double click on the Task to be taken to the Data Flow workspace, which will be empty. So let’s drag a ‘Flat File Source’ to the space:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-16.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Double click on the Flat File Source, and the editor will pop up. We need to add a new Connection Manager, so press ‘New…’&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-17.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, we want to use a CSV file, you can use the one I use by downloading from &lt;a href="https://anabranch-my.sharepoint.com/%E2%9D%8C/g/personal/cskardon_anabranch_co_uk/EdRCjAVnCmxCk_JiJRMbOfwBkTiCbrL3FDSskFVyQxJbNg?e=8Nn1sh" rel="noopener noreferrer"&gt;this link&lt;/a&gt;, it’s not very exciting I’m afraid, just some names &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fee02z822yt0l19fsu8k8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fee02z822yt0l19fsu8k8.png" alt="🙂"&gt;&lt;/a&gt; Anyhews – fill in the details that match your file (the ones in this picture match my file, the only thing I’ve changed from default is the Code page to be 65001 (UTF-8))&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-18.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-18.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then click on the ‘Columns’ bit on the left hand side, to make sure it all looks ok, and press OK. You’ll be back to the ‘Flat File Source Editor’ – and you should now click on the ‘Columns’ bit here too:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-19.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make sure at least the First/Last names are checked here – obviously if you’re using your own file – pick your columns! Press OK and go back to the workspace.&lt;/p&gt;

&lt;p&gt;Now drag an ‘Execute Cypher Destination’ task to the workspace:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-20-1024x363.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-20-1024x363.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Drag the ‘Blue arrow’ from the Flat File Source, and attach it to the Execute Cypher task:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-22.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, right click on the execute cypher task, and select ‘Show Advanced Editor…’&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-21.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-21.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, set the connection manager, we want to use our existing Neo4j Connection Manager&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-23.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-23.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then we want to select the ‘Input Columns’, just pick them all for now:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-24.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-24.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Press OK, and then Double click on the Execute Cypher Task, to get the Cypher Editor&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-25-1024x598.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-25-1024x598.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add the Cypher as I have above:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE (:User {First: $FirstName, Last: $LastName})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And press OK.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do some SSISing!
&lt;/h2&gt;

&lt;p&gt;Now, all that’s left to do is press Start (or Right-click – Execute Task) whichever is your preference!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-26.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-26.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’ll run, and give you the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-27.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-27.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Which you can check in your DB by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MATCH (n) RETURN COUNT(n)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-28.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F07%2Fimage-28.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Things are a bit more interesting now, as we’re pulling from a different source and putting into the database, obviously SSIS supports &lt;em&gt;loads&lt;/em&gt; of sources – with&lt;/p&gt;

&lt;p&gt;These controls are currently in an open beta, to register to get the controls, please go to: &lt;a href="http://bit.ly/neo4jssis" rel="noopener noreferrer"&gt;http://bit.ly/neo4jssis&lt;/a&gt;&lt;/p&gt;

</description>
      <category>neo4j</category>
      <category>ssis</category>
    </item>
    <item>
      <title>Neo4j &amp; SSIS – Connecting and executing Cypher in a Control Flow</title>
      <dc:creator>Charlotte Skardon 🏳️‍⚧️</dc:creator>
      <pubDate>Thu, 18 Jul 2019 16:30:51 +0000</pubDate>
      <link>https://dev.to/cskardon/neo4j-ssis-connecting-and-executing-cypher-in-a-control-flow-70k</link>
      <guid>https://dev.to/cskardon/neo4j-ssis-connecting-and-executing-cypher-in-a-control-flow-70k</guid>
      <description>&lt;p&gt;Last Friday, Anabranch released the first beta version of it’s connector to Neo4j from SSIS. Aside from a post saying that it existed, I didn’t go into detail, so this is going to be a series of posts on how you can use your existing SSIS infrastructure with Neo4j.&lt;/p&gt;

&lt;p&gt;Today we’re going to look at 2 parts of the connector, the Neo4j Connection Manager (CM) and the Execute Cypher Task (ECT). The CM is fundamental to all the controls, without it, you can’t connect to the database. I’ll go into what it does, settings etc in another post, but for now – it’s enough to know that it provides the connection. The ECT allows us to execute Cypher against a given connection manager.&lt;/p&gt;

&lt;p&gt;** NOTE **&lt;br&gt;&lt;br&gt;
&lt;strong&gt;In version 1.0.0(beta) – the ECT will only work with the &lt;em&gt;first&lt;/em&gt; CM you add to the package&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This video covers the same topic as the text version below:&lt;/p&gt;



&lt;p&gt;I’m going to develop this in Visual Studio 2017, at the time of writing – I found the 2019 SSIS packages to be a bit flakey, whereas the 2017 has been sturdy so far – from a ‘demo’ point of view though – the 2019 process is exactly the same after you have it all installed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SETUP&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
 If you’ve never developed against SSIS before, you’ll need a couple of things, firstly SSDT (specifically the Integration services bits), Visual Studio – I think the community edition should work, but I can’t confirm. You’ll also need the Anabranch Ssis Controls for Neo4j – assuming you’ve registered ( &lt;a href="http://anabranch.co.uk/Projects/Neo4jSsis"&gt;http://anabranch.co.uk/Projects/Neo4jSsis&lt;/a&gt;) and have the download link, you’ll want the &lt;strong&gt;2017 x86&lt;/strong&gt; version of the controls – (for VS2019 as well!).&lt;/p&gt;

&lt;p&gt;Download and install the controls. NB. You want to install these when Visual Studio &lt;em&gt;isn’t&lt;/em&gt; running – as we’re in the heady world of the GAC here, and VS won’t find them unless it’s started with them there.&lt;/p&gt;

&lt;p&gt;Do do this example yourself – you’ll also need a Neo4j database instance running, I’d recommend using the &lt;a href="https://neo4j.com/download/"&gt;Neo4j Desktop&lt;/a&gt; as it makes it easier to manage the process.&lt;/p&gt;
&lt;h3&gt;
  
  
  Create your first package
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Start up Visual Studio
&lt;/li&gt;
&lt;li&gt;Create a new Integration Services project&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rGjcwbdR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rGjcwbdR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-3.png" alt="" width="818" height="237"&gt;&lt;/a&gt;New Project…&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PLK39_iw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-4-1024x724.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PLK39_iw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-4-1024x724.png" alt="" width="880" height="622"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the new &lt;em&gt;Package.dtsx&lt;/em&gt; file, we need to add a Connection Manager. Right click on the bottom ‘Connection Managers’ bar and add a Neo4j connection – if you don’t see it – you might have to restart Visual Studio, or possibly your machine.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--krkCs3qC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-5-1024x703.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--krkCs3qC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-5-1024x703.png" alt="" width="880" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then select the Neo4j Connection:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7O1An-UL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7O1An-UL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-6.png" alt="" width="615" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll now see it in the ‘Connection Managers’ section:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qgx-c1B6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qgx-c1B6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-7.png" alt="" width="427" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select it – and change the connection properties to ones that match your database instance – at the moment this is done via the properties window:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y3T3arHm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y3T3arHm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-8.png" alt="" width="556" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this stage, we have a connection – but we’re not using it, so let’s add a task to execute:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hHeUGw0N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hHeUGw0N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-9.png" alt="" width="531" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Drag the ‘Execute Cypher Task’ to the Control Flow, and double click on it. Then add the following Cypher:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE (:Node {Id:1})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yTpb3tnS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yTpb3tnS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-10.png" alt="" width="876" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Press &lt;strong&gt;OK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then we can execute the task:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FAye21iJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FAye21iJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-11.png" alt="" width="637" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once that’s done:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NaJnu599--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NaJnu599--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-12.png" alt="" width="378" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we go to our Neo4j Database, we can run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MATCH (n:Node) RETURN n
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If we look at the ‘Id’ property – we can see it is ‘1’&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e409IqWl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e409IqWl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-13.png" alt="" width="591" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So. Now we have an SSIS integration package executing against a Neo4j database.&lt;/p&gt;

&lt;p&gt;These controls are currently in an open beta, to register to get the controls, please go to: &lt;a href="http://bit.ly/neo4jssis"&gt;http://bit.ly/neo4jssis&lt;/a&gt;&lt;/p&gt;

</description>
      <category>neo4j</category>
      <category>ssis</category>
    </item>
    <item>
      <title>Neo4j &amp; SSIS</title>
      <dc:creator>Charlotte Skardon 🏳️‍⚧️</dc:creator>
      <pubDate>Tue, 09 Jul 2019 13:53:43 +0000</pubDate>
      <link>https://dev.to/cskardon/neo4j-ssis-1bpg</link>
      <guid>https://dev.to/cskardon/neo4j-ssis-1bpg</guid>
      <description>&lt;p&gt;Neo4j and SSIS are awkward bedfellows – SSIS is Microsoft and has connectors to a plethora of database and technologies using ODBC, Web etc, and Neo4j is written in Java which provides a JDBC connection. SSIS however, does &lt;em&gt;not&lt;/em&gt; work with JDBC.&lt;/p&gt;

&lt;h1&gt;
  
  
  badtimes
&lt;/h1&gt;

&lt;p&gt;Some of the clients I’ve worked with like using SSIS – (some don’t), and value their 20+ years of using a piece of technology, and want to leverage it with new technologies. Nothing says &lt;em&gt;expensive&lt;/em&gt; like having to learn a new database &lt;em&gt;and&lt;/em&gt; a new ETL tool.&lt;/p&gt;

&lt;p&gt;So today I’d like to introduce you to the beta (maybe alpha) version of the Neo4j Connector for SSIS. It uses &lt;strong&gt;bolt&lt;/strong&gt; to securely connect to your Neo4j instance and call Cypher against it.&lt;/p&gt;

&lt;p&gt;Version 1 beta features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Neo4j Connection Manager – manages the connection to the database, and securely &lt;em&gt;encrypts&lt;/em&gt; your password (and that is &lt;em&gt;actual&lt;/em&gt; encryption) making it safe for you to store. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7AbsdSMi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7AbsdSMi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-2.png" alt="" width="872" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execute Cypher Task – Allows you to execute a piece of Cypher on a Neo4j instance as part of a Control Flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0DPwZxsX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0DPwZxsX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image.png" alt="" width="817" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execute Cypher Destination – Allows you to execute Cypher against a Neo4j instance as part of a Data Flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mgfeGZSc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-1-1024x468.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mgfeGZSc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://xclave.co.uk/wp-content/uploads/2019/07/image-1-1024x468.png" alt="" width="880" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Both the above pictures show the basic syntax highlighting as well&lt;/li&gt;
&lt;li&gt;Works with SSIS 2016, 2017 and 2019 (CTP 3)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do you want to try it? You need the appropriate installer, there are 6 flavours (6!!), if you’re installing on a Server – you’ll probably want the x64 version of the Server version. What? I know – not that clear. If you’re installing on a SQL Server 2016 instance, use the SQL 2016 x64 installer.&lt;/p&gt;

&lt;p&gt;To use on a local designer (VS 2017 or 2019) you’ll want the x86 SQL 2017 version – As the integration services addin for VS 2019 still uses the 2017 install locations.&lt;/p&gt;

&lt;p&gt;Please go to here: &lt;a href="http://anabranch.co.uk/Projects/Neo4jSsis"&gt;http://anabranch.co.uk/Projects/Neo4jSsis&lt;/a&gt; to get a link via email!&lt;/p&gt;

&lt;p&gt;Give me feedback and I’ll put more posts up on how to use some of the features shortly!&lt;/p&gt;

</description>
      <category>neo4j</category>
      <category>ssis</category>
    </item>
    <item>
      <title>Actually using the new DataConnector for PowerBI</title>
      <dc:creator>Charlotte Skardon 🏳️‍⚧️</dc:creator>
      <pubDate>Wed, 06 Feb 2019 10:45:50 +0000</pubDate>
      <link>https://dev.to/cskardon/actually-using-the-new-dataconnector-for-powerbi-2k1g</link>
      <guid>https://dev.to/cskardon/actually-using-the-new-dataconnector-for-powerbi-2k1g</guid>
      <description>&lt;p&gt;After I’d written it – I realised my last post was perhaps not the most useful for those who really don’t care about the &lt;em&gt;how&lt;/em&gt; but want to know &lt;em&gt;what&lt;/em&gt; to do to use it. So this will follow the same deal as with the last post (over a year and a half ago!! WOW!).&lt;/p&gt;

&lt;p&gt;Video version below if you want it:&lt;/p&gt;

&lt;h2&gt;
  
  
  The Setup Steps
&lt;/h2&gt;

&lt;p&gt;First – we’ve got to install PowerBI – now, I didn’t sign up for an account, but downloaded it from the &lt;a href="https://powerbi.microsoft.com/en-us/get-started/" rel="noopener noreferrer"&gt;PowerBI website&lt;/a&gt;, and installing was simple and quick.&lt;/p&gt;

&lt;p&gt;We also need to have Neo4j running, and you can use Community &lt;em&gt;or&lt;/em&gt; Enterprise, it matters not – and we’ll want to put the ‘Movies’ dataset in there, so run your instance, and execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:play movies
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Add the Data Connector to Power BI
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;First – download the connector from the releases page (or build it yourself in VS) – you want the &lt;code&gt;Neo4j.mez&lt;/code&gt; file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Version 1: &lt;a href="https://github.com/cskardon/Neo4jDataConnectorForPowerBi/releases/tag/1.0.0" rel="noopener noreferrer"&gt;https://github.com/cskardon/Neo4jDataConnectorForPowerBi/releases/tag/1.0.0&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;PowerBI looks for custom connectors in the &lt;code&gt;&amp;lt;USER&amp;gt;\Documents\Power BI Desktop\Custom Connectors&lt;/code&gt; folder, which if it doesn’t exist – you’ll need to create. Once you have that folder, copy the &lt;code&gt;Neo4j.mez&lt;/code&gt; connector there.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/www.xclave.co.uk/wp-content/uploads/2019/02/image-2.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi1.wp.com%2Fwww.xclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage_thumb.png%3Fw%3D525" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Nearly there – we just need to allow PowerBI to load the connector now – so, start up PowerBI and go to the Options dialog:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/www.xclave.co.uk/wp-content/uploads/2019/02/image-3.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi0.wp.com%2Fwww.xclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage_thumb-1.png%3Fw%3D525" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once there, select the ‘Security’ option, and then under the Data Extensions header select the option allowing you to load any extension without validation or warning:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i1.wp.com/www.xclave.co.uk/wp-content/uploads/2019/02/image-4.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi1.wp.com%2Fwww.xclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage_thumb-2.png%3Fw%3D525" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll have to restart PowerBI to get the connector to be picked up – so go ahead and do that now!&lt;/p&gt;

&lt;h2&gt;
  
  
  Lets Get Some Data!
&lt;/h2&gt;

&lt;p&gt;Now – I know a lot of you will have been excited by the Pie Chart from the last post – now you can create your own!&lt;/p&gt;

&lt;p&gt;With a new instance of PowerBI running, let’s select ‘Get Data’&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i2.wp.com/www.xclave.co.uk/wp-content/uploads/2019/02/image-5.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi1.wp.com%2Fwww.xclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage_thumb-3.png%3Fw%3D525" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can now either search for ‘Neo4j’ or look in the ‘Database’ types:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-6.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select &lt;code&gt;Neo4j&lt;/code&gt;then press ‘Connect’ – aaaaand a warning!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-7.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read it, ignore it – it’s up to you – but this is just to let you know that it’s still in Beta (I mean it’s only had one release so far!) Continue if you’re happy to.&lt;/p&gt;

&lt;p&gt;Now you’re given the boxes to enter your Cypher and connection information – the text box for the Cypher field is a single line (ugh) – so if it’s a complicated query – you’re probably best of writing it in Sublime or similar (maybe even &lt;em&gt;Notepad!?!&lt;/em&gt;). In this case, we can go simple:&lt;/p&gt;

&lt;p&gt;MATCH (m:Movie) RETURN m;&lt;/p&gt;

&lt;p&gt;Now, the other settings, if you’re running default settings – you can leave these, but obviously if you need to connect to &lt;code&gt;https&lt;/code&gt; instead of &lt;code&gt;http&lt;/code&gt; change it in the &lt;code&gt;scheme&lt;/code&gt; setting. I’ve filled in my display with the defaults:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-8.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you press OK, you get the Login dialog, _if _you are anonymously connecting, then select Anonymous, else – fill in your username / password.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-9.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Press ‘Connect’, and PowerBI will connect to your DB and return you back a list of ‘Record’:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-10-1024x774.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-10-1024x774.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’ll want to ‘Edit’ this, so press ‘Edit’!&lt;/p&gt;

&lt;p&gt;When the Power Query Editor opens press the expand column button at the top of the ‘m’ column:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-12-1024x515.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-12-1024x515.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ooooooh, ‘tagline’, ‘title’ and ‘released’ — our movie properties! For this, I would turn off the ‘use original column name as prefix’ checkbox, leave them all selected and press OK.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-13-1024x347.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-13-1024x347.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data!!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, let’s ‘Close &amp;amp; Apply’ our query – NB – if you look in the ‘Applied Steps’ section, you can see we only have 2 steps, ‘Source’ and ‘Expanded m’&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-14.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whilst PowerBI applies it just think of the Pie charts that lie ahead of us:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-15.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When that dialog disappears, we’re good to go! On the right you’ll see a ‘Fields’ section, and you should see something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-16.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, the moment we’ve all waited for…&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s Pie Chart
&lt;/h2&gt;

&lt;p&gt;Select ‘Pie Chart’ from the Visualizations section:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-17.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once it’s in your display – select it and drag the ‘released’ field from the &lt;code&gt;Query1&lt;/code&gt; to the ‘details’ field, and then title to the ‘values’ field:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-18.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-18.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your chart should look something like this now:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-19.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So let’s max size it, and mouse over it, now we can see:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-20.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-20.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But we can also drag ‘title’ on to the Tooltips field like so to get the First (or last) movie in that group:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-21.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fxclave.co.uk%2Fwp-content%2Fuploads%2F2019%2F02%2Fimage-21.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What does a query look like under the covers?
&lt;/h2&gt;

&lt;p&gt;Some of us like visual, some like code, the last time we tried this – our query was 20 lines long – our new query though – that’s just 5!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let Source = Neo4j.ExecuteCypher("MATCH (m:Movie) RETURN m;", "http", "localhost", 7474), #"Expanded m" = Table.ExpandRecordColumn(Source, "m", {"tagline", "title", "released"}, {"tagline", "title", "released"})in #"Expanded m"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which is much nicer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hey hey! It’s Beta!
&lt;/h2&gt;

&lt;p&gt;The Data Connector approach gives a much nicer way to query the database, it strips out a lot of the code we have to write, and hopefully makes the querying easier.&lt;/p&gt;

&lt;p&gt;BUT – I am &lt;em&gt;not&lt;/em&gt; a PowerBI expert – is this the right way to do this? Are there improvements? Some hardcoded queries we should have there? Let me know – do a PR – it’s all good!&lt;/p&gt;

</description>
      <category>uncategorised</category>
      <category>neo4j</category>
      <category>powerbi</category>
    </item>
  </channel>
</rss>
