Quantcast
Channel: Informatics @ Northwestern Weblog » ETL Assistant
Viewing all articles
Browse latest Browse all 4

ETL Assistant – Management Web UI Gallery

$
0
0

When we started putting ETL Assistant together it became immediately clear that we needed a UI.  Something to help us get the job done, but something that didn’t get in the way.  We threw together a quick ASP.NET MVC 3 web app that mostly gets the job done.

Below you’ll find some UI samples from the web management console. This should help express a bit more of where we’ve gone and how the whole application functions. This is just to facilitate the configuration “stuff” we toss over to the SSIS package at runtime.

Couple of quick points here:

  1. This was my first MVC app. I was still thinking in webforms and it shows. A lot.
  2. Yes, we went with the Metro Win8 style UI
  3. I took these screenshots on a Macbook Pro with retina display and I rushed through posting them. Please ignore the visual artifacts from my over-compressing things, etc.
  4. This has evolved over time. Hindsight is 20/20 and if we were to start over from scratch this would probably look very different.

 

Jump to specific sections

 

Home & Global UI Elements


ui_home copyHome page
“Quick start,” high level stats, and recent items. We provide easy access to setting up new datasources and groups as well as adding tables to groups. This is a simple, wizard-like 3 step process. We also show some basic stats on the number of objects in the system. Yes – we really do use this for over 30,000+ tables across 30+ separate source systems.

ui_recent_itemsMenu Example
Categorized mini-mega-menu with recent items and common functions. Just a simple way for us to provide easier access to key functions while saving on screen real-estate. The items on the right provide quick access to recently used data sources, groups, or tables (specific to each menu) as well as faster access to “create” functionality.

ui_search_bar copySearch Bar
Inline global search with categorized results. The search system isn’t particularly smart, but it gets the job done and saves you some pain – otherwise you’d needed to “page” through lists of items.


Data Source Display & Editing


datasource_create_basicCreating – Basic settings
These are the basic connection settings, source/target schema settings, destination/staging filegroup settings, etc. required for ETL. The connection tester is here to help as well.

datasource_typesSelecting a Data Source Type
Data source type selection when creating / editing a data source. The data source selection defaults global behaviors so you don’t have to specify them for each and every data source (EX: “How do I query the source system catalog?”). We use OLEDB, so as long as you have the right driver and can configure the required settings it should pretty much work. Should…

datasource_create_advancedCreating – Advanced settings
More fun settings. You can override the global data source defaults here as well as set some other options to throttle performance or enable super-high-risk features like table definition synchronization (MSSQL ONLY!). That’s right… For the ultra bleeding edge, highly volatile systems we let you auto-synchronize your target table definition against source table structure using SMO.

datasource_conn_errorTesting a connection string
Determine your connectivity problems early on. We bubble up the underlying connection exception message if there’s an issue.

datasource_conn_successfulTesting a connection string
Green = good to go!

datasource_deail_basicDetail – Basic settings
Review all that stuff you set up earlier.

datasource_related_groupRelated Groups
Quick access to any “related” groups – groups which have tables that are bound to this data source. Just a simple helper to prevent forcing you to “hunt” for data. This, as with most tabs, is ajax-ified, so it only queries the system when this tab receives focus.

datasource_scheduled_tablesScheduled Tables
Quick access to any tables (specific to this data source) which are known to be scheduled. This is arrived at by looking at the related groups and then querying the MSSQL job setup.

Retrieve & Refresh Table Catalog


datasource_catalog_refreshRefresh table catalog
The UI allows for inline querying of the source system to detect any new/updated/removed tables

datasource_catalog_refresh_3Refresh table catalog – Result
Once the system polls the source database you get a simple set of counts of new/updated/removed tables. Clicking on these panels / boxes shows you a quick list of objects.

Table Display & Editing


table_detail_basicBasic Settings
Basic settings in display mode. Just like how the data source can override settings from the data source type defaults, the table can override settings set in the data source. Need to target a different schema or use a different staging database? No problem – just change things. This is particularly useful if your table requires a different full or incremental load query.

table_detail_basic_and_advancedBasic / Advanced Settings
Basic and advanced settings in display mode. We provide even more bells & whistles here. You can set your table to stage even on full load (helpful if you don’t want to wipe out your data during loads), specify behavior to override Nick Smith’s dynamic merge (aka “Honey Badger”), enable table structure synch via SMO (dangerous x1000), or have MSSQL message you if “critical” columns disappear or change in the data source. “Oh, they changed the data type on employee_id? Let me know!”

table_generate_sqlGenerate SQL
Generate table DDL. Another helper to simplify your life. This is embedded in a few places.

Groups Editing & Table Management


group_infoGroup Detail
Poor, neglected UI that displays simple group information (name, etc.) as well as the link to any scheduled instances of this group.

group_tablesScheduled Tables
Display the list of tables scheduled for this group. You can search for tables via partial name match (scoped to a data source) and then add them as “full” or “incremental” loads. This may also be adjusted within this UI. Scheduled tables may be removed or disabled / enabled from within this UI as well.

group_generate_sql_1 copyDDL – 1/3
We provide a “bulk” DDL generator – to generate DDL for all objects within selected group. The DDL process uses a custom class to reflect on source / destination objects and then uses “Smart Column” configuration to override specific types as required.

group_generate_sql_2 copyDDL – 2/3
Part way through generation of DDL for all objects within selected group

group_generate_sql_3 copyDDL – 3/3
Done generating DDL for all objects within selected group

group_generate_sql_4DDL – Final SQL
Result of “generate SQL” (DDL). This is just a subset of the output.

smart_columns_regex copyTable DDL Builder – “Smart Columns”
Override target data types by source system, data type, and column name (using regular expressions). Our philosophy is the data architect knows best. We let you specify replacement data types in several different ways.

SQL Server Jobs, Job History


job_stepsJob Steps
List job steps for a system job. For the lazy (me), this helps give me a quick way to see what’s going on with ETL Assistant-related jobs without jumping to Management Studio.

job_scheduleJob Schedule
Provide information on the job schedule for a specified job. Pulling apart those bitmasks is super fun for the whole family.

job_historyJob History
Display summary job history for instances of this job. How are we looking?

job_history_2Job History Detail
Display job history for a specific job. Expanded items use ajax (jquery + json) to pull in details as required. We only take what we need to survive.

Query Variables (QVars)


qvar_in_incrementalExample
Example of QVars in use for an incremental loading query. These are extremely handy for writing templates queries where you need to substitute values at ETL runtime. “Get me the latest timestamp for this table” and then replace that variable in the sql statement when we query the data source. There’s a lot more to this than we’re going to go into in a screenshot.

qvar_inline_drag_dropDrag / Drop
QVars support drag-and-drop from the QVar panel into specific destination panels. Hooray for jquery awesomeness!

qvar_inline_listExample – Data Source QVar
QVar panel displayed when editing a datasource or table. QVars shown are system-wide QVars, but then intelligently display “scoped” QVars appropriate / available to a specific datasource or table

qvar_list_datasourceData Source QVar List
List of datasource QVars. QVars may be defined or overridden by table as well if required


Viewing all articles
Browse latest Browse all 4

Latest Images

Trending Articles



Latest Images