我目前正在研究推荐AI。由于我是GCP推荐的新手,我一直在为目录的数据格式而挣扎。我阅读了文档,它说每个产品项的JSON格式都应该在一行上。
我完全理解这一点,但如果我能真正了解JSON格式,那就太好了,因为他们文档中的格式对我来说非常模糊。我正在尝试使用控制台导入数据
我试图导入如下所示的数据,但我错误地说了100次无效的JSON格式。它有很多原因,比如意外的令牌和应该存在的东西等等
[
{
"id": "1",
"title": "Toy Story (1995)",
"categories": [
"Animation",
"Children's",
"Comedy"
]
},
{
"id": "2",
"title": "Jumanji (1995)",
"categories": [
"Adventure",
"Children's",
"Fantasy"
]
},
...
]
也许是因为每个项目都不在一行上,但我也在想,以上内容是否足以进口。我不确定这些数据是否应该包括在另一个属性中,如
{
"inputConfig": {
"productInlineSource": {
"products": [
{
"id": "1",
"title": "Toy Story (1995)",
"categories": [
"Animation",
"Children's",
"Comedy"
]
},
{
"id": "2",
"title": "Jumanji (1995)",
"categories": [
"Adventure",
"Children's",
"Fantasy"
]
},
}
我可以在文档中看到上面的内容,但它说这是为了使用POST请求导入内联。它没有提到任何关于使用控制台导入的内容。我只是猜测这种格式也用于控制台,但我不能100%确定。这就是为什么我要问
有没有人可以向我展示使用控制台导入数据的整个数据格式?
问题已解决
对于那些可能有同样问题的人来说,应该使用gcp控制台导入的确切数据格式看起来像
{"id":"1","title":"Toy Story (1995)","categories":["Animation","Children's","Comedy"]}
{"id":"2","title":"Jumanji (1995)","categories":["Adventure","Children's","Fantasy"]}
- 没有方括号包裹所有物品
- 项目之间没有逗号
- 仅单行上的每个项目
发布此Community Wiki
以提高可见性。
OP编辑的问题和添加解决方案:
应该使用gcp控制台导入的确切数据格式看起来像
{"id":"1","title":"Toy Story (1995)","categories":["Animation","Children's","Comedy"]}
{"id":"2","title":"Jumanji (1995)","categories":["Adventure","Children's","Fantasy"]}
- 所有项目都没有方括号
- 项目之间没有逗号
- 仅单行上的每个项目
不过我想详细说明一下。有几种方法可以导入导入目录信息:
- 从商户中心导入目录数据
- 从BigQuery导入目录数据
- 从云存储导入目录数据
我想这就是OP使用的,因为我可以使用UI和GCS导入目录,并使用下面的JSON
文件。
{
"inputConfig": {
"catalogInlineSource": {
"catalogItems": [
{"id":"111","title":"Toy Story (1995)","categories":["Animation","Children's","Comedy"]}
{"id":"222","title":"Jumanji (1995)","categories":["Adventure","Children's","Fantasy"]}
{"id":"333","title":"Test Movie (2020)","categories":["Adventure","Children's","Fantasy"]}
]
}
}
}
- 内联导入目录数据
在导入目录信息文档的底部,您可以找到信息:
换行符是为了可读性;您应该在一行中提供整个目录项。每个目录项都应该在自己的行上
这意味着您应该使用类似于NDJSON的东西——用于存储或流式传输结构化数据的方便格式,这些数据可以一次处理一条记录。
如果你想尝试inline method
,你应该使用这种格式,但它是单行的,但为了可读性,有中断。
data.json文件
{
"inputConfig": {
"catalogInlineSource": {
"catalogItems": [
{
"id": "1212",
"category_hierarchies": [ { "categories": [ "Animation", "Children's" ] } ],
"title": "Toy Story (1995)"
},
{
"id": "5858",
"category_hierarchies": [ { "categories": [ "Adventure", "Fantasy" ] } ],
"title": "Jumanji (1995)"
},
{
"id": "321123",
"category_hierarchies": [ { "categories": [ "Comedy", "Adventure" ] } ],
"title": "The Lord of the Rings: The Fellowship of the Ring (2001)"
},
]
}
}
}
命令
curl -X POST
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)"
-H "Content-Type: application/json; charset=utf-8"
--data @./data.json
"https://recommendationengine.googleapis.com/v1beta1/projects/[your-project]/locations/global/catalogs/default_catalog/catalogItems:import"
{
"name": "import-catalog-default_catalog-1179023525XX37366024",
"done": true
}
请记住,以上方法需要服务帐户身份验证,否则您将收到PERMISSION DENIED
错误。
"message" : "Your application has authenticated using end user credentials from the Google Cloud SDK or Google Cloud Shell which are not supported by the translate.googleapis.com. We recommend that most server applications use service accounts instead. For more information about service accounts and how to use them in your application, see https://cloud.google.com/docs/authentication/.",
"status" : "PERMISSION_DENIED"