T-SQL Tuesday #84: Becoming a Speaker

I’m going to take part in T-SQL Tuesday this month. Why? Well, because I’m now starting to venture into speaking on beginner topics and lessons learned as I perfect my technical chops and learn new skills. This month, the subject is on new speakers, and the veterans who have advice for those of us starting out.

tsql2sday

Talk #1 is already happening

Funny thing is…I’m already going to make my speaking debut on November 15, giving the microsession at our Raleigh-Durham PASS User Group. I’ll be discussing the TRY conversion functions (TRY_CAST, TRY_CONVERT, TRY_PARSE) over a 10-15 time frame. The talk was inspired by a case at my job involving error reporting, and some manually entered date values that led to exceptions in the original procedures. For this talk, I’ll be using some basic examples to explain each one. How CAST and CONVERT throw exceptions, while TRY_CAST and TRY_CONVERT avoid it with NULL instead. How PARSE is something most people don’t touch for good reason. It should be interesting to start out, and I’ve received some good advice from a few professionals before I rehearse. It does help that I’ll be working on rehearsal with partners as well for critiques.

Talk #2 is a longer talk – a Saturday submission

This March is SQL Saturday Raleigh, and it’s not a secret to some of the members that I’m strongly considering throwing my hat in the ring for a slot this year. I’ve been considering two topics to begin. One is about merging Python and T-SQL together. Of course, I’m picking up R and the Revolution Analytics acquisition has led to SQL and R beginning a beautiful relationship. However, Python is still a popular enough language that for the longest time I struggled to consolidate with SQL. I want to investigate this further to see if this is possible as a data tool.

Another topic that has gotten some traction is about moving from analyst to developer. I started my career as an analyst, then became a Database & BI Developer, and now I’m in a bit of a hybrid role. My view is that there are plenty of analysts who queried all the time, like myself, who might want to work more in the development space. Maybe from there someone will want to be a DBA, or a data scientist (CHEERS). So I’m looking into the high level tools if an analyst goes from having read permissions to having write & execute as well, and might have to use Reporting & Integration Services more often. It’s experience that I have been through, and now I think I can touch on this experience again in my current full-time role.

How does this get moving?

It is partially spectrum-related, but I am unsure where to start and how to approach someone for advice directly. A general blog post with references sounds like a perfect place to begin, and I’d like to see where I can go, and how some veterans learned their speaking skills. I’m nervous of talking about a subject that I don’t know much on, as I’ve had those over-my-head moments in front of fellow professionals. Now I have to ask myself, and others, how to target the audience and let everyone know that I’m impersonating an expert. Then there’s the matter of adjusting presentations and turning feedback into something constructive for another technical topic (or even the same one, refined for a different crowd).

I read Steve Jones’ post for this month as I was writing, and it made me think of one of my esteemed colleagues (yet another Steve who is part of PASS, affectionately known as SQL Steve in our company’s department) who did a series of weekly tips and tricks for our team, which included some practical examples we could use internally. It reflected the way of getting started with a small group. The other aspect that stuck out to me from the post was this:

[Your first technical speaking opportunity] can be hard as you need to be open to debate, accept you might get some things wrong, and that you might learn something. There is stress in trying to come across as an expert but I’d rather you try to teach something, with the idea that this is your understanding of a topic, but you are open to admitting you might be wrong if someone else knows more.

I don’t consider myself an expert at all. Intermediate in some areas, beginner in a few others, and court jester in the last one or two. It seems that a key for my microsession will be that experts in the house will have critiques, but it does not mean that they believe I’m ignorant here. I’ll have to keep my skin tough and stay aware that there will always be learning. The interaction and discussion will allow everyone to learn and explain how they came to their conclusions.

I’m excited about reading some of the other posts that are in the very long comment section, and what advice can be gleaned. Let me know that I can reach out to you (as Andy did on his host post), and I’ll do just that.

Wide World Importers & AdventureWorks – Meet the Senior-Manager Boss

Well, I should first note that I intended to blog more than I have, but was struggling to find the right topics that didn’t involve any ‘woe is me’ complaints struggles. However, then I found inspiration in talking to others about steps when I got started in trying to work on my technical skills in my time away from work (mostly T-SQL and some Python would be covered), and how to cover the basics for a lot of people looking to get started.

