I have this this happen b4. Here are the reason you keep the customer out of the data.
Confidentiality & Security: Unless you are an expert in DB security who's to say that one customer won't "accidentally" access another customers data.
Poorly formed queries: I worked for a company that had a VERY large online database application, our own programmers crashed the live system by pushing code containing poorly formed queries that included, of all things, never ending loops.
Bog Down: Your system will show signs of stress when all your customers start banging on it from every direction trying to pull thier EOM's, EOW's, and the ever tiedious EOY using the before mentioned poorly formed queries.
My friend the solution here is to remain steadfast in your current course. If the customer really wants to write their own queries, provide them the data structure of the data that can be queried, let them send the query to you to proof and then run it. You can then charge them for Query Analysis, and whatever else you can think of. Unless they know what they are doing, they'll give up after the first try.