【问题标题】:How best to determine JSON null Variant in a Java UDF?如何最好地确定 Java UDF 中的 JSON null Variant?
【发布时间】:2023-01-28 10:35:03
【问题描述】:

在 Java UDF 中,我想确定 Variant 值是否为 JSON null,但似乎唯一的方法是将其转换为 Json String 并将其与字符串“null”进行比较。由于我正在处理可能非常大的值,将值转换为 json 字符串只是为了检查 null 似乎很浪费。有没有更好的办法?

// Current
boolean isNull = variant.asJsonString().equals("null");
 
// Preferred
boolean isNull = variant.isNull();

看起来 Variants 内部包含一个 Jackson JsonNode 实例。可以有一个调用 JsonNode.isNull() 的传递吗?

来自https://community.snowflake.com/s/question/0D5Do00000D7rgsKAB/how-best-to-determine-json-null-variant-in-a-java-udf

【问题讨论】:

    标签: java snowflake-cloud-data-platform user-defined-functions


    【解决方案1】:

    ==null比较一下:

    CREATE OR REPLACE FUNCTION java_variant_isnull(x variant)
    RETURNS string
    LANGUAGE JAVA
    PACKAGES = ('com.snowflake:snowpark:1.7.0')
    HANDLER = 'MyClass.myFunction'
    AS $$
        import com.snowflake.snowpark_java.types.Variant;
        public class MyClass {
            public static String myFunction(Variant input) {
                if (null==input.asMap().get("a")) {
                    return "that was null";
                }
                return "that was not null";
            }
        }
    $$;
    
    select java_variant_isnull({'a':'akasd'});
    -- that was not null
    
    select java_variant_isnull({'a':null});
    -- that was null
    

    【讨论】:

      猜你喜欢
      • 2023-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      相关资源
      最近更新 更多