Создайте другой dataframe из существующего Dataframe со значением псевдонима в spark sql - PullRequest
1 голос
/ 04 ноября 2019

Я использую Spark 1.6 с Scala.

Я создал Dataframe, который выглядит следующим образом.

DATA
SKU,    MAKE,   MODEL,  GROUP   SUBCLS  IDENT
IM, AN4032X,    ADH3M032,   RM, 1011,   0
IM, A3M4936,    MP3M4936,   RM, 1011,   0
IM, AK116BC,    3M4936P,    05, ABC,    0
IM, A-116-B,    16ECAPS,    RM, 1011,   0

Я выполняю проверку данных и записываю любые записи в новом кадре данных, которые нарушаютправило.

Правило:

Column “GROUP” must be character 
Column “SUBCLS” must be NUMERIC
Column “IDENT” must be 0

Новый кадр данных будет выглядеть так:

AUDIT TABLE

SKU MAKE    AUDIT_SKU   AUDIT_MAKE  AUDIT_MODEL AUDIT_GRP   AUDIT_SUBCLS    Audit_IDENT
 IM,    A-K12216BC, N,  N,  N,  Y,  Y,  N

Y представляет нарушение правила, а N представляет нарушениеПередача правила.

Я проверил правило, используя isnull или regex, например: проверка столбца Группировать, используя

regex: df.where( $"GROUP".rlike("^[A-Za-z]}$")).show

Может кто-нибудь, пожалуйста, помогите мне, как я могу сделать это в SPARK SQL. Можно ли создать фрейм данных с вышеописанным сценарием.

Спасибо

1 Ответ

1 голос
/ 04 ноября 2019

вы можете использовать rlike с |

scala> df.withColumn("Group1",when($"GROUP".rlike("^[\\d+]|[A-Za-z]\\d+"),"Y").otherwise("N")).withColumn("SUBCLS1",when($"SUBCLS".rlike("^[0-9]"),"N").otherwise("Y")).withColumn("IDENT1",when($"IDENT"==="0","N").otherwise("Y")).show()
+---+-------+--------+-----+------+-----+------+-------+------+
|SKU|   MAKE|   MODEL|GROUP|SUBCLS|IDENT|Group1|SUBCLS1|IDENT1|
+---+-------+--------+-----+------+-----+------+-------+------+
| IM|AN4032X|ADH3M032|   RM|  1011|    0|     N|      N|     N|
| IM|A3M4936|MP3M4936|  1RM|  1011|    0|     Y|      N|     N|
| IM|AK116BC| 3M4936P|   05|   ABC|    0|     Y|      Y|     N|
| IM|A-116-B| 16ECAPS|  RM1|  1011|    0|     Y|      N|     N|
+---+-------+--------+-----+------+-----+------+-------+------+

, просто напишите версию 1 каждого столбца, чтобы понять, только столбец можно перезаписать. дайте мне знать, если вам нужна помощь в том же.

...