将 Langchain 与 BigQuery 结合使用 - 包含 RECORD 字段的表出现错误

问题描述 投票:0回答:1

我正在尝试使用 Langchain、BigQuery 和 Vertex LLM 构建一个简单的文本到查询管道。 启动 langchain SQLDatabase 对象工作正常

from sqlalchemy import *
from sqlalchemy.engine import create_engine
from sqlalchemy.schema import *
from langchain import SQLDatabase, SQLDatabaseChain

dataset_id = 'ecomm'
table_uri = f"bigquery://{PROJECT_ID}/{dataset_id}"
engine = create_engine(f"bigquery://{PROJECT_ID}/{dataset_id}")

db = SQLDatabase(engine=engine,metadata=MetaData(bind=engine),include_tables=['retail_products'],sample_rows_in_table_info=3)

但是,当拨打

print(db.table_info)

我收到以下错误:

BadRequest: 400 Cannot access field key on a value with type ARRAY<STRUCT<key STRING, value STRUCT<text ARRAY<STRING>, numbers ARRAY<FLOAT64>, searchable BOOL, ...>>> at [1:406]
[SQL: SELECT `retail_products`.`name`, `retail_products`.`id`, `retail_products`.`type`, `retail_products`.`primaryProductId`, `retail_products`.`collectionMemberIds`, `retail_products`.`gtin`, `retail_products`.`categories`, `retail_products`.`title`, `retail_products`.`brands`, `retail_products`.`description`, `retail_products`.`languageCode`, `retail_products`.`attributes`, `retail_products`.`attributes`.`key`, `retail_products`.`attributes`.`value`, `retail_products`.`attributes`.`value`.`text`, `retail_products`.`attributes`.`value`.`numbers`, `retail_products`.`attributes`.`value`.`searchable`, `retail_products`.`attributes`.`value`.`indexable`, `retail_products`.`tags`, `retail_products`.`priceInfo`, `retail_products`.`priceInfo`.`currencyCode`, `retail_products`.`priceInfo`.`price`, `retail_products`.`priceInfo`.`originalPrice`, `retail_products`.`priceInfo`.`cost`, `retail_products`.`priceInfo`.`priceEffectiveTime`, `retail_products`.`priceInfo`.`priceExpireTime`, `retail_products`.`rating`, `retail_products`.`rating`.`ratingCount`, `retail_products`.`rating`.`averageRating`, `retail_products`.`rating`.`ratingHistogram`, `retail_products`.`expireTime`, `retail_products`.`ttl`, `retail_products`.`ttl`.`seconds`, `retail_products`.`ttl`.`nanos`, `retail_products`.`availableTime`, `retail_products`.`availability`, `retail_products`.`availableQuantity`, `retail_products`.`fulfillmentInfo`, `retail_products`.`fulfillmentInfo`.`type`, `retail_products`.`fulfillmentInfo`... FROM `retail_products` LIMIT %

表架构为:

名称字符串可为空
需要 id 字符串
类型 STRING NULLABLE
PrimaryProductId 字符串可为空
collectionMemberIds 字符串重复
GTIN 字符串可为空
类别 字符串重复
标题 需要 STRING
品牌 STRING REPEATED
描述字符串可为空
语言代码 STRING NULLABLE
属性记录重复
标签字符串重复
价格信息记录可为空
评级记录可空
过期时间 STRING NULLABLE
ttl 记录可为空
可用时间字符串可为空
可用性字符串可为空
可用数量 INTEGER NULLABLE
重复履行信息记录
uri 字符串可为空
图像记录重复
观众记录可空
颜色信息记录可为空
尺寸字符串重复
材料字符串重复
图案STRING REPEATED
条件字符串重复
可检索字段 STRING NULLABLE
发布时间字符串可为空
促销记录重复

问题似乎出在我表上的 RECORD 类型字段上。 这在没有嵌套字段的简单表上效果很好

我该如何解决这个问题?

google-bigquery google-cloud-vertex-ai langchain
1个回答
0
投票

我也遇到同样的错误,请问你解决了吗?

© www.soinside.com 2019 - 2024. All rights reserved.