文档

基于Blink的实时风控实现

更新时间:
一键部署

前提条件

  • 已开通MaxCompute服务。

  • 已开通Hologres服务。

  • 已开通DataV数据可视化服务。

背景信息

本实践适用于专有云V3.14及以上版本(DataV数据可视化在V3.14输出,如果专有云是更早版本,需要本地部署DataV)。

电商网站时时刻刻都有海量的订单数据,在这些海量的订单中会有一些异常的订单数据,通过Blink实时计算可以实时地将这类异常数据过滤出来,在DataV数据大屏做直观展示,从而方便商家识别风险和控制风险。

方案概述

方案框架

1

实现流程

1
  1. 测试ECS模拟客户系统,实时产生订单信息,并主动推送到SLS。

  2. SLS日志服务收集客户系统订单日志信息。

  3. Blink实时计算进行实际数据计算,并将计算结果存储到数据仓库Hologres中。

  4. Hologres提供数据存储功能。

  5. DataV从Hologres获取数据,做大屏展示。

操作步骤

  1. 云服务器ECS上运行业务系统。

    1. 创建测试云服务器ECS。

      1. 登录Apsara Uni-manager运营控制台,在顶部菜单栏,选择产品 > 弹性计算 > 云服务器ECS

      2. 创建实例。

        在左侧导航栏,选择实例与镜像 > 实例,单击创建实例。选择网络类型、专有网络vpc、交换机vswitch、安全组、实例系列和规格等信息,镜像选择centos7.4,盘大小根据需要修改,设置登录密码并提交,等待实例启动即完成测试ECS的创建。1

    2. 登录ECS搭建业务系统并生成订单数据。

      1. 通过SSH登录ECS,在ECS中配置Java环境。

      2. 执行如下代码,使用脚本模拟业务向SLS发送业务日志。

        实际环境请部署真实业务进行测试。

        java -classpath /usr/local/package/bigdata-demo-riskcontrol-1.0-SNAPSHOT-jar-with-dependencies.jar com.aliyun.realtime.riskcontrol.SlsSendUtils <sls-endpoint> <sls-project> <sls-logstore> <access-key> <secret-key> 100 > sendData.log 2>&1
  2. 配置日志服务SLS。

    1. 登录Apsara Uni-manager运营控制台,在顶部菜单栏,选择产品 > 应用服务 > 日志服务SLS

    2. 单击创建Project,在创建项目面板,输入项目信息,完成后单击确定1

    3. 创建Logstore面板,输入相关信息后单击确定,在弹出的提示对话框,提示是否立即接入数据,单击取消1

      注意

      因为ECS会主动上送数据,无需配置接入数据源。

    4. 单击Project名称列的名称,即可查看项目名称、logstore、endpoint等信息。

    5. 执行如下命令,在SLS中观察,查看数据。

      java -classpath /usr/local/package/bigdata-demo-riskcontrol-1.0-SNAPSHOT-jar-with-dependencies.jar com.aliyun.realtime.riskcontrol.SlsSendUtils <sls-endpoint> <sls-project> <sls-logstore> <access-key> <secret-key> 100 > sendData.log 2>&1
      1
  3. 配置实时数仓Hologres。

    1. 创建Hologres实例和数据库。

      1. 登录Apsara Uni-manager运营控制台,在顶部菜单栏,选择产品 > 大数据 > 交互式分析Hologres

      2. 在左侧导航栏,选择实例列表,单击新增引擎实例,在弹出框中输入实例名称,选择实例规格,完成后单击确认,实例创建完成后运行状态列为正常运行1

      3. 操作列,单击管理,可查看实例的详细信息。1

      4. 在左侧导航栏,选择用户管理,单击新增用户,添加需要登录Hologres的用户。1

      5. 在左侧导航栏,选择DB管理,单击新增Database,在弹出的对话框中输入Database名称,完成后单击确认,即可完成数据库创建。

      6. 操作列,单击用户授权,在右侧的面版中单击新增授权,在弹出的对话框中选择被授权账号和权限策略,完成后单击确认,即完成账号对数据库的操作权限。

    2. 配置Hologres表结构。

      1. 准备MaxCompute项目。

        1. 登录Apsara Uni-manager运营控制台,在顶部菜单栏,选择产品 > 大数据 > 大数据计算MaxCompute

        2. 在左侧导航栏,选择配额组管理,单击创建,填写MaxCompute项目信息后,单击提交,即完成配额组创建。1

        3. 在左侧导航栏,选择Project管理,单击创建MaxCompute集群,输入MaxCompute集群信息后单击提交1

        4. 项目创建完成后,在Project名称列,单击项目名称,查看项目详细信息。1

      2. 准备DataWorks项目。

        1. 登录Apsara Uni-manager运营控制台,在顶部菜单栏,选择产品 > 大数据 > DataWorks。首次进入提示没有项目,需要先创建项目页面。1

        2. 在左侧导航栏,选择项目列表,单击创建工作空间。在弹出的对话框中输入基本信息,关联MaxCompute项目,完成后单击确定

      3. 添加Hologres数据库。

        1. 在左侧导航栏,选择全部产品 > 数据开发 > Holo Studio

        2. 在左侧导航栏,选择数据开发 > 新建文件夹,在弹出的对话框中输入文件夹名称,完成后提交。

        3. 单击新建数据库,在弹出的对话框中输入数据库信息并测试连通性,完成后单击完成1

          参数

          描述

          服务器

          Hologre实例详情中的域名信息。

          端口

          Hologre实例详情中的端口信息。

          数据库名

          Hologres数据库名称。

          用户名

          组织的AccessKeyID。

          密码

          组织的AccessKeySecret。

        4. 数据库添加完成后可看到该数据库信息。1

      4. 配置数据库。

        1. 在左侧导航栏,选择数据开发,鼠标悬停至1,选择Hologres开发,在弹出的对话框中输入节点信息,完成后单击提交

        2. 进入SQL编辑页面,执行如下SQL,对Hologres数据库进行表创建操作。

          BEGIN;
          CREATE TABLE public.risk_control_rule (
           "rule_type" text NOT NULL,
           "config" text,
          PRIMARY KEY (rule_type)
          );
          CALL SET_TABLE_PROPERTY('public.risk_control_rule', 'orientation', 'column');
          COMMIT;
          
          CREATE TABLE public.risk_control_event (
           "id" text NOT NULL,
           "rule_type" text NOT NULL,
           "risk_type" text NOT NULL,
           "user_id" text NOT NULL,
           "occurrence_time" text NOT NULL,
           "occurrence_city" text NOT NULL,
           "occurrence_province" text NOT NULL,
          PRIMARY KEY (id)
          );
          
          CREATE TABLE public.adm_user_info (
           "user_id" varchar NOT NULL,
           "register_time" timestamptz,
           "last_dau_dt" varchar,
           "last_diff_days" int8,
           "is_app_mau" varchar,
           "login_days_cnt" int8,
           "gender" varchar,
           "age" int8,
           "res_city_name" varchar,
           "device_info" varchar,
           "imei" varchar,
           "phone_number" varchar,
          PRIMARY KEY (user_id)
          );
          1
        3. 运行完成无报错后,查看数据表信息。1

        4. 在左侧导航栏,选择数据开发,鼠标悬停至1,选择一键本地上传文件,上传数据信息,创建维表public.adm_user_info和public.risk_contron_rule。

        5. 在弹出的对话框中,选择要上传的数据文件、字符集,完成后单击提交,等待上传完成。1第二张表数据上传方式和第一张表步骤相同。

  4. 配置Blink实时计算。

    1. 创建Blink项目。

      1. 登录Apsara Uni-manager运营控制台,在顶部菜单栏,选择产品 > 大数据 > 实时计算Realtime Compute

      2. 在页面顶部选择资源集,单击新建项目,在弹出的对话框中输入如下信息,完成后单击确定1

    2. 创建作业。

      1. 在页面右上方,单击开发1

      2. 在左侧导航栏,选择项目单击鼠标右键,选择新建作业,创建作业disk_control_detect和disk_control_rule_not_in_normal_city。1作业创建完成后可查看到该作业。1

    3. 作业开发和上线。

      1. 选择作业并单击,在作业SQL编辑页签,分别输入如下SQL。

        --SQL
        --********************************************************************--
        --Author: hol_blink01
        --CreateTime: 2021-07-06 10:59:01
        --Comment: 请输入业务注释信息
        --********************************************************************--
        create table sls_order_stream (
          user_id VARCHAR COMMENT 'user_**',
          product_id VARCHAR COMMENT '商品**',
          seller_id VARCHAR COMMENT '卖家**',
          order_time TIMESTAMP COMMENT '下单时间',
          total_value VARCHAR COMMENT '总金额',
          phone_number VARCHAR COMMENT '客户端ip',
          city VARCHAR COMMENT '城市',
          from_source VARCHAR COMMENT '',
          imei VARCHAR COMMENT '',
          device_info VARCHAR COMMENT '',
          currency VARCHAR COMMENT '',
          WATERMARK FOR order_time AS withOffset (order_time, 60000)
        ) with (
          type = 'sls',
          endPoint = 'data.cn-****hou-ste4-d01.sls-pub.cloud.ste4.com',
          accessId = 'KsmMnk7mBDOh****',
          accessKey = 'gSUFkZUn2EwobMr6EAEE3SklSL****',
          project = 'holblink',
          logStore = 'order_log'
        );
        CREATE table holo_risk_control_event (
          id VARCHAR,
          rule_type VARCHAR,
          risk_type VARCHAR,
          user_id VARCHAR,
          occurrence_time VARCHAR,
          occurrence_city VARCHAR,
          occurrence_province VARCHAR,
          PRIMARY KEY (id)
        ) with (
          type = 'custom',
          tableFactoryClass = 'com.alibaba.blink.connectors.hologres.table.factory.HologresTableFactory',
          dbname = 'blink01',
          tablename = 'risk_control_event',
          username = 'KsmMnk7mBDOhQvBl',
          password = 'gSUFkZUn2EwobMr6EAEE3SklSLLfru',
          endpoint = 'holo-cn-38h6nfpxg268-cn-****hou-ste4-d01-internal.hologres.ops.ste4.com:80'
        );
        CREATE table holo_risk_control_rule (
          rule_type VARCHAR,
          config VARCHAR,
          PRIMARY KEY (rule_type),
          PERIOD FOR SYSTEM_TIME
        ) with (
          type = 'custom',
          tableFactoryClass = 'com.alibaba.blink.connectors.hologres.table.factory.HologresTableFactory',
          dbname = 'blink01',
          tablename = 'risk_control_rule',
          username = 'KsmMnk7mBDOhQvBl',
          password = 'gSUFkZUn2EwobMr6EAEE3SklSLLfru',
          endpoint = 'holo-cn-38h6nfpxg268-cn-****zhou-ste4-d01-internal.hologres.ops.ste4.com:80'
        );
        INSERT
          INTO holo_risk_control_event
        SELECT
          id,
          rule_type,
          risk_event_flag as risk_type,
          user_id,
          occurrence_time,
          occurrence_city,
          occurrence_province
        FROM (
            SELECT
              UUID () as id,
              t2.rule_type as rule_type,
              t2.user_id as user_id,
              t2.start_time as occurrence_time, case
                when total_value >= w.config then w.config
                when total_orders >= w.config then w.config --when total_value >= JSON_VALUE(w.config, '$.check_order_value.total_order_value_threshold') then JSON_VALUE(w.config, '$.check_order_value.risk_type')
        --when total_orders >= JSON_VALUE(w.config, '$.check_order_cnt.total_order_cnt_threshold') then JSON_VALUE(w.config, '$.check_order_cnt.risk_type')
                else -1
              end as risk_event_flag,
              occurrence_city,
              occurrence_province
            FROM (
                SELECT
                  'order' as rule_type,
                  user_id,
                  DATE_FORMAT (
                    TUMBLE_START (order_time, INTERVAL '1' MINUTE),
                    'yyyy-MM-dd hh:mm:ss'
                  ) as start_time,
                  DATE_FORMAT (
                    TUMBLE_END (order_time, INTERVAL '1' MINUTE),
                    'yyyy-MM-dd hh:mm:ss'
                  ) as end_time,
                  count (*) as total_orders,
                  sum (order_value) as total_value,
                  t1.city as occurrence_city, CASE
                    t1.city
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    WHEN _UTF16'**' THEN _UTF16'**'
                    ELSE _UTF16'其他'
                  END AS occurrence_province
                FROM (
                    SELECT
                      CAST (total_value AS BIGINT) as order_value,
                      *
                    FROM
                      sls_order_stream
                  ) t1
                GROUP
                  BY TUMBLE (order_time, INTERVAL '1' MINUTE),
                  `user_id`,
                  city
              ) t2
              JOIN holo_risk_control_rule FOR SYSTEM_TIME AS OF PROCTIME () as w on t2.rule_type = w.rule_type
          ) t3
        where
          t3.risk_event_flag > 0;
        --SQL
        --********************************************************************--
        --Author: hol_blink01
        --CreateTime: 2021-07-06 10:59:22
        --Comment: 请输入业务注释信息
        --********************************************************************--
        CREATE TABLE sls_order_stream (
          `user_id` VARCHAR COMMENT 'user_**',
          product_id VARCHAR COMMENT '商品**',
          seller_id VARCHAR COMMENT '卖家**',
          order_time TIMESTAMP COMMENT '下单时间',
          total_value VARCHAR COMMENT '总金额',
          city VARCHAR COMMENT '城市',
          device_info VARCHAR COMMENT '设备类型',
          phone_number VARCHAR COMMENT '电话号码',
          imei VARCHAR COMMENT 'imei'
        ) WITH (
          type = 'sls',
          endPoint = 'data.cn-****zhou-ste4-d01.sls-pub.cloud.ste4.com',
          accessId = 'KsmMnk7mBDOh****',
          accessKey = 'gSUFkZUn2EwobMr6EAEE3SklSL****',
          project = 'holblink',
          logStore = 'order_log'
        );
        --用户信息维表
        CREATE TABLE adm_user_info (
          `user_id` VARCHAR COMMENT '用户id',
          register_time TIMESTAMP COMMENT '注册时间',
          last_dau_dt VARCHAR COMMENT '最近一次登录日期(yyyymmdd)',
          last_diff_days BIGINT COMMENT '最近一次登录距今天数',
          is_app_mau VARCHAR COMMENT '是否MAU,即当月活跃用户(1=是)',
          login_days_cnt BIGINT COMMENT '近30日登录天数',
          gender VARCHAR COMMENT '性别',
          age BIGINT COMMENT '年龄',
          res_city_name VARCHAR COMMENT '常驻城市名称',
          device_info VARCHAR COMMENT '用户常用设备信息,iphone 11/huawei p40/RedMi',
          imei VARCHAR COMMENT '常用设备的imei',
          phone_number VARCHAR COMMENT '手机号',
          PRIMARY KEY (`user_id`)
        ) WITH (
          type = 'custom',
          tableFactoryClass = 'com.alibaba.blink.connectors.hologres.table.factory.HologresTableFactory',
          dbname = 'blink01',
          tablename = 'adm_user_info',
          username = 'KsmMnk7mBDOhQvBl',
          password = 'gSUFkZUn2EwobMr6EAEE3SklSLLfru',
          endpoint = 'holo-cn-38h6nfpxg268-cn-****zhou-ste4-d01-internal.hologres.ops.ste4.com:80',
          cache = 'LRU',
          cacheSize = '5000',
          cacheTTLMs = '60000',
          async = 'true'
        );
        --风控事件结果表
        CREATE TABLE holo_risk_control_event (
          id VARCHAR COMMENT '事件唯一**',
          rule_type VARCHAR COMMENT '规则类型',
          risk_type VARCHAR COMMENT '风控事件类型',
          `user_id` VARCHAR COMMENT '用户的唯一id',
          occurrence_time VARCHAR COMMENT '发生的时间',
          occurrence_city VARCHAR COMMENT '发生的城市',
          occurrence_province VARCHAR COMMENT '发生的省份',
          PRIMARY KEY (id)
        ) WITH (
          type = 'custom',
          tableFactoryClass = 'com.alibaba.blink.connectors.hologres.table.factory.HologresTableFactory',
          dbname = 'blink01',
          tablename = 'risk_control_event',
          username = 'KsmMnk7mBDOhQvBl',
          password = 'gSUFkZUn2EwobMr6EAEE3SklSLLfru',
          endpoint = 'holo-cn-38h6nfpxg268-cn-****zhou-ste4-d01-internal.hologres.ops.ste4.com:80'
        );
        CREATE VIEW order_join_stream AS
        SELECT
          t1.`user_id` AS `user_**`,
          t1.order_time AS order_time,
          t2.res_city_name AS res_city_name,
          t1.imei AS order_imei,
          t2.imei AS res_imei,
          t1.phone_number AS order_phone_number,
          t2.phone_number AS res_phone_number,
          t1.device_info AS order_device,
          t2.device_info AS res_device,
          t1.city AS order_city, CASE
            t1.city
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            WHEN _UTF16'**' THEN _UTF16'**'
            ELSE _UTF16'其他'
          END AS order_province,
          t2.last_diff_days AS last_diff_days,
          t2.is_app_mau AS is_app_mau,
          t2.login_days_cnt AS login_days_cnt
        FROM
          sls_order_stream t1
          JOIN adm_user_info FOR SYSTEM_TIME AS OF PROCTIME () AS t2 ON t1.user_id = t2.`user_id`;
        INSERT
          INTO holo_risk_control_event
        SELECT
          UUID () AS id,
          'login' AS rule_type, CASE
            WHEN (
              is_app_mau = '0'
              AND last_diff_days > 20
            ) THEN '7' --非活跃用户
            WHEN last_diff_days > 28 THEN '8' --距离上次登录超过28天
            WHEN login_days_cnt < 1 THEN '9' --最近30天登录的天数不到1天
            ELSE -1
          END AS risk_type,
          `user_id`,
          DATE_FORMAT (order_time, 'yyyy-MM-dd hh:mm:ss'),
          order_city,
          order_province
        FROM
          order_join_stream
        WHERE
          is_app_mau = '0'
          OR last_diff_days > 28
          OR login_days_cnt < 1;
        INSERT
          INTO holo_risk_control_event
        SELECT
          UUID () AS id,
          'order' AS rule_type, CASE
            WHEN order_city <> res_city_name THEN '3' --订单发生的城市与常驻城市不一致
            WHEN order_imei <> res_imei THEN '4' --订单发生的手机imei与常用的imei不一致
            WHEN order_device <> res_device THEN '5' --订单发生的设备与常用设备不一致
            WHEN order_phone_number <> res_phone_number THEN '6' --订单发生的手机号与常用的手机号不一致
            ELSE -1
          END AS risk_type,
          `user_id`,
          DATE_FORMAT (order_time, 'yyyy-MM-dd hh:mm:ss'),
          order_city,
          order_province
        FROM
          order_join_stream
        WHERE
          order_city <> res_city_name
          or order_imei <> res_imei
          or order_device <> res_device
          or order_phone_number <> res_phone_number;

        1SLS中需要将如下参数修改为自己的项目。

        参数

        描述

        endpoint

        SLS的内网域名。

        accessId

        组织的AccessKeyID。

        Accesskey

        组织的AccessKeySecret。

        Custom中需要将username、password、endpoint修改为自己的项目。

        参数

        描述

        endpoint

        Hologres的域名。

        username

        组织的AccessKeyID。

        password

        组织的AccessKeySecret。

      2. 在页面左下角,选择资源引用,单击新建资源。在弹出的对话框中上传资源,完成后单击上传资源

      3. 在页面左下角,选择资源引用,选择作业,单击更多,选择引用进行资源引用,选择详情可查看资源引用详情。

        Blink版本选择3.6.0。1

      4. 单击上线,上线作业。

    4. 作业运维。

      1. 在页面右上方,单击运维1

      2. 新上线的作业为停止状态,在操作列,单击启动后才能够启动作业,作业启动后单击作业查看作业的运行状态。1

  5. 配置数据可视化大屏DataV。

    1. 数据集成。

      1. 登录Apsara Uni-manager运营控制台,在顶部菜单栏,选择产品 > 大数据 > DataV数据可视化

      2. 选择我的数据页签,单击添加数据,在弹出的对话框中输入相应信息,完成后单击获取数据列表,选择相应的数据库,单击确定,即可完成数据源添加。

        参数

        描述

        类型

        数据源的类型,这里是RDS for PostgreSQL。

        名称

        数据源的名称。

        域名

        Hologres的域名信息。

        用户名

        组织的accesskeyID。

        密码

        组织的AccessKeySecret。

        端口

        Hologres的端口信息。

        数据库

        选择要连接的数据库信息。

    2. 选择我的可视化页签,单击新建可视化,单击PC端,单击创建项目,在弹出的对话框中输入名称,单击创建,完成项目创建。

    3. 数据编辑。

      1. 项目创建完成后需配置数据源,选择组件,在页面右侧选择数据,单击配置数据源1

      2. 依次完成各个组件的数据源配置。

        单击控件右侧的数据源,选择已配置的RDS for PostgreSQL,并将如下SQL输入,保存生效。

        1处sql:
        select count(*) as cnt FROM 
        risk_control_event
        where substring(occurrence_time from 0 for 11) >= substring(to_char(current_date, 'yyyy-MM-DD hh24:mi:ss') from 0 for 11);
        
        2处sql:
        select substring(to_char(h,'yyyy-MM-DD hh24:mi:ss') from 11 for 3) as sh,*
        from
        (
        select h, count(*) as cnt
        from
        (
        select 
            date_trunc('hour',to_timestamp(occurrence_time, 'yyyy-MM-DD hh24:mi:ss')) as h,*
        from risk_control_event
        ) t GROUP by h order by h desc limit 24
        ) t2 order by h asc;
        
        
        3处sql:
        SELECT
        case when t.tpe = 'order' then '订单'
        when t.tpe = 'login' then '设备登录'
        else '未知' end
        as tpe,
        cnt
        FROM
        (
          SELECT rule_type as tpe, count(*) as cnt FROM risk_control_event 
          where substring(occurrence_time from 0 for 11) >= substring(to_char(current_date, 'yyyy-MM-DD hh24:mi:ss') from 0 for 11)
          group by rule_type
        ) t
        
        4处sql:
        select case occurrence_city 
         when '**' then 120.17
         when '**' then 113.65
         when '**' then 120.65 
         when '**' then 113.23 
         when '**' then 119.93 
         when '**' then 103.83 
         when '**' then 119.3 
         when '**' then 117.18 
         when '**' then 109.38 
         when '**' then 112.18 
         when '**' then 121.43 
         when '**' then 118.3 
         when '**' then 115.77 
         when '**' then 116.35 
         when '**' then 116.97 
         when '**' then 118.87 
         when '**' then 113.02 
         when '**' then 121.12 
         when '**' then 120.63
        end as lng,--经度
        case occurrence_city 
         when '**' then 30.25
         when '**' then 34.78
         when '**' then 28.02 
         when '**' then 23.13 
         when '**' then 31.75 
         when '**' then 36.05 
         when '**' then 26.08 
         when '**' then 34.28 
         when '**' then 24.35 
         when '**' then 30.35 
         when '**' then 28.68 
         when '**' then 32.3 
         when '**' then 33.88 
         when '**' then 27.98 
         when '**' then 33.63 
         when '**' then 28.93 
         when '**' then 25.8 
         when '**' then 41.13 
         when '**' then 31.32 
        end as lat,--纬度
        occurrence_city,
        count(*) as value from risk_control_event 
        group by occurrence_city;
        
        5处sql:
        select occurrence_city as x,count(*) as y from risk_control_event group by occurrence_city order by y desc limit 10
        
        6处sql:
        select case risk_type 
        when '1' then '高额交易' 
        when '2' then '高频交易'
        when '3' then '异地交易'
        when '4' then '异常手机'
        when '5' then '异常设备'
        when '6' then '异常账号'
        when '7' then '非活登录'
        when '8' then '冻结登录'
        when '9' then '慵懒登录'
        else '其他风险' end as x,
        count(*) as y 
        from public.risk_control_event 
        group by risk_type order by y desc limit 10;
        
    4. 数据展示。

      组件编辑完成后单击页面右上角预览图标,单击正常预览,查看大屏信息。1

  • 本页导读
文档反馈