in experiments/legacy/backend/attributes.py [0:0]
def join_attributes_desc(
ids: list[str]) -> dict[str:dict]:
"""Gets the attributes and description for given product IDs.
Args:
ids: The product IDs to get the attributes for.
Returns
dict mapping product IDs to attributes and descriptions. Each ID will
map to a dict with the following keys:
attributes: e.g. {'color':'green', 'pattern': striped}
description: e.g. 'This is a description'
"""
query = f"""
SELECT
{config.COLUMN_ID},
{config.COLUMN_ATTRIBUTES},
{config.COLUMN_DESCRIPTION}
FROM
`{config.PRODUCT_REFERENCE_TABLE}`
WHERE
{config.COLUMN_ID} IN {str(ids).replace('[','(').replace(']',')')}
"""
query_job = bq_client.query(query)
rows = query_job.result()
attributes = {}
for row in rows:
attributes[row[config.COLUMN_ID]] = {}
attributes[row[config.COLUMN_ID]]['attributes'] = json.loads(row[config.COLUMN_ATTRIBUTES])
attributes[row[config.COLUMN_ID]]['description'] = row[config.COLUMN_DESCRIPTION]
return attributes