0

我在尝试使用此链接的代码时遇到错误:数据目录示例。在第 4 步,只需复制粘贴提供的所有代码,在我的 GCP 项目中进行身份验证并对其进行测试。

一切都很好,直到它开始创建标签模板字段......

tag_template = datacatalog_v1.types.TagTemplate()
tag_template.display_name = 'On-premises Tag Template'

tag_template.fields['source'].display_name = 'Source of the data asset'
tag_template.fields['source'].type.primitive_type = \
    datacatalog_v1.FieldType.PrimitiveType.STRING.value

它总是因相同的错误而崩溃。

错误图像

tag_template <proto.marshal.collections.maps.MapComposite object at 0x10fe23310>
Traceback (most recent call last):
  File "/Users/ac/Documents/DataCatalog/python_datacatalog/application/sample.py", line 149, in <module>
    tag_template.fields['source'].display_name = 'Source of the data asset'
  File "/Users/ac/Documents/DataCatalog/python_datacatalog/venv/lib/python3.8/site-packages/proto/marshal/collections/maps.py", line 56, in __getitem__
    raise KeyError(key)
KeyError: 'source'

有人可以帮助我分享替代方案吗?

4

1 回答 1

0

数据目录示例中的示例代码已过时。从第 4 步开始对代码进行了一些更改(您当前卡住的地方)。我在原始类型的下一行遇到了另一个错误。

# -------------------------------
# 4. Create a Tag Template.
# -------------------------------
tag_template = datacatalog_v1.types.TagTemplate()
tag_template.display_name = 'On-premises Tag Template'

tag_template.fields['source'] = datacatalog_v1.types.TagTemplateField() #creates key 'source'
tag_template.fields['source'].display_name = 'Source of the data asset'
tag_template.fields['source'].type_.primitive_type = datacatalog_v1.types.FieldType.PrimitiveType.STRING #from type -> type_, syntax for primitive type string

如果继续执行第 5 步,则会弹出错误消息KeyError: 'source'。如果你没有遇到这个,那么一切都很好。但是,如果您在此处遇到它,则可以使用解决该问题的代码。

# -------------------------------
# 5. Attach a Tag to the custom Entry.
# -------------------------------
tag = datacatalog_v1.types.Tag()
tag.template = tag_template.name
tag.fields['source'] = datacatalog_v1.types.TagField() #creates key 'source'
tag.fields['source'].string_value = 'On-premises system name'

tag = datacatalog.create_tag(parent=entry.name, tag=tag)
print('Created tag: {}'.format(tag.name))
  • 修复类似于第 4 步,这次是通过添加为 TagField 创建密钥“源”tag.fields['source'] = datacatalog_v1.types.TagField() #creates key 'source'

我从第 1 步到第 5 步运行了整个脚本。

脚本的输出: 在此处输入图像描述

创建的标签模板: 在此处输入图像描述

创建的标签: 在此处输入图像描述

于 2021-02-19T04:33:23.673 回答