1

我使用AppEngine SDK的python API在數據存儲區上創建實體,並且想要在Google Cloud Dataflow(Java)上檢索它們。實體的結構是這樣的:我如何使用數據存儲區java客戶端檢索具有重複屬性的嵌入式實體

  • 實體
    • embedded_entity(ndb.StructuredProperty(重複= TRUE))

檢索將是這樣的,但我知道我錯過了我提取數據的步驟。

static class EmbeddedStringExtractor extends DoFn<Entity, String> { 
    @Override 
    public void processElement(ProcessContext c) { 
    Map<String, Value> main_entity_map = DatastoreHelper.getPropertyMap(c.element()); 
    Entity embedded_entity = entity.get("embedded_entity").getEntityValue(); 
    // missing step 
    Map<String, Value> embedded_entity_map = DatastoreHelper.getPropertyMap(embedded_entity); 
    String some_string = DatastoreHelper.getString(embedded_entity_map.get("name")); 
    } 
} 

我將如何遍歷所有重複的屬性?

回答

1

好吧,明白了。這是我如何啓用它:

static class EmbeddedStringExtractor extends DoFn<Entity, String> { 
    @Override 
    public void processElement(ProcessContext c) { 
    Map<String, Value> main_entity_map = DatastoreHelper.getPropertyMap(c.element()); 
    List<Value> embedded_entity_values = entity.get("embedded_entity").getListValueList(); 

     for (Value embedded_entity_value: embedded_entity_values){ 
      Entity embedded_entity = embedded_entity_value.getEntityValue(); 
      Map<String, Value> embedded_map = DatastoreHelper.getPropertyMap(embedded_entity); 
      String embedded_name = DatastoreHelper.getString(embedded_map.get("name")); 
     } 

    // And then just c.output whatever you need. 

    } 
} 

只需要習慣Java API。

+0

請注意,這是在V1之前的測試版本中完成的。 –

相關問題