« first day (659 days earlier)      last day (4211 days later) » 
04:00 - 18:0018:00 - 23:00

JNK
6:19 PM
@CadeRoux @ConcernedOfTunbridgeWells I have a DW Question a bit too general for the site I think
 
@JNK shoot
 
JNK
Is there a best practice regarding design of a control DB/table/process for ETL to populate a warehouse?
or like a whitepaper somewhere on it?
We are pulling data from a transactional system
I have the DW designed, and think I know how I will be pulling the data
but converting the trans tables to the DW format will be done most likely in stored procs
the dept head is implying I need a control process around the migration from the "local" copy of the trans tables to the DW tables
does that make any sense?
 
There might be something in Kimball. The tiny DW I just built has just one feed. I made a LOAD dimension which has the details of the file loaded. Yes, you probably should have an id in the fact table which corresponds to the load the load has the details of the date/time/package/filename etc.
If you delete some facts and reload, the old load dim is there, but no facts actually attached to it.
It's a pretty standard thing, I think.
 
JNK
ok
I am new to this
and the only person who has experience at my company is the department head, who worked with it years ago
 
In your case, perhaps there aren't files, but there has to be some kind of batching from the OLTP tables, even if it's just a run number.
Too bad it's been a couple years since I was doing this every day. I found my Perl was rusty as well. But I ended up getting my Perl script to work on both Windows and Ubuntu unchanged, putting data in SQL Server or Azure via DBI::ODBC with only DSN changes. All the real work of the ETL was in pure T-SQL, though.
 
6:36 PM
I have a quick sql server install question.
 
fire
 
Can you force it to install all files on a specific drive? I have a c drive with very limited space so I am trying to install everything on a separate drive. I have changed the path in the install process to use the other drive but it still wants to install some files on the c drive.
 
my understanding is that it'll put everything on the drive that you specify, other than the shared components
 
That was mine too, but it is not doing that. obviously I am missing something
 
where in the installer process are you setting the install path?
 
6:49 PM
everything is running on from the drive I want to install on
 
but did you actually change the install path, or just the data paths?
 
I changed the install paths
 
and sqlsrvr.exe is running from C:\?
 
from d:
 
so it seems like it worked --- i think it just defaults to tossing shared components onto C:\
(e.g. SSMS/VS shared components)
 
7:00 PM
I changed the shared components path to d:, then I changed the default instance path to d: and yet it still wants to install stuff on c:
 
fascinating
 
JNK
@CadeRoux Perfect, thanks for the info. Sorry for late response, got called to a meeting.
 
@swasheck more like frustrating. I have a c drive with 2.5gb free and a full install of sql server wants 3.5 gb on my c drive
 
@bluefeet personal or work?
 
work test environment for us to play with
i have decided to not to a full install only the db side of it to get it to work
 
7:03 PM
that's a workaround
 
no analysis or reporting services
 
how much was it trying to install onto C:?
 
7:16 PM
@JNK No problem.
 
JNK
7:33 PM
@CadeRoux is there a standard name for that table or process?
 
7:46 PM
@JNK Audit
Assign Audit Dimension Key
As we describe in Chapter 9, an enterprise class data warehouse should include an audit key on each fact row. The audit key points to an audit dimension that describes the characteristics of the load, including timings and measures of data quality.
The audit dimension and auditing subsystem can be complex, consist of multiple tables, and contain many measures of data quality. At its simplest, the audit subsystem should contain at least one audit dimension table that captures the most basic information. That simple auditing system design would insert one row into t
 
@AaronBertrand I was referring to this stackoverflow.com/questions/13039528/… I would have just said "a query". One-lined-ness or not, somewhat arbitrary
 
@JNK From The Data Warehouse Lifecycle Toolkit, Second Edition
 
JNK
@CadeRoux awesome, thanks!
 
