[ Back to Sprockit home page ]
Sprockit's process execution is controlled using resource dependency information stored in tables. This information can be used for other purposes, including the automation of ETL pipeline documentation.
sprockitviz is a Windows command-line application that uses Sprockit dependency metadata and Graphviz1) to generate browseable, click-to-explore pipeline diagrams. sprockitviz is free, open-source and can be downloaded from GitHub as C# source code or a compiled .exe application.
The diagram on the right shows a screenshot of sprockitviz output for the subgraph around Process I in the Sprockit tutorial. Process I is the centre of this subgraph so appears in gold – clicking on another node would take you to the subgraph centred on that one. Processes E and I have a heavier outline, indicating that they are are both executable processes. Hovering over process I has caused a tooltip to display, showing its fully-qualified process name and ID, its type and its average duration.
To see this example in action, have a look at the set of output files generated from the Sprockit tutorial's dependency metadata.
Output .svg files must be viewed in a web browser to enable embedded hyperlink and tooltip functionality to be used.
Update sprockitviz.exe.config:
Make sure that the value of graphvizAppFolder matches the location of your Graphviz executables (the folder is the Graphviz subdirectory where you find the dot.exe application):
<FireFive.PipelineVisualiser.SprockitViz graphvizAppFolder="C:\Program Files (x86)\Graphviz2.38\bin"
Add the details of your Sprockit instance in a new <Instance> node inside <SprockitInstances>:
<Instance alias="MySprockitInstance" connectionString="Server=MyDbServer;Database=SprockitDb;Trusted_Connection=yes;" outputFolder="C:\tmp\sprockitviz" maxWidth="4" maxHeight="6" subgraphRadius="1" > </Instance>
Other configuration options are available but this is enough to get you started. outputFolder is the name of the folder where you want sprockitviz to write its output, and it must exist.
Open a command prompt and run sprockitviz, specifying the value of alias as a parameter (case-sensitive):
sprockitviz.exe MySprockitInstance
When sprockitviz finishes executing, you will find a collection of .svg files in the output folder you configured in the outputFolder option. This includes:
Pipeline.svg – a file containing your entire ETL pipeline graph. This is often of limited use because the graph is simply too big to make sense of (and may occasionally be too big even for Graphviz to handle).
Each object file shows the central object, filled in gold, surrounded by objects in its immediate neighbourhood. sprockitviz attempts to determine a useful neighbourhood size by trying to make sure that the resulting graph is not too big, although you can choose to influence this behaviour yourself if you wish.
Each node in the graph is displayed using the following conventions:
You can configure database-specific text colours for SQL objects if you wish.
The notion of an object's neighbourhood is underpinned by the concept of a subgraph's radius:
sprockitviz tests greater subgraph radii to find the largest neighbourhood for an object that can be contained within maxWidth and maxHeight (as specified in sprockitviz.exe.config).
subgraphRadius in sprockitviz.exe.config. This has the effect of accelerating sprockitviz execution, because other radii are no longer tested when building object neighbourhoods.
Note that the only complete set of dependency information present in a subgraph is that relating to the central (gold-filled) node. Other nodes in a subgraph may show multiple dependencies but these are not necessarily complete. To gain an accurate complete view of dependencies around an object you must consult the subgraph with that object at its centre.
You're pretty much there, but you could:
minWidth, minHeight and subgraphRadius in sprockit.exe.config to see what gives you the best set of outputs;
<dbColors> node to your Sprockit <Instance> to show different databases' objects in different text colours.