gpt4 book ai didi

arrays - 在 Google Bigquery 中访问 ARRAY STRUCT 中的值

转载 作者:行者123 更新时间:2023-12-05 03:50:16 37 4
gpt4 key购买 nike

我是 Google BigQuery 中查询的新手,我试图在我的查询中展平 ARRAY 字段,以便将数组值列为逗号分隔列表中的单个结果。在我的查询中,“associations.associatedvids”是交易表中的一个数组字段。我的问题实际上是一个两步问题,因为我还需要将关联的视频与另一个名为联系人的表中相应的名字和姓氏字段相匹配。首先,对于联系人 ID,当我执行以下操作时

Select
CAST(property_hs_object_id.value AS String) AS deal_ID,
associations.associatedvids AS associated_contacts_ID
From hubspot_data.deals

我得到这样的结果:

Row    deal_ID         associated_contacts_ID.value 
1 1814103617 3240001
3239951
...

但我想要的是:

Row    deal_ID         associated_contacts_ID.value 
1 1814103617 3240001,3239951
...

我尝试了不同的方法来解除数组的嵌套,但似乎无法正确处理。例如,以下尝试返回错误“标量子查询产生了多个元素”。

Select
CAST(property_hs_object_id.value AS String) AS deal_ID,
(select associations.associatedvids from unnest(associations.associatedvids)) AS associated_contacts_ID
From hubspot_data.deals

其次,我最终想要的是:

Row    deal_ID         associated_contact_names 
1 1814103617 John Doe,Jane Doe
...

名称字段为 property_firstname.value 和 property_lastname.value,以及 associations.associatedvids(数据类型 ARRAY )=contacts.vids(数据类型 INT64)。我厌倦了以下内容,但由于数据类型不同,我遇到了错误。

Select
CAST(property_hs_object_id.value AS String) AS deal_ID,
(select concat(property_firstname.value, " ", property_lastname.value)
from hubspot_data.contacts
where contacts.vid=associations.associatedvids) AS contact_name
From hubspot_data.deals

任何指导将不胜感激!

编辑:这是我对最小工作示例代码的尝试。我相信我要查询的字段是一个 STURCT 数组,其中 Struct 元素的数据类型是 INT64。

WITH deals AS (
Select "012345" as deal_ID,
[STRUCT(["abc"] as company_ID, [123,678,810] as contact_ID)]
AS associations)
SELECT
deal_ID,
contacts
FROM deals d
CROSS JOIN UNNEST(d.associations) as contacts

这给我:

Row    deal_ID    contacts.company_ID    contacts.contact_ID    
1 012345 abc 123
678
810

但我想要的是

Row    deal_ID    contacts.contact_ID   
1 012345 123, 678, 810

最终,我需要将 contact_ID 替换为不同表中的联系人名字和姓氏(幸运的是不在数组中)。

最佳答案

以下是 BigQuery 标准 SQL

根据您问题中的有限信息 - 我猜您在问题中提出的第二个查询中缺少 STRING_AGG

应该是

SELECT
CAST(property_hs_object_id.value AS String) AS deal_ID,
(SELECT STRING_AGG(associations.associatedvids) FROM UNNEST(associations.associatedvids)) AS associated_contacts_ID
FROM hubspot_data.deals

Update: answer on updated question

#standardSQL
SELECT
deal_ID,
ARRAY(
SELECT AS STRUCT
company_ID,
( SELECT STRING_AGG(CAST(id AS STRING), ', ')
FROM t.contact_ID id
) AS contact_ID
FROM d.associations t
) AS contacts
FROM deals d

关于arrays - 在 Google Bigquery 中访问 ARRAY STRUCT 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63492952/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com