Фильтрация вложенных JSON в AWS Glue

Мы хотели бы использовать задание AWS-Glue для фильтрации сообщений JSON в корзине s3.

Вот пример JSON:

{ "property": {"subproperty1": "A", "subproperty2": "B" }}
{ "property": {"subproperty1": "C", "subproperty2": "D" }}

Мы хотим фильтровать по subproperty1 in ["A", "B"]. Вот что мы пытаемся:

applyFilter1 = Filter.apply(
  frame = datasource0, 
  f = lambda x: x["property.subproperty1"] in ["A", "B"]
)

Затем вывод записывается таким образом, что новое ведро s3 выглядит следующим образом:

datasink2 = glueContext.write_dynamic_frame.from_options(
    frame = applyFilter1, 
    connection_type = "s3", 
    connection_options = {"path": "s3://<my-s3-location>"}, 
    format = "json", 
    transformation_ctx = "datasink2"
)

К сожалению, результирующий файл пуст. Есть идеи? Поддерживается ли фильтрация подобных вложенных выражений в AWS Glue?


person user152468    schedule 08.02.2018    source источник
comment
Оказывается, изменение свойства фильтра на это: f = lambda x: x["property"]["subproperty1"] in ["A", "B"] решает проблему.   -  person user152468    schedule 08.02.2018