First week of part-time work

So, I’ve now spent a week only working 4 hours a day instead of 8. It’s been pretty nice to not wake up to an alarm, start late, and finish my work on 2 PM. It’s given me more time for exercising, baking, and Warhammer painting, to name a few. I don’t know if I’m actually sleeping better, or my stomach feels any better, but it’s a much nicer state, mentally. Of course, I haven’t got as much done as I would during a normal week, but that’s the point. A week without video games has been good for me, too, though I couldn’t quite entirely escape it - my Eve Online corporation is moving home base and I needed to log in to move my ship or I would have lost a lot of stuff when the old station was given to another corporation.

Unfortunately, a lot of my part-time hours were chewed up by admin this week. Emails and Cherwell, our ticketing system. I won’t share everything I think about Cherwell, but I will say that sometimes the client is a little unresponsive and that can be frustrating, and since it was my week to allocate our teams’ tasks out, I spent a fair bit of time in the app.

The main project I worked on and completed this week was the update to the Yammer data import process. Microsoft seems to have silently deprecated the old API, so I’ve had to re-write our process to use the new one to get all new messages, tags, users, etc. I’m not the most comfortable with using APIs to get data but thankfully SQL, and the code my boss has written to call APIs, makes it relatively simple - just use a CLR function and you get back JSON, then use SQL Server’s handy OPEN_JSON and JSON_VALUE functions.

Another thing I’m happy with is reducing, once again, our ETL errors. Every day we get emailed a spreadsheet with the individual records that could not be imported into our data warehouse, usually due to type mismatches. We’ve had one file with a dozen failing records (due to a date that looks like 01/01/0808) for years, and I finally decided to use a NULLIF to treat those junk dates as NULL. I did then cause an error since I didn’t realise that column in that table was non-NULLable, but that was easily fixed. With the tickets I’ve loaded and columns I’ve tweaked over the last 18 months, we are down from 1000’s of records failing to import to less than half-a-dozen. Well, on most days.

Most of the rest of my week has been spent helping people in one way or another. I had a request to check some results on our recent leadership surveys, and I had to explain Simpson’s Paradox - you can increase a score in each individual category, but the overall can still go down. I also helped a BI analyst, by explaining some code I wrote to automatically generate audits based on the results of vehicle repairs as entered in the application our vehicle repairers use. The last part was going through the logic of one of our Tableau dashboards, one that I built, and working through why it differs from one of the SSRS reports that another BI analyst wrote. As expected and is often the case, the reason boils down to “these two things were written by different people at different times to answer different questions, so they include and exclude different things and use different warehouse tables, and you shouldn’t really expect them to look the same.” I’ve still been asked to “correct” the Tableau dashboard to match, but I need to have a conversation with the manager about it. I’m a database administrator now, not a BI analyst, and I think it’s a issue for the BI manager to deal with.

Oh, last thing: I finished Brent Ozar’s Fundamentals of Index Tuning class that I got a weeks’ access to for $1.50. Pretty good stuff. It was nice to see that I do understand most of the content, but I learned a few new things, like the importance and user of the included columns, and that the recommended missing index hints can actually make no difference, or even make it worse. Next week is Fundamentals of Columnstore Indexes, another course I got for a week for $1.50. Cheap, and very useful.