@JNK I think Kimball identified 34 subsystems in the data warehouse.
@JNK What Kimball talks about there is basically exactly what we did at Capital One. Looking at my new one from scratch, I probably need to add some things about duration and rows loaded (vs rows expected to be loaded from the header, which I am storing).
 
8:01 PM
@JNK Could you try and elaborate on what your PHB means?
 
JNK
@ConcernedOfTunbridgeWells if I could I would know the answer
She seemed concerned about the "control process" which is what she kept calling it
 
@JNK You will need a load controller process that manages the individual ETL steps and an audit table to keep track of what it did.
 
JNK
my other DW process which is smaller scale and sort of seat of the pants just uses a script
OK thats what she is after
 
Do you think she means tracking the ETL or providing an audit trail for row counts and suchlike?
 
JNK
I think that is what she meant
 
8:02 PM
Either, or or both?
 
JNK
both
Auditing and QC
so basically a logging table
 
SSIS will log stuff, so you can get quite a lot from that in terms of load progress.
 
JNK
what if i dont want to use SSIS
it may be overkill for us
I will have one or two source DBs
all the source data is in SQL
 
Then it gets kind of tricky, because you run the rusk of rolling back your audit table entries if the transaction goes tits up.
 
JNK
ah got you
 
8:04 PM
So it's best to use SSIS for load control if you can, because it can do the logging through a separate connection. The only way to guarantee robust log entries within SQL is to make a CLR sproc that does the logging through a separate connection that doesn't participate in the transaction. IIRC CLR sprocs are verboten in your environment.
You can use SSIS to wrap the sprocs if you want to do it with sprocs. You're not obliged to use data flow tasks in SSIS packages.
 
JNK
ok
 
I've done quite a lot of work with SSIS where all the hard work was done in stored procedures and SSIS was just used for load control and logging. It's quite common to do things that way.
 
JNK
CLR would actually be usable for this project
but SSIS seems the way to go
So this is a project for the new position im moving towards
and the developers have access to all this stuff
 
