错误 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 步的整个脚本。
脚本输出:
已创建标签模板:
已创建标签:
我在尝试使用此 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 步的整个脚本。
脚本输出:
已创建标签模板:
已创建标签: