0845 643 64 63

Monthly Archives: August 2014

Why you should start presenting at conferences

Have you presented a session at a user group or a conference? No? then read on to find out why you need to change that.

Many of the readers of this blog will be active members of the SQL Server community, reading/writing blogs themselves, going to conferences or user groups, partitipating in webinars, etc. We’re fortunate in the UK to have the most active SQL Server community in the World. Yes there are physically more user groups and conferences in the US, but per capita the UK had over twice as many SQL Server conferences as the US last year. So if you’re in the UK you don’t have any excuse to get involved. That doesn’t mean the rest of the world misses out – There were 85 SQL Saturdays around the world in 2013, half of those were outside the US. And then there are user groups, other conferences and webinars etc.

Attending these events is one thing, and will without question help your career through increased knowledge but also networking (the who’s who of SQL Server are all at these events).

But to really benefit the most you need to consider speaking.

“Speaking?!?” I hear you cry, “No chance” – followed by a number of excuses:

  • Speaking is only for the experts, I don’t know enough
  • It’s far too scary – I couldn’t stand up and talk in front of 500 people for an hour
  • Why would anyone select me to speak? No-one knows me
  • What if I was asked a question I couldn’t answer? I’d look stupid, they’d laugh me off the stage
  • Why should I bother, I wouldn’t get anything from it

Ok, so let me work through these one by one

Speaking is only for the experts, I don’t know enough


Yes the top experts in the world come and speak at conferences, but not everyone wants to have their brain fried by a Brent Ozar, or be dazzled by system internals from MVPs and MCMs. Some people want to learn the basics. Conferences always feature a selection of levels from 100 through 500 (‘introduction’ through to ‘WTF?!’). If no-one presented the basic beginners introduction to topics, how would anyone start to learn new skills?

There will ALWAYS be people that know more than you, but conversely there will ALWAYS be people who know less than you about a particular topic.

Therefore even if you’re not an expert, your experience will be of interest to someone, and you could help them learn.

It’s far too scary – I couldn’t stand up and talk in front of 500 people for an hour

*Yes – I get that*

You’re absolutely on the money here, it is scary. In the same way diving off the 10m board at your local swimming baths is pretty terrifying. At first. Your first go on a roller coaster was a little daunting. But you loved it right?

The rest of the community is here to help you here. You wouldn’t dive straight off the 10m board would you? You’d start on the 1m, then work up to 3m, then 5m before trying the big one.

It’s the same with speaking. Start off doing an informal talk to 10-20 people at your local user group, or doing a 2-5 minute lightning talk at a bigger event. Use those to find your feet and get used to being on stage. Use these to refine material, get constructive feedback, and improve your slides, demos and patter.

Before you know it you’ll be desperate to get on the big stage!

Why would anyone select me to speak? No-one knows me

*Because you’re different*

When trying to select speakers for an event, it’s great to have new faces, new topics, or even new perspectives on old topics – it adds variety to the line-up. In your work, you’ve picked up different skills than someone else in a different job using the same tools – so your personal experience is new to an audience, they haven’t heard about the problems that YOU have solved and how YOU solved them. Your personal experience is what makes you different, and interesting.

It’s also handy if you’ve presented the session before to a test audience – it will give the selectors confidence that you can do it. See earlier point about practising at a user group… Being an active part of the user group scene is a good way of getting to know conference organisers, and of course other like minded people in your area – always good for networking.

What if I was asked a question I couldn’t answer? I’d look stupid, they’d laugh me off the stage


Yes there’s a good chance there will be someone in the audience who knows more than you about a specific topic, or who asks a question that you can’t answer. But the SQL community is a VERY friendly place. We’re all there to learn, not to humiliate you on stage. If you don’t know the answer to a question just be honest; say I’m sorry I don’t know the answer to that, but let me look into it afterwards and I’ll get back to you. That then feeds back into your own knowledge, and you can incorporate the answer into your slides for the next time you give the talk.

No-one will mind if you don’t know the answer – you will NOT be laughed off stage!

Why should I bother, I wouldn’t get anything from it


This is actually why I started to think about writing this post. I was watching a SciShow YouTube video (presented by the awesome Hank Green) which talked about how you learn more when you teach than by just reading/revising/etc. (If you watch the video, the segment starts at 1:49). It’s based on research from Washington University, which found that you can learn something up to 25-50% better when you’re planning on teaching the material to someone else.

This really struck a chord with me. One of the reasons that I write this blog and present at conferences is that it helps me learn. If I find a new and interesting item or topic I read about it, I investigate it and play around. If time allows I then write a blog, if the blog gains traction then I turn it into a talk. This process helps me focus on the topic, and helps structure my own investigation and learning. Every time I present on a topic I get feedback and questions, this then helps me learn even more by investigating the answers to those questions – it’s a great learning cycle.