One situation I run into more frequently than I previously wanted to admit is being unable to explain the most basic of concepts after I do them. Part of it, as I came to realize, was not allowing myself to practice what I learned outside of the office anymore. By the end of last year, I figured out that I needed to actually use a home database if I was going to perfect my technical chops, let alone speak on a subject in front of an audience where examples are crucial. So my first thought is…what about the constructs of Microsoft’s own sample databases? There’s a new one for 2016, and I had to get it, and post some rudimentary thoughts.

Get the database file, of course

I figured this was a time to trace my steps and add my first database in my shiny new Developer edition instance. So where can you find Wide World Importers? Here it is on the shiny GitHub page. There is both a transaction backup file and an analytical backup file (WideWorldImportersDW-Full.bak). I downloaded both, and moved the extended backup files to my local backup folder. In my case the extension was Microsoft SQL Server\MSSQL13.[instance name]\MSSQL\Backup. My thought is that it’s an easier spot to keep the originals. I read that some folks advised to place it directly in the C: drive, however, and there may be a good reason for me to do so in the future.

So within SQL Server Management Studio, I decided to use the commands rather than the RESTORE DATABASE command. I am not at all DBA level (show compassion for we little developers, peeps), but pretended to be one by asking to restore a database. There are instructions on the Microsoft site, but I’ve got pictures for how I followed along (also because I couldn’t get video to happen).

WWImporters - Restore Database
Yes, the Restore Database command was the droid I was looking for in this particular instance.

Once at the backup screen, I got the database loaded pretty quickly. The key is looking for a file after clicking the Device radio button. Also, the backup folder appeared instantly when I clicked Add and it allowed me to easily choose the database.

WWImporters - Select Device.jpg

Well, hitting okay a bunch of time allowed for a very quick “restore” of a database I never had to start. Then I was able to do the same for the DW/analytical version, and I even put AdventureWorks2014 in there solely to be experimental. Had no problems with a 2014 database brought into a 2016 system, in case some of you were like me some time ago and thought compatibility issues could occur if you don’t set it to 2016 in advance.

I should also note that I used the -full version because I have Developer edition, and -full works on that and everything Enterprise. If you don’t have one of those editions, you’ll need to stick with -standard.

Is Wide World Importers special in any way?

It’s hard for me to say while toying around with the DB so far. The business has changed slightly, including more tables based on delivery locations. However, some of the big differences to me are more about the DB practices and configuration for new SQL Server 2016 features.

I immediately noticed many more system-versioned tables (temporal, maybe?) in this edition. Those are the clocks in the corner of each table. maximized the next level, and there was a history archive. Pretty cool that it’s finally come over this way.

WWImporters - System Version Tables
What’s up with the clocks? Now they can find out where I messed around and I can’t cover my tracks anymore?

Even some of the code itself is more detailed and also slightly different in format, in the way lines are split up. I do still notice cursors, which will show others how to do it…but I wonder if all those folks who convinced me of the badness of cursors would take issue. The views are pretty simplistic to say the least, and may have some use considering they are concentrated to three areas.

The analytical database this time uses dimension, fact, and integration (staging tables) as the prefixes. I think it’s an easier way to teach folks about the data warehouse schema by using these tables. The schema is also set up that way, with fact tables having many a foreign key and the dimensions having identities across the board that link accurately. I even saw a proc called GetLastETLCutoffTime, which gave me ideas that I can bring to my day job for some of what we run during our off hours.

AdventureWorks won’t be updated any more, but it really feels more so like WideWorldImporters is a promotion of sorts, with more integrated features and better key systems. The documentation is about the same, but the data itself is improved. For people using this edition longer than I have, fresh data is a good thing, I’m sure.

Hold up…weren’t you going to mention more about 2016 features?

Oh yeah…those 2016 features. I notice that I haven’t yet tried to stretch the database, but it appears this one is configured so that it can be done. Same goes with R Services, which I’ve only scratched the surface on when using a release candidate.

I’ll have to go into more detail in a second part once I play around with these features, and maybe do a comparison against other public databases that are SQL Server compliant. Always learning, you know.