瀏覽代碼

add function

xufei 4 年之前
父節點
當前提交
6d25ab29e8

+ 59 - 0
src/main/java/com/winhc/bigdata/udf/find_companyid.java

@@ -0,0 +1,59 @@
+package com.winhc.bigdata.udf;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONPath;
+import com.aliyun.odps.udf.UDF;
+import com.aliyun.odps.utils.StringUtils;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @Author: π
+ * @Description: 取
+ */
+public class find_companyid extends UDF {
+
+    public String evaluate(String jsons) {
+        if (StringUtils.isBlank(jsons)) {
+            return "";
+        }
+
+        try {
+            HashSet<String> set = new HashSet<>();
+            String[] jsonArr = jsons.split("&&", -1);
+            for (String json : jsonArr) {
+                String[] arr2 = json.split("@@", -1);
+                String comapny_id = arr2[0];
+                String company_type = arr2[1];
+                String deleted = arr2[2];
+                if (jsonArr.length == 1) {
+                    return comapny_id;
+                }
+                //company_type = 1 deleted = 0
+                if (StringUtils.isNotBlank(company_type) && StringUtils.isNotBlank(deleted) && "1".equals(company_type) && "0".equals(deleted)) {
+                    set.add(comapny_id);
+                }
+            }
+            if (set.size() != 1) {
+                return "";
+            }
+            return set.iterator().next();
+        } catch (Exception e) {
+            return "";
+        }
+    }
+
+
+    public static void main(String[] args) {
+        String jsons = "10a704a26e011f74b9dac8190d08d3d7@@2@@0&&390cff501246a61c828dacaf24da1b6d@@1@@0";
+        find_companyid n = new find_companyid();
+        System.out.println(n.evaluate(jsons));
+    }
+
+}
+
+

+ 52 - 0
src/main/java/com/winhc/bigdata/udf/split_names.java

@@ -0,0 +1,52 @@
+package com.winhc.bigdata.udf;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONPath;
+import com.aliyun.odps.udf.UDF;
+import com.aliyun.odps.utils.StringUtils;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author: π
+ * @Description: 获取json 里字段
+ */
+public class split_names extends UDF {
+
+    public List<String> evaluate(String jsons, String json_path) {
+        if (StringUtils.isBlank(jsons)) {
+            return new ArrayList<>();
+        }
+        try {
+            String[] jsonArr = jsons.split("&");
+            HashSet<String> set = new HashSet();
+            for (String json : jsonArr) {
+                parse(json, json_path, set);
+            }
+            return new ArrayList<>(set);
+        } catch (Exception e) {
+            return new ArrayList<>();
+        }
+    }
+
+    public void parse(String json, String json_path, Set set) {
+        JSONArray jsonArray = ((JSONArray) JSONPath.eval(JSON.parse(json), json_path));
+        for (Object o : jsonArray) {
+            set.add(o);
+        }
+    }
+
+    public static void main(String[] args) {
+        String jsons = "[{\"name\":\"张海林\",\"litigant_id\":\"\"},{\"name\":\"招商银行股份有限公司信用卡中心\",\"litigant_id\":\"cc45eeb0634f73531ba54ad55ba152a6\"}]&[{\"name\":\"上海浦东发展银行静安支行\",\"litigant_id\":\"c2c57fcc6398cfd49393c1a2d3c35a4c\"}]";
+        String json_path = "$.name";
+        split_names n = new split_names();
+        System.out.println(n.evaluate(jsons, json_path));
+    }
+
+}
+
+

+ 26 - 0
src/main/java/com/winhc/bigdata/udf/str_contain.java

@@ -0,0 +1,26 @@
+package com.winhc.bigdata.udf;
+
+import com.aliyun.odps.udf.UDF;
+import com.aliyun.odps.utils.StringUtils;
+import com.google.gson.Gson;
+
+import java.util.HashMap;
+
+/**
+ * @Author: π
+ * @Date: 2020/5/14 16:26
+ * @Description: 字符串包含关系
+ */
+public class str_contain extends UDF {
+
+    public Boolean evaluate(String full_str, String str) {
+        if (StringUtils.isBlank(full_str) || StringUtils.isBlank(str)) return false;
+        return full_str.contains(str);
+    }
+
+    public static void main(String[] args) {
+        System.out.println(new str_contain().evaluate("abccfdgd", "cfdg"));
+    }
+}
+
+