这个问题的原因是,我需要使用where子句将Cosmos DB中的数据读取到数据块中的数据帧中。
我有一个场景,我通过Databricks作为数据帧从Cosmos DB中读取数据。 我的要求是将IN子句与子查询一起使用,以仅读取Cosmos集合中的少量文档。
我正在使用以下命令从Cosmos DB中读取文档: 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'中使用子查询来从另一个表中获取ID。
我尝试过。
read_CND_Cosmos.select(“ country”,“ type”)。where($“ id” .isin(从cosmos中选择id,其中(id ='1001000035','1001000051'))“)。show =>错误。
我也尝试了以下选项,
val CNP_Table = read_CNP.createOrReplaceTempView(“ CNP”) val CNP_Query = spark.sqlContext.sql(“从CNP中选择ID,其中ENDDATE如“ 31/12/9999%””)
val数据= CNP_Query.collect()。map(x => x.getString(0))。mkString(“,”)
val read_from_cosmos = read_CND_Cosmos.select(“ country”,“ type”)。where($“ id” .isin(data))=>这不会给我任何错误,但不会显示任何结果。
我不想在Cosmos中读取整个集合,而是需要根据id属性读取文档。