Forum Discussion
pstanek
Post Patron
10 years agoRange
I Have two tables with columns 1) Office Latitude Longitude 2)Client Latitude Longitude I need to know all clients who are less than 30 kilometers from certain office. Can I calculate it? ...
pstanek
Post Patron
10 years agoMain problem is that I have two tables in power bi without exact relation except for same parameters - latitude, longitude.
v-sihou-msft
Microsoft Employee
10 years ago
In this scenario, since you have two tables without any relationship, we can first merge these two tables and then do the distance calculation with M language in Query Editor. The link provided by sdjensenis very useful.
I assume the two tables are like below. Please refer to following steps.
- In Query Editor, add 2 custom columns for each table. Make sure the Data Type is ‘Decimal Number’.
Lat1_Rad = ([Latitude_1] / 180) * Number.PI Lon1_Rad = ([Longitude_1] / 180) * Number.PI Lat2_Rad = ([Latitude_2] / 180) * Number.PI Lon2_Rad = ([Longitude_2] / 180) * Number.PI
- Add index (1) column for both of Client and Office tables.
- Select Office table and click ‘Merge Queries’. Select Index as the matching columns. Set ‘Join Kind’ as ‘Full Outer’.
- Remove the Index columns and add a custom column in the new merged Office table.
Distance_KM = Number.Acos(Number.Sin([Lat1_Rad]) * Number.Sin([Lat2_Rad]) + Number.Cos([Lat1_Rad]) * Number.Cos([Lat2_Rad]) * Number.Cos([Lon2_Rad]-[Lon1_Rad])) * 6371
- Close and apply Query Editor, create a calculated column in Office table.
Clients_LessThan30_KM_From_Office = IF ( Office[Distance_KM] < 30, Office[Distance_KM], BLANK () )
- Drag Table chart into your canvas to show the expected results.