首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并bulkloader中的多个列

合并bulkloader中的多个列
EN

Stack Overflow用户
提问于 2012-06-29 19:37:35
回答 1查看 147关注 0票数 0

我使用应用程序引擎的bulkloader将CSV文件导入到我的数据存储中。我有许多列,我想合并成一个列,例如,它们都是URL,但并不是所有的列都提供了,并且有一个取代顺序,例如:

代码语言:javascript
复制
url_main
url_temp
url_test

我想说:“好的,如果url_main存在,就使用它,否则使用url_test,然后使用url_temp。”

因此,是否可以创建一个自定义导入转换来引用列,并根据条件将它们合并为一个列?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-29 22:19:59

好了,在阅读了https://developers.google.com/appengine/docs/python/tools/uploadingdata#Configuring_the_Bulk_Loader之后,我了解到了import_transform以及它可以使用自定义函数。

考虑到这一点,这为我指明了正确的方向:

...一个带有两个参数的函数,关键字参数为bulkload_state,返回时包含有关实体的有用信息: bulkload_state.current_entity,它是当前正在处理的实体;bulkload_state.current_dictionary,当前导出字典...

因此,我创建了一个处理两个变量的函数,一个是当前实体的value,第二个是允许我获取当前行的bulkload_state,如下所示:

代码语言:javascript
复制
def check_url(value, bulkload_state):
    row = bulkload_state.current_dictionary
    fields = [ 'Final URL', 'URL', 'Temporary URL' ]

    for field in fields:
        if field in row:
            return row[ field ]


    return None

所有这些操作都是获取当前行(bulkload_state.current_dictionary),然后检查哪些URL域存在,否则它只返回None

在我的bulkloader.yaml中,我只需设置以下内容即可调用此函数:

代码语言:javascript
复制
- property: business_url
  external_name: URL
  import_transform: bulkloader_helper.check_url

注意:external_name无关紧要,只要它存在,因为我实际上并没有使用它,我使用的是多个列。

简单!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11261081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档