1

我在看Google App Engine bulkloader 转换的参考页面在哪里?并找出了我的大部分 bulkloader.yaml 配置,但一种情况除外。

我的一种“产品”有一个名为 site 的属性。如果存在,这是客户类型和站点类型的深层密钥。现在我遇到的问题是 non_if_empty。在以下情况下,它永远不会创建深度密钥。它总是一无所获。如果我删除 transform.none_if_empty 它将失败,因为我的输入文件对于其中一些值有空的整体。我怎样才能使这项工作?如何将 none_if_empty 与 create_deep_key 一起使用

- property: site
  external_name: site
  export_transform: transform.key_id_or_name_as_string
  import_transform: transform.none_if_empty(transform.create_deep_key(('Customer', 'siteCustomer', True),
                                                ('Site', 'siteId', True)))

  export: 
   - external_name: siteCustomer
     export_transform: transform.key_id_or_name_as_string_n(0)
   - external_name: siteId
     export_transform: transform.key_id_or_name_as_string_n(1)

Product Bulkloader File Example
name,siteCustomer,siteId
first,,
second,1,1
4

2 回答 2

1

那应该是

import_transform: transform.none_if_empty(transform.create_deep_key(
    ('Customer','siteCustomer', True),
    ('Site', transform.CURRENT_PROPERTY, True)))

本质上,将当前属性的导入值称为 transform.CURRENT_PROPERTY。

于 2012-08-09T18:10:56.657 回答
0

所以我仍然不知道我在这里缺少什么,但我的工作是这样的:

从 google.appengine.ext.bulkload 导入转换

def create_deep_key(*path_info): f = transform.create_deep_key(*path_info)

def create_deep_key_lambda(value, bulkload_state):

    try:
        return f(value, bulkload_state)
    except:
        return None

return create_deep_key_lambda
于 2012-08-10T13:10:05.490 回答