Re-Upload - Tableau Next Semantic Modelling [Reposted]
I spent 50 minutes building a Tableau Next semantic model live — and discovered exactly where the user experience shines and where it still fights you.
- Semantic modelling in Tableau Next is powered by Data Cloud and can be done either in Tableau Semantics or directly in Data Cloud — they're part of one experience.
- Data Lake Objects (DLOs) are raw, source-aligned storage while Data Model Objects (DMOs) are a business-friendly harmonised layer on top, roughly analogous to underlying CSVs versus a single Tableau data connection.
- Unions are built inside a logical view, but you must manually map matching fields one by one — a clunky experience compared with Tableau Prep or Desktop.
- Calculated fields can be created on a data object (e.g. STR(bookID1)+STR(bookID2)) to fix join keys, but they don't carry through into logical views as I'd hoped.
- You can test a model by picking dimensions across tables; the resulting semantic query is JSON metadata that can be converted to SQL against your source.
- Plan: where semantic modelling happens0:17
- Uploading Excel and a vibe-coded CSV splitter2:05
- DLO versus DMO terminology4:43
- Creating data lake objects through the bugs6:18
- Starting the semantic model and first relationship14:08
- The info table calculated-field blocker19:23
- Building the remaining relationships24:14
- Building a sales union in a logical view30:24
- Wrestling with matching fields32:38
- Connecting sales via ISBN41:22
- Calculated fields for the book ID join44:10
- Testing the semantic model47:38
0:02Good evening.
0:04I keep saying that because uh it says it up here.
0:07Saran, someone someone asked me in a private message why are you starting the videos with uh good evening?
0:12It's because it says so up here.
0:14Right, day two.
0:17We are going to try and make something with Tableau Next.
0:22Um, I think today what I want to do is focus on the semantic modeling and I want to walk you through
0:28the places where that happens.
0:29It can happen in two places.
0:31You can do it inside of Tableau Next, in what's called Tableau Semantics, or you can do it inside of data cloud.
0:39Uh fundamentally, the semantic modeling in Tableau Next is powered by Data Cloud.
0:43You can't really have Tableau Semantics on their own
0:46Um it's kind of all part of the experience.
0:48And by the way, there are several football matches that I'm tracking at the moment and that's what's appearing up here.
0:54So I'm really happy that Crystal Palace are winning 3-0 against Liverpool.
0:59Sorry if you're a Liverpool fan
1:00Uh but nonetheless if those pop up that is why.
1:04So what I want to do is build a data model and I'm going to use the bookstore bookstore dataset because that is a really good data set for building
1:12data models or just mocking up data models so that's what I'm gonna use today.
1:16In yesterday's video if you haven't watched that go ahead and check this out.
1:20This is the second video of two on my new channel.
1:23Hit subscribe, like, share, whatever, everything.
1:27I want to build something specific.
1:30So let's go ahead and go to the Tableau Tim workspace, which is what I created yesterday.
1:35It should be a blank workspace, there's nothing here.
1:38So when we get to workspace, typically, and the hierarchy that we've we've seen before, if we go to the top right hand side and select add, you'll see that we have the option to add data, semantic model, visualization, or dashboard
1:50And that's fundamentally sort of the starting box.
1:53Once we've added a semantic model or data, we'll get another option that says metrics.
1:58But because we're in a new workspace, this menu isn't fully set up.
2:01So it's going to ask us, hey, um, let's add some data.
2:04So we'll go in here, we'll select upload uh files.
2:07When you click upload files, it just opens up the file menu
2:10That's not actually what I want to do.
2:12What I want to do is drag them in.
2:14And unfortunately it says upload files in the plural or drop files in the plural, but it does not support multiple file upload.
2:22I don't know why
2:23Um that's there.
2:25It can support CSVs and Excel files.
2:28So we're gonna try uh two things.
2:30Now what I have here
2:32is the bookshop data store.
2:34And what I've done previously in the past, um, it didn't say it could support Excel and it didn't support Excel.
2:39We're gonna try that soon.
2:41So what I did is I vibe coded a tool to split out an Excel into separate CSVs.
2:47So I went to Claude and literally in about like
2:50literally three minutes it coded this Python script that simply opens up an Excel, finds all the tabs, and exports each tab as a CSV.
2:59It works every single time.
3:01I've used this like hundreds of times now.
3:04I I did this like a three, four months ago.
3:06And it's been really, really good.
3:08So this is another use case for AI, by the way, building offline tools that you can use.
3:13um to do work you know in the future so just just sort of creating your own little custom tools um that you can use so let me just um I'm ducking underneath my light because it's kinda in the top right hand corner of this
3:24Screen so let me just bring this screen down.
3:27Could tell that I'm I'm still getting used to my slightly different setup here
3:33Let's go ahead and drag the Excel file and see what happens.
3:35If I drop the Excel file, it should upload the whole entire Ex file.
3:39And what I'm hoping it does, what I'm hoping it does.
3:42is it breaks out each of the tabs in Excel.
3:45Manchester City have just scored.
3:46Okay.
3:47So it does do that actually.
3:48It's quite nice.
3:49So it gives us all the different elements here.
3:51So we can go ahead
3:52Select book, author, info, award, citation, blah blah blah.
3:56Let's just take everything because we need it all.
3:59And then now that I've done that, I have um options here at the top.
4:04So create data like objects.
4:06Because I've selected multiple, uh, create semantic model um from all those tables.
4:12But what I'm gonna do is I'm gonna create data lake objects.
4:15Essentially, these are these are sort of um
4:21What do you call it?
4:22Oh, I want to use this word called atomic assets.
4:25So they are sort of the constituent components that we're going to use later on to build.
4:29um a semantic model.
4:31So go ahead and create a data like object.
4:33You see it says create 30 new assets.
4:35Yes.
4:36We'll go ahead and do that.
4:38I'm not even sure if this is the right thing to do.
4:41There is some terminology in Data Cloud about data lake objects and data lake objects.
4:47So let me say DLO versus DMO data cloud.
4:52Okay, let's see what happens.
4:53Um Arsenal won the game.
4:55Thank you.
4:56That's that's the last of the scores by the way.
4:57I'm starting this pretty much as the matches have ended.
4:59So DLO's data like objects are raw source aligned storage for data in its original format.
5:05Makes sense.
5:06while DMOs are a business friendly standardized layer that maps and harmonizes one or more DLOs to a unified structure.
5:14Great, so a DLO is sort of the atomic asset as I said.
5:19DMO, which is what I was struggling with, is let's say an abstracted thing on top of that.
5:24So in the Tableau world, you might have multiple CSVs, but they form a single data connection
5:31In this world, the DMO is a single data connection that you connect to, and the DLO are the CSVs that sit underneath it.
5:38So you can kind of maybe that's a massive oversimplification, but let's see if we can
5:44Let's see if we can find a diagram.
5:45Diagrams are the best.
5:46So data source, data stream, data source object, data leg object, data model object.
5:53Okay, so there is actually more levels to this that I was not aware of, which is why I love this series.
6:00You're basically seeing how I go about learning these things and I just sort of
6:04bung bumble my way through the documentation and Google and we find what we need.
6:09So um that's actually quite a useful structure.
6:11I'll leave that up because we'll come back to it and obviously hopefully we'll bump into other sort of Salesforce gurus as we do this.
6:18Um so let's go back here, let's create these as DLOs.
6:23That's about right, I think
6:26Data source object.
6:27Data source object I feel like would be a staging table, I want to say.
6:33Um
6:34in from which a data stream would dump data into.
6:37So a data stream feels like a connection that pulls data in.
6:41A data source feels like
6:42where it is coming from.
6:44So a very simple example.
6:45Let's say I have YouTube data.
6:47That is the data source.
6:48A data stream is something that goes to my YouTube API and pulls the data in
6:54A data source object is where that is dropped and then the data lake object is essentially the cleaned raw information from those tables, Manchester City one.
7:05And then uh data model is a thing on top of that.
7:08Um data model object is a thing on top of that that you connect to for analytics and data purposes.
7:13So I think I think that's a sort of a logical way of explaining it.
7:16So
7:17Let's go back all the way here and just create these data lake objects.
7:22For now, I think it makes the most sense
7:24Um when I tried the beta a long, long time ago, you couldn't do this, so this is actually quite a neat thing.
7:29Oh, I spoke too soon.
7:33Unable to create data stream internal server error.
7:35Okay, at least one of them worked.
7:37Author book worked.
7:39Let's see.
7:41Edition is not working.
7:42Okay, publisher worked.
7:44Why is why are some of them working and some of them not?
7:48I wonder if because there's too much concurrent activity.
7:51Um the weirdest thing would be if one of these sales quarters works and one of the others doesn't.
7:56That's when I just know okay, it's definitely a bug.
7:59So um I'll try uploading these and then I'll I'm gonna have to take a screenshot of the ones that haven't worked and figure out how to like load them in.
8:07I might have to do them manually um but let's just work through this um and wait wait for this to
8:13to finish.
8:14Unable.
8:15Okay, so that that did actually happen.
8:17So one of the sales quarters didn't work, but the other three did.
8:21Um that makes me believe that there's a bug in
8:25Tableau next or data cloud, whatever it is.
8:28So I'm a taking the screenshot I mentioned I would take.
8:32This is how I remember information by the way.
8:35I take a screenshot
8:36And then I do this thing where I can pin it as a static thing and it stays on the screen so that I can remember
8:46What it is, and then when I'm done with it, I delete it.
8:50There's a bug here that doesn't let me want to take a screenshot.
8:53I hope it's not killing my recording.
8:57And put that over there, size it down.
9:00So now I can roughly see the things that failed.
9:03So I can then go hit close.
9:05But it did create some of them.
9:06It did create some of them.
9:08In fact, the ones it did create.
9:11are marked with an icon.
9:12So that's a really sort of good thing to see.
9:16Let's go ahead and deselect these ones
9:20Because those ones worked.
9:21Anything with an icon worked.
9:23And author, yeah, these are the ones that didn't work.
9:26So let's cry let's try creating the data lake objects again.
9:30So let's go ahead now.
9:32It's just these ones
9:33Data spaces assigned.
9:35I've just set it to the default data spaces.
9:37I should probably do some work on what a data space is.
9:41I'll go ahead and learn more, but let's go ahead and create six.
9:47Error detected when creating assets.
9:49So that's an old toast notification.
9:51So we'll we'll start again, and if all of these fail, then there's probably something specific about them.
9:58um that can't be done.
10:00So this time info worked, whereas last time it failed.
10:03This time award failed.
10:05Let's see if checkouts failed again
10:08uh ratings and sales q4 ratings has worked this time sales q4 has also worked this time so that this there's a bit of irregular behavior here um not ideal so
10:21we can kind of clear these again.
10:24This is a little bit boring to watch.
10:26I'm really, really sorry.
10:27But this is what happens when you're at the bleeding edge of
10:30um learning a product and deciding to share each of those steps as you go.
10:38So let's go ahead and deselect the ones that worked
10:43So everything says now just author, award, and checkout.
10:47Sales key four doesn't need to happen again.
10:50Let's try a third time.
10:51So it's just these three now.
10:53So create.
10:57And let's see, I just want one of them to work.
11:00If these three fail for the third time, that'll be a shame.
11:04Well, authors work this time.
11:09Award has worked this time.
11:12Ah, full house.
11:16So
11:17If it doesn't work the first time, try again.
11:20That is basically what's happened is.
11:22So yeah, okay, we've tried that again, and now
11:26We have all of these.
11:28So these are all there.
11:29They've been loaded into the data leg object.
11:32So
11:33What I want to check now is if I go back to the Tableau Tim workspace, yes, I see all of those uh in there.
11:40So you're starting to see this hierarchy of
11:43Assets being sort of created, and if I go to the top right hand side, you see that my my drop-down menu still hasn't changed.
11:49I still have uh semantic model visualization uh dashboard.
11:53And then I've got obviously I can edit this workspace and play around with stuff.
11:58So so far so good.
12:00We've got our raw data underneath that.
12:02Now I want to go to the next level and create a semantic model.
12:07And by the way, I should have said this, you can add
12:11uh data directly from here and you can go ahead and just add it.
12:16I think that's what I previously did.
12:17I added the Excel file and we loaded it in.
12:20The other place you can do this is if you go to this was the um um this was the documentation it sent me to which
12:28I actually think is not that useful.
12:31Um yeah, I don't think that's actually that useful.
12:34Um so anyway, let's go back here.
12:36The other place where you can add
12:39Items is if I refresh this, so data streams we understood were um the the activity of bringing something in like a like a staging place, and you can see
12:50That's exactly what's actually happened.
12:52The files that we uploaded are here in Data Cloud.
12:55Um, they've dropped in and um you see these other files come in from Salesforce that happens on a schedule, so it's
13:02It's it it works pretty much like clockwork on most days, 29th, whatever.
13:07Um file ingest here.
13:09Um it's essentially just like a it's a bit like working with Snowflake where you're pulling in flat files from a from a from a specific location.
13:16Data lake objects, those should have been created, yes.
13:19So those are there.
13:19You can see them that those are all there and they've all been created recently.
13:23And you get a number of records as well that sit behind them, total number of fields.
13:27So
13:27You can start to see how the relationship between Data Cloud and Tableau Next kind of work.
13:31You can kind of do the same thing in multiple places.
13:34Thing we don't have yet is a data model as part of our Tableau Tim workspace.
13:39You can see that
13:41You do get some information about the data sources, but the data space that it's talking about is all default.
13:47So data spaces must be the equivalent of a database.
13:51if that makes sense.
13:52So you can have multiple databases and in those you can have multiple tables and multiple things.
13:57So Snowflake has a very similar analogy.
14:00This is just the data cloud equivalent.
14:02Okay.
14:03Back to this place.
14:05Let's go ahead and actually do what we wanted to do in this video.
14:08We are 15 minutes in, and uh, let's go ahead and build a semantic model.
14:13So, this is an interesting one.
14:15Because what I would want to do is select everything and then go build relationships.
14:19But it's gonna ask me to start with one of them.
14:21So let's go ahead and select that.
14:24And you'll see the semantic model has been created.
14:27Now it's opening it, which is a bit of a buggy experience.
14:30But we have a little video.
14:31Let me just dial this down.
14:33uh because you can't hear it so we'll have a little video and I believe this is basically showing you how this works.
14:39I could do with this video but I can't hear it because I'm talking so
14:44I'm gonna try and intuitively figure it out.
14:46I think this is one of the best ways of just working through something.
14:49So I know what I need to do.
14:51I've used Bookshop Data Source multiple times.
14:54Before the end of this video I want to have figured out how to do everything but I I desperately feel like this video will be handy and I don't wanna I don't wanna I don't wanna skip can I can I save the video as I yes I think I can so let's save it to my desktop
15:08And then uh yeah, it's downloading.
15:11Perfect, perfect, perfect.
15:13Yeah, there's a download option there.
15:14Perfect.
15:15So I've downloaded this so that I can skip this.
15:18And if I need to go watch the video, I can pause this video recording and then go watch the video and then come back and pretend like I knew it all.
15:25Um you might not even know.
15:26I might have cut it into the edit.
15:29So
15:30Right, there's our bookshop information.
15:32Okay, so that's pretty much good.
15:35Let us do
15:38This next step, which is okay, we need to add more data objects.
15:42If I go ahead and add data objects and I go back to my data lake object, you can see
15:47That now I can take multiple ones.
15:50So I can go ahead and take all of these.
15:54So let's just go.
15:56Oh, forecasting.
15:57You see this.
15:58The problem with this is
16:01I didn't tag my bookshop data source information, so I don't know which is which.
16:07The Siri, static currency, rates, Homo or Siri go away.
16:12Um
16:14Okay.
16:16Siri responded to my request.
16:18Publisher ratings, uh, price book.
16:22I don't think this has anything to do with my data, info, edition.
16:27Contact home has got nothing to do with that.
16:29Case home, nothing to do with that.
16:30Checkouts is part of it.
16:32Account home has got nothing to do with that.
16:34So I believe.
16:35I've picked the right things.
16:36There were roughly 13, so let's just go and hit save.
16:39This is this is testing my knowledge of Bookshop data source to the Mac.
16:43So let's go ahead and hit save.
16:45What this should do is bring in all my data lake objects.
16:50And then here we go.
16:52Yeah, here they all are.
16:54So we have all of them, and it's it's begging me to create a relationship between all of these.
17:00Okay, so we've brought everything in.
17:02I'm not sure this is the right thing to do.
17:03For example, if I try and put this on top of that, that's not gonna union.
17:09So I need to figure out how to do a union.
17:12The first thing I'm gonna do is make my life easy and just figure out the relationship
17:16Basically, because I think that will be the first one.
17:18So let's just move these around.
17:20You can move them around anywhere.
17:21Kirk Monroe dropped me a little
17:24Subtle text message to say, hey, by the way, you can move these however you want, which is actually quite nice.
17:29Semantic model in Tableau desktop doesn't let you do this.
17:33And you can have it suggest relationships, although that is still grayed out for me.
17:37So I have no idea what's going on there.
17:39So let's go ahead and hit plus.
17:40And we can say, hey, add a relationship with the author.
17:43Okay.
17:44And if you recall, this is a difficult relationship in Tableau because the book st the book um the book information I believe has uh where why can't I see this?
17:59um here we go let's put the screen down here the book information has the author id and the book id
18:09And then oh sorry, let's go back to that option.
18:13I hit this plus, add a relationship, and I say author, okay.
18:19Preview book
18:21Preview author.
18:23So it's gonna be on author ID, I believe.
18:29So let's go ahead and say um
18:34Internal organization would not be it.
18:36We can just go ahead and type.
18:37So let's say auth ID equals
18:43auth ID.
18:46Okay, you can also have this option that matches case insensitive case sensitive or not
18:52And there's lots of like little indicators everywhere.
18:55So let's go ahead and hit add that relationship spring created, hit apply.
19:00That's the kind of thing I'd forget to do.
19:01So there we go, we have our first relationship
19:04between books and authors okay now I do remember let me go ahead and say uh book store
19:14demo dataset.
19:16I've actually forgotten um one of the first parts of this model so information so
19:23This is the mod this this is the data model that I'm copying from the Tableau ecosystem.
19:27So um let's go back into this.
19:30So information.
19:32Okay, so
19:34If I go to book in here and I uh edit properties, you can change the primary context.
19:42But now what I'm trying to do is I'm trying to understand how do I do like a
19:48Like a right join or something like that.
19:52There's obviously a primary key, um, but that's not one that I set I believe this is one that Salesforce has put in.
19:59That's fine.
20:02Um interesting.
20:05So there's the ability to create a logical view here.
20:08So let's go ahead and try this and call this uh book and
20:13Information Hit Save
20:22And if I say data lake objects and I say book and info and I hit save, what does that do?
20:36Okay, here we go.
20:38Figured it out.
20:40Oh god, that that's that's sort of unintuitive.
20:43I think it would be nice to be able to just have like
20:46Uh instead of a relationship, just have like the opportunity to look at joins.
20:49In Tableau Desktop, you have this physical and logical air concept.
20:55Here it's kind of strange because
21:00It it it it's sort of hinting that you can do this, but it's it's number one, this is where you do your unions, but it's kind of wanting me to it it picked the wrong one as a starting point
21:12It's it picked the info.
21:14Personally I'd I'd like I'd prefer to do a join with um with book first.
21:21So I think I I chose book and info and it went oh okay, so you can only choose one at a time.
21:27So where I thought I was choosing both of them, actually I was only choosing one of them and I tr I picked info second.
21:33So now I have to bring in
21:35this and then I have to basically do a right join actually as I sort of intended because I only want information for the books that I'm actually analyzing in this particular case.
21:45So let's go ahead
21:48Okay, so now this one, this is the this is the more complex one.
21:52Okay, so basically, in here, if I go back to this diagram, you see that that I need to do a calculation in the book
22:01table to get sorry in the info table to get a match to the book ID.
22:08So
22:09Let's go back.
22:11Let's just let's just let's just plan through this a little bit.
22:14So can I can I create a calculated field here?
22:20Can I do that?
22:21Um
22:24Oh, this is interesting.
22:25So how would I do this?
22:27This is very interesting.
22:29Um can I create a calculated field?
22:34I cannot
22:37So maybe this is a blocker because in the
22:44We're in the semantic model, we're in the logical layer, okay?
22:48So we're like two levels in.
22:51But
22:52In the info table, book ID1 and book ID two need to be combined, and I don't see an option here to create a calculated field that I can then use
23:04again to my book table to create the join basically.
23:08See when I go in here to do the join object that is
23:15Fine.
23:16I can create a relationship in this logical view, I believe.
23:20No, it's still wanting me to do a join of some sort.
23:24Um
23:26And I don't see an option to do a calculation here at the bottom hiding anywhere.
23:31So if you're watching this and you know the solution to this problem.
23:35Let me know.
23:37Um, there must be a way to do this.
23:39I just don't know where it is.
23:41Okay, so never mind.
23:43Let's go back.
23:44Oh, that was like a detour wasted.
23:49So, um what am I gonna do?
23:51I'm gonna close this without saving it.
23:54But my logical view is still there.
23:55So booking information is still there, and then what I can do, I believe, is bring it in.
24:00So you see there it is
24:02Booking information is there, and then what you can do is you can click it and go and create a relationship, blah blah blah.
24:08But for now, we're just going to remove the subject.
24:11We'll come back to this some other time.
24:14If you know how to solve this, hit me up in the comments below.
24:18Okay, so book and author are fine.
24:21We're just gonna ignore the information about the books
24:25What we're going to do is use the book ID to connect to addition and then addition using publisher ID to publisher.
24:32So and then everything else is just book ID or
24:36whatever so we we can start with like we can just work our way through this so you know what I normally do I take a screenshot something I need to keep seeing and then we pin it on the screen and now if I go over here I've got it all the time
24:50the top right hand window it's one of the best little tools especially for stuff that's like sort of ephemeral like
24:58Uh but now it's not letting me resize this.
25:01Here we go.
25:02There we go.
25:03That's what I want to do.
25:03I just want to put it up there where I don't need it.
25:06Okay.
25:06So book and author um have been connected by author ID.
25:12That's fine.
25:12Okay, so book and title.
25:15We hit a snack.
25:17Relationship can't progress it will create a cyclical conflict with another relationship.
25:22Well, how do you know?
25:24I've not defined it yet.
25:26Uh where is title?
25:28Ooh.
25:30I did not bring the titles table in.
25:33Let's go add it in.
25:35So DLO.
25:41Oh, maybe this didn't actually upload everything.
25:45Interesting.
25:47Okay.
25:50And can I add a data lake object here?
25:53Okay, no, I can't.
25:55So what I've got to do is
25:58Go back in here, add new data, upload file.
26:04Actually, I have the files over here, sorry.
26:09And what we are looking for is the title table.
26:12Does this example data set not have titles?
26:16It doesn't have a title.
26:19Oh, the title is the join filter.
26:22Oh my god.
26:23Alright, hit cancel.
26:24Go back.
26:24Go back.
26:25Go back into my semantic model.
26:28Awards, awards, awards, awards, awards.
26:31So go ahead and hit the relationship, select awards, and in here we join on title.
26:37So we could probably hear you all screaming that
26:40Um go ahead and title, blah blah blah, add, okay, hit apply.
26:48Okay, so that makes sense.
26:51And then the next one is checkouts.
26:53Let's go ahead and hit that.
26:55And this one we want book ID.
26:57Oh, it's already done it.
26:58Wow, it kind of guessed it.
27:00I don't know if that's by coincidence.
27:01I haven't got the suggested relationships here at the top
27:05Suggestion relationship must pull that in from a database basically.
27:09That must be what it what that does.
27:12Hit apply.
27:18So what you can do is you can just arrange ah well you can't arrange them.
27:23I thought you could.
27:25Oh the pages in error.
27:27No.
27:28Don't want to refresh anything.
27:30Okay, oh okay.
27:31I can't drag it too far to the left by the looks of things.
27:35There's a little quite a few bugs here.
27:37Oh no, oh no, this could be bad.
27:39Okay, ratings
27:42Let's go ahead.
27:43Oh no, I'm fighting the bug.
27:46We shall fight through it
27:48You know what?
27:49That's a really silly idea.
27:51Let's hurry up and do this.
27:53Hit apply and then save.
27:56I think it's saving anyway.
27:57Yeah, saving anyway.
27:58So what we can do is we can refresh the page.
28:02And it remembers all three tabs at the top, which is nice.
28:04It kind of remembered my little window, my session, as it were.
28:07It remembers we're still building a semantic model.
28:10It rearranged them all, of course, but that's fine.
28:14Uh so we've got ratings, awards, checkouts, and now series is what we need to build.
28:21Uh series boom boom boom
28:24Series add.
28:26This is going to be series ID.
28:30Now Siri in the background is popping off.
28:33It thinks for the first time, Tim, you've called my name
28:37So much so that I'm even typing it multiple times.
28:42Why can't it find C
28:45Oh, because a series ID comes from the info table, which I can't do.
28:49So we'll skip that.
28:50We've got author already.
28:52The next thing we need to do is actually go to authors table.
28:56And we will go and get publisher.
29:00And Publisher is using PubID.
29:03Okay.
29:05So let's go publisher.
29:07Oh.
29:10Publisher ID, pub ID.
29:16It's gone from book to award.
29:18Okay, no, that's not what I want to do.
29:20It's because it should be going from addition, sorry.
29:26Cancel.
29:26Okay, sorry.
29:29Addition goes
29:33from book ID.
29:35Okay, so this should be going to oh this is really it's really weird doing it in a different interface because you it just it's just
29:45Just yeah, I think I said this in a previous video.
29:47You just lose all your bearings.
29:49None of it feels familiar.
29:50So I'm looking like I'm doing the right things, but I'm doing it in a different way, and it feels wrong.
29:55It feels so wrong.
29:57Now I can go from here to publisher.
30:01We found out how to do a union, so this is this is this is at least one good thing we can do today.
30:07So Pub ID.
30:09Um PARB ID, hit add.
30:14We're going for thirty minutes here, uh hit apply
30:19Okay, and now what I need to do is take my sales information.
30:24So let's just let's just take this.
30:28and remove the object.
30:29Now I have to go do this because I added them all.
30:32I was too keen.
30:33I added them all too too too too quickly.
30:37Let's go remove all of them.
30:40And we need to go create a new logical um we'll leave series in there for when we figured it out and we'll leave info there for when we figure that out.
30:51So we'll just put that there.
30:54Ah, it does not like me moving something that isn't connected to anything.
30:58That's gonna moan.
30:59Yeah.
31:01But what we'll do is say new logical view.
31:05There's a calculated field there.
31:07I wonder if I should create the calculated field here, then go try and build the logical view
31:12That's an idea.
31:13Okay, so let's call this sales data.
31:18Okay.
31:19And we will go and
31:23Get our data lake object.
31:24Remember last time I picked multiple.
31:26You can't do that, so just select the first one, hit save.
31:31creates a new little view like it goes into that little logical view and then in here I believe I can I can add more I swear it was here oh here we go
31:45So here when I hit the plus icon, I can create a union, go back to data link objects, and now I can select Q2.
31:58Key three and key four.
32:00There's a bit bit of a bug there in terms of selecting it, so that's fine.
32:03Hit save
32:06And because I selected union, what it should do is take all three of those and bring them together.
32:12There we go.
32:13So
32:15This is how a union looks like, if that makes sense.
32:18So Q1, Q2, Q3, Q4, they're all unioned together.
32:22I can give my union a name.
32:24Can I give it a name, please?
32:26No?
32:27No
32:28Can I can I give it a name?
32:30Yes, I can call it sales union.
32:33Okay
32:37Um matching fields and matching fields.
32:40Hmm.
32:41I don't know what that's about.
32:43Has it not done automatically?
32:47Hmm.
32:51Oh nah.
32:54Oh nah.
33:01It's got forty-four columns.
33:04Wait, what?
33:07Okay.
33:08There's eleven columns in each, so if I have forty-four, it's just basically put them all in separate columns.
33:14Add fields, okay.
33:18So this is actually not a matching field.
33:21Okay, that is not a matching.
33:23Okay, so in here, okay, I'm supposed to select all the matching fields
33:30Item ID.
33:34Hold on, I don't understand this interface
33:38So you have choose a matching field.
33:44So basically you can say to it, hey
34:07That this is this is really broken.
34:10Um
34:19I don't think I need this anymore.
34:24So what I'm really struggling with is moving this up.
34:27Um, but okay, that's fine.
34:29I can I can live with that.
34:31This union interface.
34:35I ha I have to be honest, this is not an intuitive union face.
34:40When you've got the beauty of tablet prep or tablet desktop in there
34:45Like this cannot be the way forward, surely.
34:48That I have to sit there and like did I miss a step in that union?
34:56I mean
35:04If I preview this logical V
35:07That's gonna be awful.
35:08I I mean it's over here, so of course nothing matches because everything's in like separate columns.
35:14I like this is a classic altrix problem.
35:16Um even a prep prep would solve this.
35:20I think field names ISBN
35:31Gonna do this again, one more time.
35:36Add
35:39Oh my goodness me.
35:46That can't be the way we do this.
35:52Okay.
35:57Okay.
36:02Okay, this is the intended way.
36:06Okay.
36:08Okay
36:11Wow, okay.
36:12Alrighty.
36:13Okay.
36:19I I don't know what to think about this.
36:22Uh
36:27All I'll just keep saying is hey listen, this is a solved problem in Tableau Tableau Prep and Tableau Desktop.
36:34Like
36:36This is ridiculous because now I also have to keep a mental model of the fields that I've done them in.
36:42So anyway.
36:44Data source.
36:46Some of these fields are created by the system as well, so I also have to go and do this
36:57for all the system created things.
37:01To me that feels like that should be automatic.
37:05Um that is broken.
37:09Okay.
37:10Anyway, at this rate, I might have to join you tomorrow when I finish doing this
37:18Here on Tableau 2 with Tableau next.
37:22Oh my word.
37:25That is that is okay.
37:27So how many fills are we down?
37:28One, two, three, four, five.
37:32I'm about halfway through.
37:35And what I'm realizing is it's also not removing them once I've done them.
37:40Jesus.
37:40Alright, okay.
37:42So ISBN data source subject internal organization.
37:45I was doing it in alphabetical in in order, so let let's actually
37:52Keep doing this in the same order.
37:55What I'll do in the video is I will jump ahead to when this is done.
38:08Okay, there's a little bug here where
38:14Can you see this little pop-up's gone off screen?
38:17I don't know how to solve this.
38:20Oh, this is irritating.
38:22So uh can I make
38:27How do I make I I need to just hit the apply button
38:34I also can't go off screen.
38:36So if I ah, there we go.
38:38I zoomed the browser to command minus, command plus, to get that showing in the right place again, so I can hit add.
38:47Okay, so this is this is clearly a bug.
38:49So little tip, don't hit this plus icon when it's at the bottom, because then this happens and as you add to the fields it goes off screen.
38:55What you want to do is scroll as far down as you possibly can, then hit add, then start adding fields.
39:01So sale date, all the little tips and tricks.
39:06Wait, what?
39:08No?
39:09Okay, it's only showing me the like field.
39:12So it is doing some level of
39:17Simplification data source I have done item ID I did not learn my lesson
39:27I did not learn my lesson.
39:30Let's start again.
39:32I just gave you the tip and I didn't do it myself.
39:34Item ID.
39:37Item ID
39:40Hey listen, if you're watching this and you're watching me do this, maybe you're background watching, in which case you can laugh and just be like ha ha ha ha ha
39:50But I um God all those yeah muscle memory is completely useless here.
39:56Item ID
39:59UUID that doesn't really matter.
40:02CDP sys source version, that doesn't really matter.
40:05Discount is going to be the other one.
40:08And so because this is the only numeric field.
40:12That's gonna make sense.
40:14So hit add.
40:15Okay.
40:18Okay.
40:20If we hit apply, oh my god, I did all of that without saving anything
40:26Ooh, that that makes me worry a little bit.
40:29But what that does is it creates this now, which is a little bit cleaner, so we get all those bits of information.
40:38And the reason I was even doing this union in the first place is to get a sales table so I can connect an ISBN, which I have now.
40:46So even if this is not perfect, we can
40:50Kisses goodbye.
40:52Thank the Lord.
40:53This is done.
40:54One thing I have not done is name this union.
40:58That's all the way down here.
41:00So we call this sales union.
41:03Hit apply
41:08And now that we have done this, we can go back a bit of inception back here on the top left-hand side, hit back, go back to a semantic model.
41:21Now we have a logical view, it is just off-screen here, and then we can go get our ISBN from our edition.
41:29So go back to addition, hit the plus icon.
41:34Please no, don't misbehave now.
41:37And we're gonna connect to sales data.
41:40We're gonna hit the plus and we're gonna say ISBN
41:46ISBN so you can see here you get the union fields and the individual column fields as well, which is I guess now having like laughed at it, I guess
41:59I guess this isn't actually that bad.
42:04Um Yeah, I fine, fine, fine.
42:08I I see
42:10I see how this benefit backed you into that bad user experience.
42:16But I still think the user experience should be automatic.
42:20Like every single day of the week.
42:21So let's go ahead and hit add
42:23Hit apply.
42:27Okay, we have we have I think we've finished it.
42:31So if I put addition over there and I put that over there, that makes way more sense to me
42:37If I can put that over there, water up there.
42:42Um if I start just
42:47putting things in logical places, tidy this up
42:59You kind of oh my god, I wish I wish this layout was see now I see why they make it automatic in tablet desktop having gone hey it's nice that you can put it anywhere.
43:08Kirk, I changed my mind.
43:10I I I prefer the tableau approach.
43:15Okay, so we've got these two tables.
43:17that have we've not been able to bring in yet but um yeah there we go bookshop is set up um it's still called new semantic model so we'll call this bookshop semantic model
43:29Because this is in the browser, I'm fairly confident that it's saving every single time.
43:35Analytics engine is allowed to answer questions based on the semantic model, business preferences.
43:39Oh, there's business preferences
43:41Um largest, smallest accounts refer to the accounts.
43:45Okay.
43:46So you can add a bit of AI context, 6,000 characters.
43:49That's basically like prompt engineering.
43:52Um sales data logical views.
43:54Okay, cool.
43:55What else can we add?
43:56You can add another logical view, that makes sense.
43:58Data objects, you can add calculated insights.
44:01So this is interesting.
44:03So
44:04Um I think that is pretty much everything.
44:10Now remember earlier we could add a calculated field.
44:12I was gonna see if
44:15I can go to info.
44:19Oh, I think I can.
44:21I think I can.
44:23I can say book
44:26ID one plus book ID two.
44:33We'll call this book
44:39ID.
44:42We'll call this a dimension.
44:44Text.
44:45We'll hit save
44:48Your attention please.
44:51Validation.
44:52Creating a semantic NC book ID.
44:54Fail because formula validation.
44:56Syntax error.
44:57Invalid type types can't add string literals.
44:59Oh, okay.
45:02No no no no no no no no no okay so the issue is book ID one and book book ID two is an in is a number.
45:12So I have to say two okay, no string S Dr and then
45:20Get rid of that.
45:22So at least my Tableau formula knowledge is working.
45:25And they have done a recreation of the automatic field.
45:28So let's go ahead save now.
45:30That should work
45:32Good.
45:33Um the other thing I could do is edit properties and change the data type, and that would have been the easier thing to do, but I did not.
45:42So hey, we figured it out the hard way
45:45And the best way I guess.
45:48Now let's see if I can go create a logical view called book info
45:54Having done the book table anyway.
45:57Oh god.
45:58This is the longest way I could have done this.
46:01Um go to Data Lake Objects.
46:04Go get book.
46:11Yeah, go get book, hit save, bring book in again.
46:14Does it let me do it twice?
46:15Yes, it does.
46:17Now go get a join object, go get the DLO for info.
46:24Where is that?
46:25And because I've created a calculated insight,
46:31Does it come up here?
46:33Oh, I don't think it does.
46:39Oh, that's really sad if that doesn't happen.
46:50Wait, it does
46:56No, this is book.
46:57So book ID already exists.
47:02Book ID one, book ID two
47:05But no, no calculated insight here.
47:10So it's not bringing that through.
47:12That was a shame.
47:12That would make that would make sense to me.
47:14So create something out there just for that table and have it show here
47:19and have the calculation compute in here in the logical view.
47:22That would be the best thing to do in my honest opinion.
47:24So um I'm gonna have to declare defeat on that.
47:28If if you know a way of doing that, if there's another way of doing that, let's
47:30Me know.
47:31I'll close this book info um logical thing and call like all the things we tried down here.
47:38Um now one of the things you can do is you can test this data model.
47:42So you can go up here and say
47:44uh test model okay and you can say hey search for a dimension and you'll see all the dimension across all our different things so we can say go get a book
47:53um ID from the book table and then go get a title and we can get it from let's see our words table just to test that relationship a bit more and then we can also get um
48:07What should we get what else should we get from the award?
48:10Uh the award name.
48:12So here's a book ID.
48:14Um let's go get the title.
48:17as well from the book table so we can just see that that works.
48:22So you're basically dictating the columns you want to bring sample is a hundred rows.
48:27And this is nice because you're basically testing the relationship, and indeed it does work.
48:32There you go.
48:32There's a lovely little data model working.
48:35Semantic query is right there.
48:38Um
48:41You could turn this into SQL apparently.
48:43So this semantic model is it's basically a JSON object.
48:48It's basically saying here's the column, here's all the like metadata about it.
48:53And you can essentially use this to go and get a ton of information.
48:58But the semantic query also contains the metadata about those fields.
49:01So you can actually use this in a quite useful way to understand how a dataset works, where it's coming from, the data types, all the configurations.
49:08And even export that to your metadata store or whatever.
49:11So that's a really, really nice touch.
49:13Um Kirk again, I talked to Kirk off record saying that.
49:17He was talking about how he's used this to turn this into SQL.
49:20He's basically said, here's some JSON object, can you turn it into SQL against my data source?
49:25And I think that's how that would work pretty well
49:27If you had a snowfield connection, I'm hoping that would work that way as well.
49:32So yeah, this is a really nice touch, the semantic modeling.
49:35It's really simple, it's really, really straightforward.
49:37You can test your model works.
49:39You can save some of these as well.
49:41What I would really love to do is have this saved as a test.
49:45So not just being able to run it, but have it save it as like an on
49:49why not have as part of our semantic model a test section so you can have specific tests that test relationships that test different things and actually
50:00have it only show the number of errors in this list.
50:03So you could have like a test section, a series of tests, and then only have the number one.
50:08if it spots an error and that way as you're building your model as you add things to your model you don't have to keep checking and keep creating these tests you can kind of save them persist them
50:18And then keep going.
50:19Um yeah, so that's that's an idea, Tableau, if you're listening.
50:23So listen.
50:25There's 50 minutes for this semantic model.
50:27Now, of course
50:28I was figuring it out.
50:30We were figuring it out together.
50:31I hope.
50:32I feel like you're watching it with me.
50:34But I think it's pretty cool.
50:36It's pretty nice.
50:40It's actually pretty flexible
50:42Um there's a few things where I'm like, oof, that user experience is really not great, but I think that's pretty obvious to the people developing the developing this.
50:51The big hands behind your back kind of thing about this is you're doing it in the browser.
50:56There's no software, I'm just doing it inside of Google Chrome, and everything just works like it should do.
51:01So
51:02There we have it.
51:04That was Tableau Semantics.
51:06Now once you've done that, you can go ahead and hit save, go back to our workspace, and what we should see.
51:12Oh.
51:13Go back to our workspace, yeah.
51:14Come on, do it.
51:15Is a bookshop semantic model.
51:17So we've got our data objects, we've got our semantic model.
51:20In tomorrow's video, we will build a visualization.
51:23Thanks for watching.
51:24See you later.
Future-proof your career https://n1d.io
| -------
Join this channel to get access to perks:
https://www.youtube.com/channel/UC7HYxRWmaNlJux-X7rNLZyw/join
#tableau #salesforce #analytics #data
Follow me on Twitter: https://twitter.com/TableauTim
My recording gear & what’s on my desk. https://kit.co/TableauTim/desk-setup
My website: https://www.tableautim.com/
My Screen Annotation Tool: https://j.mp/3HWc4Mj
My technology Channel: https://j.mp/3F0d28f
(C) 2026 TN-Media LTD. No re-use, unauthorized use, or redistribution, of this video without prior permission.