数仓构建维表--行政区域维度表的构建

前言

为啥子要花时间搞这个呢? 就是写sql的时候,想要一个省市区维表,在网上找啊找啊找,不是要钱,就是要C币,或者就是别的,竟然没有公益的,共享一下不好吗?

太抠了,今天我来分享一个,哈哈...  搞个维表很简单de呦,下面说一下我做的方法:咱也用把(3W)方法来进行分析下。

获取行政区域数据

What?

行政区域数据是什么呢?

其实就是 国,省(自治区),市,区县,镇/街道,街、路、巷等区域地址信息。

Why?

为什么要获取省市区呢?

  • 哎呀,这个原因就有很多了
  • 比如说地址解析啊?
  • 维表关联获取省市区啊?
  • 比如说需要行政区域信息呀?
  • 制作标签啊?

太多了,不多bb了。

How?

如何做呢?

怎么做?很简单鸭,行政区域,哪里会有呢?要么国家官方网站上,要么地图呗?在此我选择了高德地图,毕竟alibb开源的各种玩意儿还是比较优秀,比较靠谱的了。

高德webAPI行政区域查询接口(开发者手册):https://lbs.amap.com/api/webservice/guide/api/district

这个东西,就不要问我是怎么找的了,忘记什么时候做地图相关项目,地址解析的时候知道的。

打开页面如下:

 

申请个开发者的key哦~ 反正也不要钱,就是注册一下下啦,别吝啬嘛~

翻到该网页最底端,输入行政区名字,设置下级行政区级数,即可返回行政区域数据啦。json格式的哦,开不开森?

可能有人会问key怎么申请呢?

怎么搞呢,在此就多bb两句了,选择控制台->应用管理-> 创建应用-> 即可获得key(个人版有限制哦 6000次吧一天好像)

如下图:

准备工作已完毕,你学会了吗?

在浏览器里面输入对应访问地址,加上自己申请的key,就可以拿到响应的json格式行政数据喽~

生产csv数据,加工成维度表

下面贴一把自己写的json数据解析,只解析了三层哦,代码赶时间,不喜勿喷,哈哈...

package com.dtdwave.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 * 解析高德API区域划分信息,获取省市区县维表
 * 
 * @author zhangchenguang
 * 2019年11月20日
 */
public class ParseJson {

	public static void main(String[] args) throws Exception {
		File file = new File("/Users/zhangchenguang/Desktop/pcd.json");
        StringBuilder result = new StringBuilder();
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"));
        String s = null;
        while ((s = br.readLine()) != null) {//使用readLine方法,一次读一行
            result.append(System.lineSeparator() + s);
        }
        br.close();
//        System.out.println(result.toString());
        JSONObject json1 = JSONObject.parseObject(result.toString());
        JSONArray ja1 = (JSONArray)json1.get("districts");
        JSONObject json2 = (JSONObject)ja1.get(0);
        JSONArray ja2 = (JSONArray)json2.get("districts");
        
        // System.out.println(ja2.toJSONString());
       
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MrZhangBaby

请博主喝杯奶茶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值