错误 Python API GCP 数据目录 - Google 云平台

Error Python API GCP Data Catalog - Google Cloud Platform

我在尝试使用此 link 的代码时遇到错误:Data Catalog Example。在第 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

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

Error Image

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'

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

Data Catalog Example 上的示例代码已过时。从第 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
  • 修复是通过添加 tag_template.fields['source'] = datacatalog_v1.types.TagTemplateField()
  • 为 TagTemplateField 创建键 'source'
  • 更新了 "tag_template.type" and assigning primitive string value
  • 的语法

如果您继续第 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 步类似,这次是通过添加 tag.fields['source'] = datacatalog_v1.types.TagField() #creates key 'source'
  • 为 TagField 创建密钥 'source'

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

脚本输出:

已创建标签模板:

已创建标签: