Как создать схему динамически, выбрав столбцы из другой таблицы - PySpark - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь выбрать столбцы из динамического значения, которое является именем столбца в моей таблице и на основе выбранных столбцов, я пытаюсь построить мою новую таблицу

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

listids = [x for x in tab1.select("Val").distinct().collect()]

dfArray = [tab1.where(tab1.Val == x) for x in listids]

def getdf(df):
     id=df.select("Val").distinct().flatMap(lambda x: x).collect()
     samdf=tab2.where(F.lit(id[0])==1)
     return samdf

[getdf(df) for df in dfArray] 

Table 1                                     TABLE 2
-------------------------------       -----------------------------------
ColNames   |   A      |B              col1   | col 2  | col3  | col4 | Val 
-------------------------------       ------------------------------------  

col1            1       1               p        a       x        r      A 
col2                                    q        b       y        s      A 
col3            1                       r        c       z        t      B 
col4            1       1       

Исходя из столбцов A и B, я ожидаю получить 2 таблицы вывода,

for A                                  for B 

col1 | col3 | col4                     col1 | col4 
-------------------                   ------------- 
 p      x      r                        r       t    
 q      y      x 

Мне удалось выбрать столбцы для A и B во фрейме данных, однако я не могу перевести этот фрейм данных в схему и извлечь данные из таблицы 2

Таблица 1 является справочной таблицей, и я могу изменить ее схему в соответствии с решением. Я попытался транспонировать ее, чтобы оптимизировать, но не помог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...