Heres a great idea write a frontend that u can type a human request in then pass that to chatgpt to generate an appropriate sql query then automatically send it. What could possibly go wrong.
Some guy opened like 10 jira tickets asking a bunch of data that is already available for them on the BI. I show it how to extract it himself, and then marked all the other ones as duplicated and for a moment I felt myself as an stackoverflow mod.
I mean, if you’re really good at SQL these requests are doable in 10-30m + the time it takes to run and export.
It’s not just being good at SQL, it’s knowing the data and relationships therein.
Yep, being familiar with the data model is 98% of the effort.
The remaining 2% is the query
The fun comes when there is no actual data model. All in all, I’d say being familiar with the data model is about 60% of my job. 35% is building queries and query scripts for people who need regular exports. 5% is running after other people’s fuckups.
Strap in, because this is a ride.
There is a raw database from a decade-and-a-half old app, which I get to access through a layer of views that does some joining, but not all, with absolutely no documentation on how the original database is structured or where things are pulled from or what anything refers to. No data dictionary, no list or map of key relations, some objects are mapped in two different views, no semantic naming of columns.
If you want to want to query order part delegations by who they’re assigned to (Recipient in the app) you need to use the foreign key
RefAssignmentUnit
. The “Assignment” unit that did the delegation is justRefUnit
. If you have orders that were created by a salesperson on behalf of a customer,OrderingPerson
(also a foreign key, but not named Ref-) is the customer, whileOrderingPerson2
is the salesperson that entered the order. Don’t confuse that withCreator
, which for orders created through the web form is usually a technical user, unless the salesperson is one of the veterans that use the direct app in which case it’ll be the salesperson whileOrderingPerson2
is null.Also, we have many-to-many relationships that are mapped through reference tables… whose columns are named
object
andreference
for each and every one. Have fun trying to memorize which refers to which so you don’t need to look it up every damn time.Create my own views to clean this up? Nope, only the third party service providers for the app can do that, and they don’t wanna. Our internal app admin (singular) can use some awkward tool to generate those views, but there’s no reverse lookup to see what a given column refers to. Also, they have no concept for what actually constitutes a good model because they’re not really familiar with the database, just with the app.
Get my own serverless DB to create views that query the original DB? No can do, you’d need to order a whole server and that’s pricy.
Get a cloud DB? Sure, but it will be managed by the cloud team and if you want to have or edit custom views, you’ll get to create a project request. They’ll put it in the backlog and work it into some future sprint.Get literally any tool that allows me to efficiently create reusable data prep so I don’t have to copy & paste the base transformations needed for a given query every fucking time and if the source DB ever changes I need to update all my query scripts? If you can somehow squeeze the time to prepare a convincing pitch - a full Power Point presentation, of course - between all your tedious and redundant query preparation and script maintenance, find a management sponsor willing to hear you out and hopefully propose your request to their superiors. Best case: It becomes a whole project - alternatives will have to be considered first, implications, security, costs, and you’ll be the one having to assemble and present that information to management only to have some responsible person point out that it would actually be the remit of a different team… that also works in sprints, has a backlog and will give you no control over your prep.
And obviously, the app provider doesn’t give us any advance notice of just what will change in the DB with the next update. We only learn that when a view breaks. The app admin can use the tool to refresh the affected views then, while I scramble to determine all the scripts that need to be updated and copy&paste the fix. If a user has been granted their own access to the database, odds are they’ll come crying to me when their modified versions of my queries break.
There is a lot I like about my job, I acknowledge the difficulties of a historically grown system and service contracts, but the rigid and antiquated corporate culture can go take a long walk off a short pier.
…you have my condolences
A girl I’ve dated for a while worked as photographer for live events reportage, clocking even thousand shots for event and saving at least a hundred of them for the job, and she told me rather often she was being later contacted by the client, or someone of his entourage, or even some other person from the public, months past the event and asking if she could send them e.g. “that picture where I’m standing with that friend of mine wearing a white shirt…”, and all that of course without even being able to tell her the actual date of the event.
Ai solves this
Not sure why you’re being downvoted, this might be the best feature of Google photos
General sentiment of groupthink against ai by dumbasses here. AI has its place though, and this type of analysis is the perfect application for ai for image content search.
We taught the infant AI to say Hitler as a joke then we got bored so now the only way it knows how to get our attention is by heiling in the school hallways while we get drunk in the comment section blaming capitalists and reddit for our absent parenting.
I don’t think that’s how the where clause works
The original didn’t have the where clause.