Причина этого запроса заключается в том, что мне нужно прочитать данные из БД Cosmos в кадр данных в блоках данных, используя условие where.
У меня есть сценарий, в котором я считываю данные из БД Cosmos через Databricks как Dataframe.Мое требование - использовать предложение IN с подзапросом, чтобы прочитать только несколько документов из коллекции Cosmos.
Я читаю документы из базы данных Cosmos с помощью команды val read_CND_Cosmos = 'spark.sqlContext.read.cosmosDB (config) '
val read_from_cosmos = read_CND_Cosmos.select ("country", "type"). Where ($ "id" .isin (1001000051,1001000035,1101000034)). Show => Это работает.
Теперь мне нужно использовать подзапрос внутри 'isin', чтобы получить идентификаторы из другой таблицы.
Я пытался.
read_CND_Cosmos.select ("country", "type"") .where ($" id ".isin (выберите id из Cosmos, где (id = '1001000035', '1001000051'))"). show => Это дает ошибку.
Также я попробовал следующееoption,
val CNP_Table = read_CNP.createOrReplaceTempView ("CNP") val CNP_Query = spark.sqlContext.sql ("выбрать идентификатор из CNP, где ENDDATE, например, '31 / 12/9999% '")
val data = CNP_Query.collect (). Map (x => x.getString (0)). MkString (",")
val read_from_cosmos = read_CND_Cosmos.select ("country", "type"). where ($ "id" .isin (data)) => Это не дает мне никакой ошибки, но не показывает никакого результата.
Я не хочупрочитайте всю коллекцию в Космосе, и вместо этого мне нужно прочитать документы, основанные на атрибуте id.