1. SSIS
• SSIS script
components
for JSON data
(JIRA)
• SSIS script task
for XML data
(Netsuite)
• SSIS script task
to generate
SSIS package
SSAS
• SSIS script task
to amend/
migrate SSAS
OLAP Cube or
process it or
generate a new
one with input
parameters
(template)
Tableau
• C# console
application or
SQL CLR stored
procedure to
generate
Tableau Data
Extract file.
• C# script to
bulk amend/
migrate
Tableau
Workbooks
Insight
• C# console
application to
bulk amend/
migrate Insight
object
(dashboards,
reports, data
dictionaries)
• Publish Insight
objects using
REST API
SQL CLR
• CLR stored
procedure for
parallel
aggregation
• Various text
processing
functions
including using
fuzzy match
algorithm
C# applications in Business Intelligence Projects
2. ETL JSON data
•In SSIS script task read user datetime
parameters to set a time period
•Set a base URL (string)
•Create HttpWebRequest object
•Set request attributes - ContentType,
Method, CookieContainer, user
credentials
•Autenticate and get cookies
•Make a request with cookies obtained on
the previous step
•Create Json serializer object and read the
response
•Create Datatable and load the serialized
object into it
•Write data to SQL Server using bulkCopy
ETL XML data
• Create a saved search in Netsuite
•Develop and deploy RESTlets script to
extract Netsuite data with the saved
search
•In SSIS script components create
myHttpWebRequest
•Add headers with authentication
•Make request, load result into
XMLDocument
•Add rows to Output with
SelectSingleNode NodeValue
Generate SSIS packages
•Can be used when:
•a lot of SSIS packages need to be
developed
•source system change frequently
•some changes need to be applied to all
existing SSIS packages
•using Microsoft.SqlServer.Dts library
•using SqlConnection object's GetSchema
method
•Dynamic ETL: In SSIS script task check if
source table changed
•If a source table changed then load SSIS
package deployed on the server within a
project into object
•Make transformation
•Deploy back on the server
•Run updated SSIS package
C# in SQL Server Integration Service
3. Generate SSAS OLAP cube
•using Analysis Management Objects
(AMO)
•Can be used to generate and process
dynamically OLAP cubes via SSIS script
task
ETL XML data
• Create Server object
•Create Database object
•Create Data Source View
•Create Dimensions
•Create Cube
•Process Cube
Can be used
•when a lot of OLAP cubes need to be
created
•for bulk OLAP cubes
migration/transformation/restructuring
projects
•a lot of development time when a lot of
custom
parameters/calculations/properties need
to be implemented
C# in SQL Server Analysis Service
4. Generate TDE file
• Using TDE files as source
significantly improves Tableau
performance
• Tableau provides .Net library
• Script can be used as a standalone
console application run by SSIS / SQL
Job or as a SQL CLR assembly and
run by stored procedure within t-
SQL code
Amend /generate Tableau workbook
TWB file
• Tableau Workbook is an XML file.
• It can be alter like any other XML file
using XMLDocument object.
• Can be used when a large number of
Tableau workbook files need to be
amended
• Also can be used to dynamically
generate or alter Tableau elements
like calculations that can difficult to
parametrise via user interface.
C# in Tableau
5. Amend Insight reports
• All Access Insight objects are XML files.
• REST API is available to manipulate them
• I developed a console application in C# to implement
changes programmatically on big number of Insight
objects.
• For REST actions I use RestSharp library.
• Make request to authenticate
• Parse response and store token
• Make GET request to download
reports/dashboards/other objects with token
• Load response into XMLDocument object
• Make transformation using XMLNode
• Upload transformed objects via PUT request
Generate Insight objects
• Can be used when:
• A lot of Insight objects need to be developed
• Massive changes need to be applied to all existing SSIS
packages
• Methods available at the moment:
• Add new/change existing calculated field
• Add new/change existing filter
• Add new/change existing reports’ property
C# in Access Insight