示例:计算距离以优化地区
在指定销售地区期间,了解销售代表与其地区之间的距离会有所帮助。通过将代表指定到附近的地区,您可以:
- 降低成本。
- 减少差旅时间。
- 加快销售周期。
如要自动计算距离,请将地区和代表与邮政编码维度值相关联。然后,在邮政编码描述字段中提供地理坐标。在计算型账户中,使用三角公式生成邮政编码之间的距离(以英里为单位)。在模型化工作表的显示列中显示距离计算结果。
先决条件
先决条件
- 安全性:“模型”权限。
- 获取销售账户地区和销售代表位置的邮政编码对应的纬度和经度。有多个在线源提供邮政编码坐标。
导航
从导航菜单中,选择 “建模”
。步骤
- 为销售账户邮政编码创建维度。
- 为销售代表邮政编码创建维度。
- 将计算添加到模型化工作表中:
- 将维度添加到模型化工作表中。
- 创建模型化计算型账户。
- 为距离添加显示列。
- 查看工作表,查看计算出的距离。
为销售账户邮政编码创建维度
从“建模”菜单中,选择 “维度”
。
- 创建 AccountZipCode 维度,并在“维度详细信息”中取消选中“列表维度”。此维度必须是分层维度。
- 创建与每个销售账户邮政编码完全相同的维度值。例如,如果邮政编码为 11411,则将维度值命名为 11411。
- 在该维度值的“描述”字段中,输入每个邮政编码的坐标。例如,邮政编码 11411 的坐标为40.694021,-73.736216.
为销售代表邮政编码创建维度
- 创建 RepZipCode 维度,并在“维度详细信息”中取消选中“列表维度”。此维度必须是分层维度。
- 创建与每个销售代表邮政编码完全相同的维度值。例如,如果邮政编码为 11422,则将维度值命名为 11422。
- 在该维度值的“描述”字段中,输入每个邮政编码的坐标。例如,邮政编码 11422 的坐标为40.66006,-73.736012.
将邮政编码维度添加到工作表中
从面包屑导航中,选择 “建模”
。从“工作表”菜单中,选择“按用户指定的工作表”或“按层级指定的工作表”。
- 选择要包括距离计算的模型化工作表旁边的“编辑”链接。
- 选择“列和层级”。
- 将销售账户邮政编码的 AccountZipCode 维度,拖动到模型化工作表构建器画布中。
- 将销售代表邮政编码的 RepZipCode 维度,拖动到模型化工作表构建器画布中的“AccountZipCode”下方。
- 保存工作表。
创建模型化计算型账户
此账户会计算两个邮政编码之间的距离,方法是对您在描述字段中提供的坐标进行求值。例如,用于计算两组坐标之间距离的通用公式需要使用 三角函数:
ACOS( COS( RADIANS(90-Lat1)) *COS( RADIANS(90-Lat2)) +SIN( RADIANS(90-Lat1)) *SIN(RADIANS(90-Lat2)) *COS( RADIANS(Long1-Long2))) * 3958.756
Lat1
和 Long1
是第一个地点的纬度和经度, Lat2
和 Long2
用于第二个地点。邮政编码的维度值包含描述中的纬度和经度坐标。您需要对在计算型账户中需要使用的公式执行额外的文本处理,才能从描述字段中提取坐标。- 使用面包屑导航返回到汇总。
- 选择“模型化账户”。
- 从工具栏中,单击“新建计算型账户”,然后输入账户详细信息:
- 代码:Distance
- 名称:距离(米)
- 类型:计算型(定期)
- 为账户指定以下数据类型设置:
- 显示格式:数字
- 公式:acos( cos( radians(90- tonumber(substring(this.AccountZipCode.description,0,search(this.AccountZipCode.description,","))))) * cos(radians(90- tonumber(substring(this.RepZipCode.description,0,search(this.RepZipCode.description,","))))) + sin(radians(90- tonumber(substring(this.AccountZipCode.description,0,search(this.AccountZipCode.description,","))))) * sin(radians(90- tonumber(substring(this.RepZipCode.description,0,search(this.RepZipCode.description,","))))) * cos(radians( tonumber(substring(this.AccountZipCode.description,search(this.AccountZipCode.description,",")+1,99)) - tonumber(substring(this.RepZipCode.description,search(this.RepZipCode.description,",")+1,99)))) ) * 3958.756
- 小数位数:4
- 保存账户。
为距离添加显示列
- 使用面包屑导航返回到“工作表汇总”。
- 选择“列和层级”。
- 从元素列表中,展开“显示列”。
- 将“距离(米)”拖动到画布中的 RepZipCode 维度正下方。
- 单击“保存”。