Forum Discussion
pstanek
10 years agoPost Patron
Range
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?
3 Replies
- sdjensenSolution Sage
- pstanekPost Patron
Main problem is that I have two tables in power bi without exact relation except for same parameters - latitude, longitude.
- v-sihou-msftMicrosoft Employee
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.
- In Query Editor, add 2 custom columns for each table. Make sure the Data Type is ‘Decimal Number’.