• Kettle【实践 06】使用 HTTP client 获取 GPC 全球商品分类代码 JSON 数据处理入库全流程(云资源分享:ktr+数据.sql)


    资源链接在文章末尾,包含文件:

    在这里插入图片描述

    1.介绍

    本次获取的数据是来自【中国商品信息服务平台】的 GPC分类代码(中文版)

    GPC分类代码是国际物品编码组织( GS1) 依据GPC标准将特征相似的商品归为一类的代码。GS1全球商品分类标准(Global Product Classification, GPC)不断扩展更新,每年发布两个新版本。GPC分类代码按照大类(Segment)、中类(Family)、小类(Class)、细类(Brick)来划分,并细分为具体的商品核心属性类型和属性值。商品数据交换中,通常采用第4级代码,即细类代码。

    2.转换流程

    转换的逻辑还是很清晰简单的,使用HTTP client获取数据 > 解析json格式的结果数据 > 入库。

    在这里插入图片描述

    -- 建表语句
    CREATE TABLE "public"."data_global_product_classification_kettle" (
      "id" int4 NOT NULL,
      "pid" int2,
      "code" varchar(64) COLLATE "pg_catalog"."default",
      "description_en" varchar(255) COLLATE "pg_catalog"."default",
      "description" varchar(255) COLLATE "pg_catalog"."default",
      "hierarchy" int2,
      CONSTRAINT "data_global_product_classification_copy1_pkey" PRIMARY KEY ("id")
    );
    COMMENT ON COLUMN "public"."data_global_product_classification_kettle"."id" IS '唯一ID';
    COMMENT ON COLUMN "public"."data_global_product_classification_kettle"."pid" IS '父级ID';
    COMMENT ON COLUMN "public"."data_global_product_classification_kettle"."code" IS 'code码';
    COMMENT ON COLUMN "public"."data_global_product_classification_kettle"."description_en" IS '英文描述';
    COMMENT ON COLUMN "public"."data_global_product_classification_kettle"."description" IS '描述';
    COMMENT ON COLUMN "public"."data_global_product_classification_kettle"."hierarchy" IS '等级';
    COMMENT ON TABLE "public"."data_global_product_classification_kettle" IS '全球商品分类数据表';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.1 确定URL及结果数据格式

    GPC分类代码(中文版)页面找到了请求数据的连接:http://b2b.gds.org.cn/coding/GetGPC

    在这里插入图片描述
    我们想要的数据为json格式的list对象:

    在这里插入图片描述

    2.2 步骤详情

    1️⃣ HTTP client 使用

    大家一定要注意,url 要通过生成记录工具或从文件内读取,不要直接在HTTP client的URL输入,否则无法获取数据,具体原因未知,说多了都是泪 😢

    在这里插入图片描述
    HTTP client 的配置比较简单,要注意 URL 字段名要与配置的URL步骤字段名一致,结果字段名自定义即可。

    在这里插入图片描述
    2️⃣ JSON input

    获取的数据为 JSON 格式,所以使用 JSON input 解析,很常用的工具,这里不再过多赘述。

    在这里插入图片描述
    由于 URL 数据无法预览,这里有个小技巧,我们可以将结果数据放到json文件内,让 JSON 输入自动获取字段数据,效率高,也不容易出错。

    在这里插入图片描述
    3️⃣ 数据入库

    这个步骤还有啥可说的?

    在这里插入图片描述

    2.3 结果查询

    执行这个ktr数据已经入库:

    在这里插入图片描述

    3.进阶操作

    这里只分享几个SQL不做详细说明。

    1️⃣ 将一列变成多行

    使用的是函数 regexp_split_to_table 这个函数的结果是无法进行 DISTINCT 操作的。

    CREATE TABLE commodity_classification_dictionary_tmp AS 
    SELECT ID, regexp_split_to_table( VALUE, ',' ) AS "value" 
    FROM commodity_classification_dictionary ORDER BY 1, 2
    
    • 1
    • 2
    • 3

    2️⃣ 一张表更新另一张表

    Greenplum 数据库的string_agg类似与 MySQL的 group_concat

    -- 更新数据准备
    SELECT t.ID, string_agg(t.VALUE, ',' ) FROM (
    SELECT DISTINCT id,value FROM commodity_classification_dictionary_tmp
    ) t GROUP BY t.id
    
    -- 更新数据
    UPDATE data_commodity_classification_dictionary_new AS t1 
    SET VALUE = t2.VALUE 
    FROM
    	( SELECT t.ID, string_agg(t.VALUE, ',' ) AS "value" FROM (
    SELECT DISTINCT id,value FROM data_commodity_classification_dictionary_tmp
    ) t GROUP BY t.id ) t2 
    WHERE
    	t1.id = t2.id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    【资源连接】

    链接:https://pan.baidu.com/s/1pCu-_S883kGJXVM0GhbyNA
    提取码:smms

  • 相关阅读:
    《HDMapNet:An Online HD Map Construction and Evaluation Framework》论文笔记
    Flutter快学快用23 架构原理:为什么 Flutter 性能更佳
    R语言ggplot2可视化:使用patchwork包将两个ggplot2可视化结果横向构成新的结果可视化组合图(使用|符号)
    LeetCode中等题之旋转图像
    .NET 7 发布的最后一个预览版Preview 7, 下个月发布RC
    ILM ADO storage tiering policy on table partition
    lnmp 环境搭建wordpress
    React中memo()、useCallback()、useMemo() 区别使用详解
    管理RMAN备份_维护RMAN备份和仓库记录
    redis -- 基本介绍 -- 字符串、列表、集合、有序集合、哈希
  • 原文地址:https://blog.csdn.net/weixin_39168541/article/details/126177087