首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Informatica转换为Pyspark

将Informatica转换为Pyspark
EN

Stack Overflow用户
提问于 2019-08-29 10:50:00
回答 1查看 204关注 0票数 0

我正在尝试将informatica转换为pyspark转换,但我在替换以下代码中的char时遇到了困难:

代码语言:javascript
复制
"DECODE(TRUE,
ISNULL(v_check_neg_**) OR v_check_neg_** = '', 
i_default,
NOT IS_NUMBER(v_check_neg_** , 
i_default,
REPLACECHR(0,v_check_neg_**, '+-0123456789.' ,'')<>'', 
i_default,
TO_DECIMAL(v_check_neg_**,5))


v_check_neg_** = IIF(INSTR(i_string_**,'-')!=0,'-'||SUBSTR(i_string_**,1,INSTR(i_string_**,'-')-1),i_string_**)"

这是我尝试过的:

代码语言:javascript
复制
def is_digit(value):
    if value:
        return value.isdigit()
    else:
        return False

is_digit_udf = udf(is_digit, BooleanType())

df_informatica=df_informatica.withColumn(column_name,when((isnull(col(column_name)) |(col(column_name==' ')),i_default).when(is_digit_udf(col(column_name)),i_default)

df_informatica=df_informatica.withColumn

请帮我把informatica转换成pyspark转换。

EN

回答 1

Stack Overflow用户

发布于 2019-12-27 19:16:00

我看不到整个语句,但您的解码逻辑是- if (v_check_neg_**为null或v_check_neg_='‘或v_check_neg_不是number或v_check_neg_**具有除numbers以外的任何值),则i_default else TO_DECIMAL(v_check_neg_**,5)

使用python来检查上面的情况,你应该可以很好的工作了。就像你可以使用string.isnumeric()来检查正数一样。并使用try except检查-ve、decimal等。示例检查负数-

代码语言:javascript
复制
def check_negative(s):
    try:
        f = float(s)
        if (f < 0):
            return True
        # Otherwise return false
        return False
    except ValueError:
        return False
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57702348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档