You can build a simple CLR sproc that opens a separate connection to the database, records a log entry and commits the transaction without having to be involved with the transaction the ETL code is running in.
You can't do that from SQL in SQL Server.
Audit logging architecture 101:
i. Separate the act of recording the control totals (sums or counts) from managing the controls.
(i.e. record a count or sum at the appropriate point in the ETL, but don't try to actually implement the control in the same place)
Each control point can have a unique code.
Then you can implement the actual controls through metadata (control point A - Control point B should = 0)
These can be as complex as you want, but they should be separate from the ETL code.
 
JNK
ok
so you check rows at each level
or whatever checks you are implementing
 
8:10 PM
Yes, the control will be a sum or a row count. For example, you might check the row count in a source data file and then the row count of what was inserted into a staging area.
 
JNK
But at a high level, I need to record an audit trail, and I need a table or dimension that records stats for each load/etl cycle
and preferably the steps involved will be in the control DB as well
 
If you have suspense areas where records that fail data validation checks, this is an even bigger win, because you can implement controls like (Source - suspense - destination should = 0)
 
JNK
this is actually pretty simple data
and most of it is pre-validated
It's getting populated by a pretty robust service
 
The control DB can have the metadata to configure the controls. All the ETL has to do is to record a control point for that batch with the appropriate total. The control system can then implement the contols as expressions based on the totals in various appropriate control points.
 
JNK
I'm just flattening the existing data, breaking out dimensions, and snapshotting it so we have historical perspecticve
 
8:13 PM
@JNK If you don't control the service then you shouldn't trust it. Remember, it's being maintained by someone who isn't responsible for your SLA.
 
JNK
Actually the person responsible for the service is the one leading the DW project too
I'm just doing the work
 
Ergo you should assume they secretly hate you and want to get you fired. If the shit hits the fan then this could be quite close to the truth.
 
JNK
lol
I never get tired of your pessimistic worldview when it comes to work
 
If it's not being maintained by someone who's on the hook for your SLA or evaluation then it should be treated as untrusted code.
 
JNK
ok
 
8:15 PM
Just economic theory. Their interests will be in conflict with yours if something goes wrong, so if you have no audit trail it's your word against theirs.
 
JNK
yep makes perfect sense
 
Their is nothing quite like a robust audit trail to shut down office politics.
I don't give a shit whether the business wants it. I f-ing well want it. Sod the business.
Remember, if you're going to get involved in a knife fight, it's best to bring a machine gun if at all possible.
Interestingly, I've just done a code review of an ETL process based on a framework built by a large consultancy firm that you've probably heard of, and the framework itself violates a really fundamental principle of good audit control design.
(i.e. measure what you're acutally auditing, rather than something that should be the same if the process works correctly).
 
JNK
in what way?
can you give a non-specific example?
 
@JNK The way it works is to measure the rows leaving a step in the data flow, rather than the rows inserted in the table after the process has finished running.
 
JNK
oh ok
 
8:22 PM
So, it can fail silently if those get out of sync somehow.
It's not independent of the process it's measuring.
 
JNK
it gives a false sense of security because no error is generated if the whole step fails or breaks
 
TL;DR, Today I got to tell a consultancy firm that its IP is fundamentally flawed.
@JNK Correct.
 
@ConcernedOfTunbridgeWells solid work
 
@swasheck Whether they actually listen is a whole different story.
 
you said your piece
 
8:25 PM
@swasheck I did. Take a horse to water and all that.
 
Flawed IP? You mean like 10.0.0.257 ?
 
192.168.1.1
 
@ypercube Intellectual property
 
Sorry, it's my silly hour
 
so ...
 
8:27 PM
@ypercube Well, you're in the right place. To be fair, the PM just bought me 3 pints of cider on his expense account, so it's not all bad.
 
today i learned how to boot Win8 from a VHD
@ConcernedOfTunbridgeWells hush booze?
 
@swasheck Just work drinkies. He said that if the project gets delivered he'll promote it within the company and take all the credit.
My recommended corrective action was to modify the framework.
 
@ConcernedOfTunbridgeWells par for the course, eh?
 
Someone once said words to the effect of:
'It's amazing what you can achieve if you don't mind who takes the credit.'
 
That reminds of a commander in the army. All you had to do to get a few days leave was to get him a bottle of whiskey.
 
8:29 PM
@ConcernedOfTunbridgeWells true
@ypercube good whiskey ... or just any whiskey?
 
Anyway I'd better nip out and get some dinner.
 
I don't think he minded.
 
8:52 PM
@RichardTheKiwi well, I meant two things: (1) it could be written without a cursor (e.g. "a query") and (2) quite a simple query at that (hence the one line). While yes you could write a very complex query on one line, most of us don't do that.
@RichardTheKiwi are we going to start coming into chat to nit-pick each other's comments? That's ok, I just want to be prepared.
 
9:09 PM
i guess that's better here than on the site itself. however, your point is well-taken
is it odd that my wife is FB friends with an ex-girlfriend and they're planning on our families getting together on an upcoming vacation?
 
@swasheck not at all!
 
@AaronBertrand ok. good to know.
 
Well I guess it depends - did you kill any of your ex-girlfriend's family?
If not, it should be ok.
 
@swasheck Is she hot?
<joking>
 
@CadeRoux which one?
@AaronBertrand no. and, ok.
 
9:18 PM
TSQL management question, who feels like answering something obtuse?
 
that depends
what happens if you don't like my answer
 
@AaronBertrand WW3?
 
9:43 PM
well, have to go
 
10:40 PM
@AaronBertrand No, not really looking to do that. Just that it strikes me as funny, the phrasing of that comment. I don't EVER write a query on a single line.. At the least, I would break SELECT and FROM into two lines.
 
04:00 - 18:0018:00 - 23:00

« first day (659 days earlier)      last day (4211 days later) »