AWS клей булево преобразование - PullRequest
0 голосов
/ 11 октября 2018

Я использую AWS Glue и мне нужно преобразовать логические (True и False) столбцы в схеме хранилища данных Redshift в «Да» / «Нет» в другой схеме Redshift.В настоящее время в графическом интерфейсе AWS Glue нет простого способа сделать это.

Я следовал приведенному здесь руководству следующим образом: https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-transforms-map.html

и создал функцию:

def ConvertBoolean(dataFrame,ColumnName):

  dataFrame["booleanTransform"] = {}  

  if dataFrame[ColumnName] == True:
    dataFrame["booleanTransform"] = "Yes"
  else:
    dataFrame["booleanTransform"] = "No"

  del dataFrame[ColumnName]

  dataFrame[ColumnName] = {}

  dataFrame[ColumnName] = dataFrame["booleanTransform"]  

  del dataFrame["booleanTransform"] 

  return dataFrame

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

Как лучше всего это сделать вкод pyspark AWS Glue?

1 Ответ

0 голосов
/ 17 октября 2018

Вы действительно должны использовать клей для этого?Звучит так, как если бы простой CTAS был бы более эффективным по времени и деньгам:

CREATE TABLE newtable 
-- you may also want to set DIST and SORTKEYs for the newtable here
AS
SELECT
  CASE my_bool_column
    WHEN TRUE THEN 'Yes'
    ELSE 'No'
  END::VARCHAR(3) as my_bool_column,
  all_other_columns
FROM oldtable;
...