In the processes it helps other learn, and everyone wins. Smashing.

Going back to the second point, yes I found it a little daunting at first. It took me a few user group talks to find my rhythm, but when I got selected for my first talk at SQLBits I was ready, and I got such an immense buzz from it – and I haven’t looked back since.


If you don’t currently attend SQL community events (in fact, not just SQL – any tech!) then get involved.

If you attend but don’t speak – do give it some serious thought – you may just surprise yourself!

If you don’t know where to look for community activities, here are some starting points for you:


  • UK SQL Server User Groups – in your local town/city, every month or two, 3 hours in an evening, free.
  • SQL Relay – full day SQL conferences, touring the UK annually (8 events in October 13-31 2014), free.
  • SQLBits – 3 day mega conference in the UK annually, paid/free


  • SQL Saturday – 2 day local conferences, all over the world, paid/free
  • PASS – Professional Association of SQL Server, SQL user groups worldwide, free
  • PASS Summit – the largest SQL conference in the world – in the US, paid



SSAS Tabular String Imported as Integer

Let me start by saying that I think the SSAS Tabular model is great. But…. there are a number of problems that Microsoft still need to get ironed out.

Not least of which is being able to import data properly directly from CSV/Text files. Yes you can import directly from csv, but you are given absolutely no control over the process, and this can lead to some serious problems.

One of these issues is the rather odd automated data type selection that is used by the Tabular import process. A column consisting of a combination of alpha and numerical text is more often than not treated as an integer, with all text information stripped out. And the Tabular model designer provides absolutely no way of changing this behaviour.

For example, take the following csv file, containing just three columns; ID, ItemCode and ItemValue.


The second column should clearly be interpreted as text, as the 5th row contains a non-numerical value. However when this is imported into the Tabular model, it treats the column as an integer. As you can see from the screenshot below, because the 5th row doesn’t contain a valid integer, the value is just ignored.


One would expect that we could simply go into the table in the designer, and update the Data Type property for the column. No. This just takes the numerical value and formats it as text. But any non-numerical values are still stripped out. The problem is that when the Tabular model reloads the file, it detects that the data type is an integer, and there’s nothing we can do to override it.

The only way of getting around this is by wrapping the strings in quotes within our csv.


This is irritating but we really don’t have a choice, just remember to be explicit in any csv definition that is to be imported directly into a Tabular model.

However, what if we find this out too late? If we’ve already built the model, added all of our DAX calculations in, set up the relationships etc., how do we change the format of an already created column?

Firstly we have to get the csv updated to wrap every string column in quotes.

If we try and just reimport this we’ll get an error “Unable to convert a value to the data type requested for table ‘xxx’ column ‘xxx’. The current operation was cancelled because another operation in the transaction failed.”


So first you have to change the column data type for the table in the designer. Click on the column, then in the column properties, change Data Type to Text.

ChangeTabularDataType05Once this is done, you can reprocess the table and import the actual text.

This is all well and good, and works most of the time. However, I recently encountered a Tabular model which had this problem, and the above process wouldn’t work. So the only solution I found was to go routing in the Tabular model’s xml source code, and force it to change. Hacking it manually worked a treat, so I thought I’d share the process here. Just be careful – always keep a backup of your files before you change anything!

To do this, open up your .bim file in a suitable text editor. I highly recommend Notepad++, as it works great for XML.

We need to change three things:

1) Change the data type for the table column key & name, within the dimensions

change <DataType>BigInt</DataType> to <DataType>WChar</DataType>     (Note this may be Int or BigInt)
change <DataSize>-1</DataSize> to <DataSize>32768</DataSize>

Then do the same for the <NameColumn>


2) Change the data type for the table column key & name in the corresponding cube

change <DataType>BigInt</DataType> to <DataType>WChar</DataType>     (Note this may be Int or BigInt)
change <DataSize>-1</DataSize> to <DataSize>32768</DataSize>

Then do the same for the <NameColumn>

3) Change the definition of the csv datasource

delete ‘type=”xs:int”‘ from the element, and replace it with a SimpleType and restriction defining the string:

<xs:simpleType><xs:restriction base=”xs:string”><xs:maxLength value=”32768″ /></xs:restriction></xs:simpleType>ChangeTabularDataType07


Then save the .bim file, reload your Tabular model, and reprocess the table. Problem solved.




The Frog Blog

I'm Alex Whittles.

I specialise in designing and implementing SQL Server business intelligence solutions, and this is my blog! Just a collection of thoughts, techniques and ramblings on SQL Server, Cubes, Data Warehouses, MDX, DAX and whatever else comes to mind.

Data Platform MVP

Frog Blog Out