Hi Marc, thanks for the informative video, it is really helpful. I have used the above for creating a geo map between Members and Zip Codes. We generally host events at specific Zip codes and hence need to find out members which reside within 5/10/20 mile radius of that Zip code . I have created the join using the below I have two data sources : Member and Zip Code Columns in Zip Code dataset include : First5 (which are the Zip Codes), Zip5 latitude, Zip5 longitude . Columns in Member include : Member Id, Mem_lat, Mem_long, Zip5 latitude, Zip5 longitude, First5 . inorder to find members within a specific radius i have used both the tables by joining them using : i used the below in the member table- Makepoint( Mem_latitude,Mem_longitude) intersects i used the below in the Zip Code table- BUFFER(MAKEPOINT([Latitude],[Longitude]),5,"miles") After which , i used right join , in order to ensure that in my geo map, I get both : Members in range Members out of range However , in the geo map when I add members IN range + Out range , there is difference of around 40 members.Please can you help me with it
Hi - It's quite difficult to debug that kind of issue here in the comments. I'd recommend posting on the Tableau Forums where you can also upload your workbook as it will be much easier for someone to diagnose. Thanks. community.tableau.com/s/explore-forums
Hi Marc, big fan here, your mapping tutorials have been a huge help for a project I'm working on, thanks! Quick question, at the beginning you joined both datasets using intersect and an inner join, this join returned all the points inside the buffer but in my application I need to see the points inside and outside the buffer, how can I do that? Thanks! 🙏🏼
Hi Adolfo - thanks for the kind words. You should be able to use an outer (or right) join to include those points that don't intersect. If you still see issues, I'd recommend posting on the forums along with your workbook so someone can take a closer look. Hope that helps.
Thanks for the video Marc. I learned a lot from your video and I used it for one of my projects. Everything works well except sometimes when buffers overlap and distance parameter is less than maximum value Tableau does not color buffers correctly. For some buffers the distance is clearly less than chosen parameter value but it colors gray (false). Seems like Tableau is picking the distance from other overlapping point. But when use a table view, the distances and true false conditions are correct. I tried to use different LODs to color correctly all points within all overlapping bufferes but no luck. Do you know what could be the issue? I think it might be Tableau glitch. Thanks.
Hi Marc, great video. Really appreciate this!! Im wondering how to do this exercise if the two datasets are already in one reference excel file. For example, if ev charging points data and airbnb data are stacked in 1 excel. I attempted this by creating new calculation field and was able to get ev charging location and airbnb location ok (using if function to slice the data) but i was not able to get the distance function to output anything. The distance function calculation was valid but it doesnt show anything. I think the problem is I did not join anything at all (your case, you had to join the data from two files or table and chose intersect and so on). For my data, there isnt anything to join at the datasource level. Is there a way to join the data at the field level? Sorry for bombarding you with this but please help a lad out. Thank you!
Hi Nicccy - yes, you need two sources to make the join. Can you separate the data out into two separate sources? If not, you could duplicate the source - connect to it twice - and filter each source to the relevant data then make the join. Hope that helps.
Thanks so much for this video. My join is not working. I receive an error that states "The join field [Calculation] is a spatial column and must use a spatial comparison. I've set both of them as spatial calculations. I'm quite confused here.
Thanks Marc. This is really helpful. I have the same issue that @roiargaman850 raised a year ago. The In Range calculation does not color points correctly if distance parameter value is less than maximum available value. When parameter is at maximum everything works perfectly. However, when parameter value is less than maximum some points are not being colored correctly. For example, I can clearly see some points are within range of buffer 1 but colored gray because, for some reason, the distance is calculated from buffer 2, which is further away and that's why it's being colored gray. I know some people raised this question a while ago. I wonder if you heard any resolution to this issue. Thanks again for the excellent tutorial!
Hi Tom, it's difficult to debug these kinds of issues here. I'd recommend posting on the Tableau forums and attaching a packaged workbook. It will be easier for someone to explore the issue in detail. Thanks. community.tableau.com/s/explore-forums
Hi Marc, thanks a lot for this video! I have a question, if I want to see how many Airbnbs are in a buffer around other Airbnb (skipping the part with EV stations). Do I need to duplicate the source and join them with Intersects or is there simpler solution?
@MarcReid Thank you very much for this tutorial, although it has been online a while, it is extremely helpful. And this comment is extremely important, because I got the impression from other tutorials that it is possible do to these calculations with different rows. However, I tried to check if there is any point within a (rather large) series of overlapping buffers and failed. Due to the multiplication in the intersects this seems to be tricky, because every buffer have true and false intersects. Has anyone an idea how I can identify the buffers with no points within a defined range?
Hey Marc! This video is seriously the most helpful and informative tutorial I've ever come across, so I seriously appreciate it! Quick question in my case is that for my "In Range" calculation, my "AirBnB" locations are currently showing up as both true and false for in range and I can't figure out why. Any ideas?
Hi Scott, thanks for the kind words - much appreciated. It will depend on your data and how you've configured the join (inner, left, outer), but if a point meets the join criteria for multiple buffers, you'll get multiple rows. To ensure the True rows are on top, you might need to reorder the values in the colour legend (top right in the video), you can click and drag them. Hope that helps. If not, the best thing to do is open a case on the Tableau forums so the workbook can be shared (community.tableau.com/s/explore-forums), there's generally a very quick response.
@@MarcReid Thanks for the quick response man, made me an instant subscriber. Yeah I'd suspect something must be going on with my joins. When I make the "In Range" field a filter and have it set to true, the color's reflect appropriately along with the accurate distances being displayed. However, when I set it to All, the distances get really wonky and begin to calculate for other locations rather than the one it's "within range" of I'm guessing. I'll go ahead and try to switch away from an inner join if that works. What do you mean by "To ensure the True rows are on top, you might need to reorder the values in the colour legend (top right in the video), you can click and drag them"? in case you have another moment?
@@scottgill1515- the odd numbers you are seeing might be the aggregation of values for the dupe rows. (see this timestamp for more: th-cam.com/video/pqb6RMGFVl0/w-d-xo.htmlsi=5RNz5uDjy1R-aIlg&t=500). re the colour reordering, if you have one point in range of one buffer but out of range of a second buffer (true and false), those two points will overlap on the map so you'll true or false on top depending on the z-order depending on how the colours are sorted, which you can change by dragging the colours in the legend to change. Hope that makes sense.
@@MarcReid You are the smartest man alive!! No fix needed with the join just needed to re-order the color legend like you suggested haha. Have no idea how you figured that out but it's awesome. I appreciate you so much!
Hi Marc, This is incredible Thank you! Quick Question - If i want each buffer point to have its own individual radius, i.e. one is a 5 mile radius, 2nd is a 8 mile radius and the third a 12 mile radius.. Would something like this work? instead of this: BUFFER(MAKEPOINT([Latitude],[Longitude]),5,"miles") I could do: BUFFER(MAKEPOINT([Latitude],[Longitude]),[Column that has different numbers for each point],"miles")
Marc, this is amazing, thx! It works great except for some performance issues: We are searching for gastronomy from OpenStreetMap in 500 m radius of Airbnbs & every query takes forever to load. Do you have some tips for us to make our dashboard more presentable? Greetings from Berlin
Hi - thanks for the feedback. Spatial joins can be slow if you're working with a lot of data especially if points are contained within multiple buffers as you are then creating multiple rows for each point. If you can pre-filter that data that would help. For further help it's best to post a workbook on the Tableau forums where someone can then take a look.
Hi mark, I did everything as you did, but some points weren't quite right. If I have points that are located inside two buffers when the parameter is at the largest size (500 m), some of them do not show "in range" when the size is smaller (let's say 400 m). However, all of them are within one buffer (buffer 1). When I enlarge the parameter and those points get inside the two buffers, it works. Also when I look at the distance of one of those points, it's showing the distance from buffer 2 and not from buffer 1 which encomposes them. It appears that tableau does not know which points are linked to which buffers.
Hi - It's not totally clear to me the scenario you're explaining, however, if your point is within range of two buffers then the spatial join will result in two rows. You then need to determine which of those you want to use - for displaying the distance or whatever. If this doesn't help I'd recommend sharing your workbook on the Tableau forums for more specific help.
@@MarcReid Thanks for the reply, I will try to refine the case. A point that is closer to buffer 1 and is within its radius, is not considered part of buffer 1. For example: the condition I created as in your example "within range" does not show it as being within the range, and the distance actually refers to buffer 2, which is further away. As soon as I change the parameter and increase its radius to the maximum (I did as in your example - 500 m), and both buffers contain the point, then the data of the point correctly refers to the buffer closest to it - buffer 1.
@@roiargaman850 - I'd suggest making a post on the Tableau Forums where you can also upload your workbook as it will be much easier for someone to diagnose. Thanks. community.tableau.com/s/explore-forums
Hello, an amazing tutorial thank you so much!, I just have a question, hope you can help me 🙌, how can I change the distance (buffer calculation) of some selected point in the map and keep that distance even if it is unselected? I am trying to have different distances in the same visualization
Hi Liz, thanks for the feedback. If I understand your requirement correctly, it's not really possible to have a dynamic size per buffer without having a parameter for every row and conditional statements in the buffer calc. You could make the buffers different sizes by including a buffer size column in your data and then referring to that field in the buffer calc. Hope that helps.
When applying the in range calculation, it shows me the total distances instead of the minimum distances again... resulting in every point being out of range. any idea why this might happen or what a solution could be?
Hi Marc, when i bring in the second point data, there is an error message saying "fields can not be used from sheet because there is no relationship to the primary data source". Do you know how to fix this issue? Thank you!
Hi Yiran, it sounds like you are creating a blend rather than a join. Take a look at this help page on joining data: help.tableau.com/current/pro/desktop/en-us/joining_tables.htm#create-a-join
Amazing tutorial - shows the right mind can extract the best from tableau!
Simply amazing on how you start telling the story.
Thanks! Glad it was useful.
Unreal, I need to do this exact project tonight. Thank you for such a fantastic overview.
You're welcome! Happy to hear it was useful.
Thanks Marc,
I enjoyed your video and ideas.
Very nice!
gab
Rio Cuarto, Argentina
Thanks, Gabriel.
Hi Marc,
thanks for the informative video, it is really helpful. I have used the above for creating a geo map between Members and Zip Codes. We generally host events at specific Zip codes and hence need to find out members which reside within 5/10/20 mile radius of that Zip code .
I have created the join using the below
I have two data sources : Member and Zip Code
Columns in Zip Code dataset include : First5 (which are the Zip Codes), Zip5 latitude, Zip5 longitude .
Columns in Member include : Member Id, Mem_lat, Mem_long, Zip5 latitude, Zip5 longitude, First5 .
inorder to find members within a specific radius i have used both the tables by joining them using :
i used the below in the member table-
Makepoint( Mem_latitude,Mem_longitude)
intersects
i used the below in the Zip Code table-
BUFFER(MAKEPOINT([Latitude],[Longitude]),5,"miles")
After which , i used right join , in order to ensure that in my geo map, I get both :
Members in range
Members out of range
However , in the geo map when I add members IN range + Out range , there is difference of around 40 members.Please can you help me with it
Hi - It's quite difficult to debug that kind of issue here in the comments. I'd recommend posting on the Tableau Forums where you can also upload your workbook as it will be much easier for someone to diagnose. Thanks. community.tableau.com/s/explore-forums
It's amazing, thanks a lot. I am studing this topic for my Master of Science.
Awesome! Great to hear. Thanks.
Hi Marc, big fan here, your mapping tutorials have been a huge help for a project I'm working on, thanks!
Quick question, at the beginning you joined both datasets using intersect and an inner join, this join returned all the points inside the buffer but in my application I need to see the points inside and outside the buffer, how can I do that?
Thanks! 🙏🏼
Hi Adolfo - thanks for the kind words. You should be able to use an outer (or right) join to include those points that don't intersect. If you still see issues, I'd recommend posting on the forums along with your workbook so someone can take a closer look. Hope that helps.
Thanks for the video Marc. I learned a lot from your video and I used it for one of my projects. Everything works well except sometimes when buffers overlap and distance parameter is less than maximum value Tableau does not color buffers correctly. For some buffers the distance is clearly less than chosen parameter value but it colors gray (false). Seems like Tableau is picking the distance from other overlapping point. But when use a table view, the distances and true false conditions are correct. I tried to use different LODs to color correctly all points within all overlapping bufferes but no luck. Do you know what could be the issue? I think it might be Tableau glitch. Thanks.
Hi Marc, great video. Really appreciate this!! Im wondering how to do this exercise if the two datasets are already in one reference excel file. For example, if ev charging points data and airbnb data are stacked in 1 excel. I attempted this by creating new calculation field and was able to get ev charging location and airbnb location ok (using if function to slice the data) but i was not able to get the distance function to output anything. The distance function calculation was valid but it doesnt show anything. I think the problem is I did not join anything at all (your case, you had to join the data from two files or table and chose intersect and so on). For my data, there isnt anything to join at the datasource level. Is there a way to join the data at the field level? Sorry for bombarding you with this but please help a lad out. Thank you!
Hi Nicccy - yes, you need two sources to make the join. Can you separate the data out into two separate sources? If not, you could duplicate the source - connect to it twice - and filter each source to the relevant data then make the join. Hope that helps.
Thanks so much for this video. My join is not working. I receive an error that states "The join field [Calculation] is a spatial column and must use a spatial comparison. I've set both of them as spatial calculations. I'm quite confused here.
I figured it out. I needed to change my equals sign to "intersects".
Thanks Marc. This is really helpful. I have the same issue that @roiargaman850 raised a year ago. The In Range calculation does not color points correctly if distance parameter value is less than maximum available value. When parameter is at maximum everything works perfectly. However, when parameter value is less than maximum some points are not being colored correctly. For example, I can clearly see some points are within range of buffer 1 but colored gray because, for some reason, the distance is calculated from buffer 2, which is further away and that's why it's being colored gray. I know some people raised this question a while ago. I wonder if you heard any resolution to this issue. Thanks again for the excellent tutorial!
Hi Tom, it's difficult to debug these kinds of issues here. I'd recommend posting on the Tableau forums and attaching a packaged workbook. It will be easier for someone to explore the issue in detail. Thanks. community.tableau.com/s/explore-forums
Hi Marc, thanks a lot for this video! I have a question, if I want to see how many Airbnbs are in a buffer around other Airbnb (skipping the part with EV stations). Do I need to duplicate the source and join them with Intersects or is there simpler solution?
Hi - yes, I think a self join would be the way to go. Essentially it's a row level calculation so both points to be on the same row.
@MarcReid Thank you very much for this tutorial, although it has been online a while, it is extremely helpful. And this comment is extremely important, because I got the impression from other tutorials that it is possible do to these calculations with different rows. However, I tried to check if there is any point within a (rather large) series of overlapping buffers and failed. Due to the multiplication in the intersects this seems to be tricky, because every buffer have true and false intersects. Has anyone an idea how I can identify the buffers with no points within a defined range?
Hey Marc! This video is seriously the most helpful and informative tutorial I've ever come across, so I seriously appreciate it! Quick question in my case is that for my "In Range" calculation, my "AirBnB" locations are currently showing up as both true and false for in range and I can't figure out why. Any ideas?
Hi Scott, thanks for the kind words - much appreciated. It will depend on your data and how you've configured the join (inner, left, outer), but if a point meets the join criteria for multiple buffers, you'll get multiple rows. To ensure the True rows are on top, you might need to reorder the values in the colour legend (top right in the video), you can click and drag them. Hope that helps. If not, the best thing to do is open a case on the Tableau forums so the workbook can be shared (community.tableau.com/s/explore-forums), there's generally a very quick response.
@@MarcReid Thanks for the quick response man, made me an instant subscriber. Yeah I'd suspect something must be going on with my joins. When I make the "In Range" field a filter and have it set to true, the color's reflect appropriately along with the accurate distances being displayed. However, when I set it to All, the distances get really wonky and begin to calculate for other locations rather than the one it's "within range" of I'm guessing. I'll go ahead and try to switch away from an inner join if that works.
What do you mean by "To ensure the True rows are on top, you might need to reorder the values in the colour legend (top right in the video), you can click and drag them"? in case you have another moment?
@@scottgill1515- the odd numbers you are seeing might be the aggregation of values for the dupe rows. (see this timestamp for more: th-cam.com/video/pqb6RMGFVl0/w-d-xo.htmlsi=5RNz5uDjy1R-aIlg&t=500). re the colour reordering, if you have one point in range of one buffer but out of range of a second buffer (true and false), those two points will overlap on the map so you'll true or false on top depending on the z-order depending on how the colours are sorted, which you can change by dragging the colours in the legend to change. Hope that makes sense.
@@MarcReid You are the smartest man alive!! No fix needed with the join just needed to re-order the color legend like you suggested haha. Have no idea how you figured that out but it's awesome. I appreciate you so much!
@@scottgill1515 - 🙂 Happy to help.
Hi Marc, This is incredible Thank you! Quick Question - If i want each buffer point to have its own individual radius, i.e. one is a 5 mile radius, 2nd is a 8 mile radius and the third a 12 mile radius.. Would something like this work?
instead of this:
BUFFER(MAKEPOINT([Latitude],[Longitude]),5,"miles")
I could do:
BUFFER(MAKEPOINT([Latitude],[Longitude]),[Column that has different numbers for each point],"miles")
Thanks, Scott. Glad it was useful. Yes, you could use that method to create different sized buffers.
@@MarcReid Thank you! Looking forward to your future videos.
Marc, this is amazing, thx! It works great except for some performance issues: We are searching for gastronomy from OpenStreetMap in 500 m radius of Airbnbs & every query takes forever to load. Do you have some tips for us to make our dashboard more presentable? Greetings from Berlin
Hi - thanks for the feedback. Spatial joins can be slow if you're working with a lot of data especially if points are contained within multiple buffers as you are then creating multiple rows for each point. If you can pre-filter that data that would help. For further help it's best to post a workbook on the Tableau forums where someone can then take a look.
Hi mark, I did everything as you did, but some points weren't quite right. If I have points that are located inside two buffers when the parameter is at the largest size (500 m), some of them do not show "in range" when the size is smaller (let's say 400 m). However, all of them are within one buffer (buffer 1).
When I enlarge the parameter and those points get inside the two buffers, it works. Also when I look at the distance of one of those points, it's showing the distance from buffer 2 and not from buffer 1 which encomposes them. It appears that tableau does not know which points are linked to which buffers.
Hi - It's not totally clear to me the scenario you're explaining, however, if your point is within range of two buffers then the spatial join will result in two rows. You then need to determine which of those you want to use - for displaying the distance or whatever. If this doesn't help I'd recommend sharing your workbook on the Tableau forums for more specific help.
@@MarcReid Thanks for the reply, I will try to refine the case. A point that is closer to buffer 1 and is within its radius, is not considered part of buffer 1. For example: the condition I created as in your example "within range" does not show it as being within the range, and the distance actually refers to buffer 2, which is further away. As soon as I change the parameter and increase its radius to the maximum (I did as in your example - 500 m), and both buffers contain the point, then the data of the point correctly refers to the buffer closest to it - buffer 1.
@@roiargaman850 - I'd suggest making a post on the Tableau Forums where you can also upload your workbook as it will be much easier for someone to diagnose. Thanks. community.tableau.com/s/explore-forums
Hello, an amazing tutorial thank you so much!, I just have a question, hope you can help me 🙌, how can I change the distance (buffer calculation) of some selected point in the map and keep that distance even if it is unselected? I am trying to have different distances in the same visualization
Hi Liz, thanks for the feedback. If I understand your requirement correctly, it's not really possible to have a dynamic size per buffer without having a parameter for every row and conditional statements in the buffer calc. You could make the buffers different sizes by including a buffer size column in your data and then referring to that field in the buffer calc. Hope that helps.
Thank you, Mark!
Is it possible to have the longitude and latitude without exporting an Excel file?
Hi Alfredo, not sure I follow. I downloaded the airbnb locations from the site linked in the description. That's the only source I had for them
@@MarcReid Thank you for your response, Marc
When applying the in range calculation, it shows me the total distances instead of the minimum distances again... resulting in every point being out of range. any idea why this might happen or what a solution could be?
It may be the aggregation of your calculation. See this part of the video for an explanation: th-cam.com/video/pqb6RMGFVl0/w-d-xo.html
Hi Marc, when i bring in the second point data, there is an error message saying "fields can not be used from sheet because there is no relationship to the primary data source". Do you know how to fix this issue? Thank you!
Hi Yiran, it sounds like you are creating a blend rather than a join. Take a look at this help page on joining data: help.tableau.com/current/pro/desktop/en-us/joining_tables.htm#create-a-join
Is this 2021.1 or 2021.4?……
I'm using 2021.4 in this video. But 2021.1 will also work fine.