按列和行过滤正则表达式。组合式

时间:2018-10-25 11:38:33

标签: python databricks

我正在设法解决这个问题。

第一行包含:NUMBER:INC00012,附加注释:尚未请求

第二行包含:NUMBER:INC0000001,附加注释:w尚未请求 DF_FILE_PATH =指向csv的方向。包含这些行的文件。

WrongData_REG_EXP =(DF_FILE_PATH
     .filter(DF_FILE_PATH.Number.rlike('^((?!INC([0-9]){7}).)*$'))
     .filter(DF_FILE_PATH.AdditionalComments.rlike('^((?!Not Yet Requested).)*$'))
     )
     display (WrongData_REG_EXP)

当我仅加载一个过滤器时,它显示了错误的变量。但是当我添加新的过滤器时。它不显示任何内容。这是因为没有行包含这两个正则表达式。 但是另一行具有第二个过滤器,第一行具有第一个过滤器。

如何同时显示它们?

1 个答案:

答案 0 :(得分:0)

我为解决此问题所做的是在Databricks中使用python进行sql查询。

query = '''
    ---- Get Corrupt records
    select * from bi4it_da.{0}_{1}_{2}_full_no_corrupt_NEW
    where number in
    (
    SELECT {0}_{1}_{2}_Full_No_Corrupt_NEW.number FROM BI4IT_DA.{0}_{1}_{2}_Full_No_Corrupt_NEW
    MINUS
    SELECT {0}_{1}_{2}_Full_Data_Set.number FROM BI4IT_DA.{0}_{1}_{2}_Full_Data_Set
    )
    '''.format(PROCESS_TYPE, SOURCE_SYSTEM, SOURCE_FILE_NAME)
display(spark.sql(query))

完整数据集减去良好记录后,将保留错误的记录。