在 BigQuery 中处理 Salesforce Data Cloud 数据
Data Cloud 用户可以以原生方式在 BigQuery 中访问其 Data Cloud 数据。您可以使用 BigQuery Omni 分析 Data Cloud 数据,并在 Google Cloud 中对数据执行跨云分析。在本文档中,我们说明了如何访问 Data Cloud 数据,以及您可以在 BigQuery 中对该数据执行的多项分析任务。
Data Cloud 基于以下架构与 BigQuery 搭配使用:
准备工作
在处理 Data Cloud 数据之前,您必须是 Data Cloud 用户。如果您对项目启用了 VPC Service Controls,则还需要其他权限。
所需的角色
您需要拥有以下角色和权限:
- Analytics Hub Subscriber (
roles/analyticshub.subscriber
) - BigQuery Admin (
roles/bigquery.admin
)
从 Data Cloud 共享数据
本文档演示了如何将数据从 Data Cloud 共享到 BigQuery - 自带许可 (BYOL) 数据共享 - 与 BigQuery 的零 ETL 集成。
将 Data Cloud 数据集关联到 BigQuery
如需在 BigQuery 中访问 Data Cloud 数据集,您必须先按照以下步骤将数据集关联到 BigQuery:
在 Google Cloud 控制台中,转到 BigQuery 页面。
点击 Salesforce Data Cloud
此时会显示 Data Cloud 数据集。您可以使用以下命名格式按名称查找数据集:
listing_DATA_SHARE_NAME_TARGET_NAME
替换以下内容:DATA_SHARE_NAME
:Data Cloud 中的数据共享的名称。TARGET_NAME
:Data Cloud 中的 BigQuery 目标的名称。
点击要添加到 BigQuery 的数据集。
点击将数据集添加到项目中。
指定关联数据集的名称。
创建关联数据集后,您可以浏览数据集及其中的表。所有表的元数据都是从 Data Cloud 动态检索的。数据集中的所有对象都是映射到 Data Cloud 对象的视图。BigQuery 支持三种类型的 Data Cloud 对象:
- 数据湖对象 (DLO)
- 数据模型对象 (DMO)
- 计算的数据洞见对象 (CIO)
所有这些对象在 BigQuery 中都表示为视图。这些视图指向存储在 Amazon S3 中的隐藏表。
处理 Data Cloud 数据
以下示例使用在 Data Cloud 中托管的名为 Northwest Trail Outfitter (NTO) 的数据集。此数据集由三个表组成,这些表表示 NTO 组织的线上销售数据:
linked_nto_john.nto_customers__dll
linked_nto_john.nto_products__dll
linked_nto_john.nto_orders__dll
这些示例中使用的另一个数据集是线下销售终端数据。此数据集涵盖线下销售,由三个表组成:
nto_pos.customers
nto_pos.products
nto_pos.orders
以下数据集用于存储其他对象:
aws_data
us_data
运行临时查询
使用 BigQuery Omni,您可以运行临时查询来通过订阅的数据集分析 Data Cloud 数据。以下示例展示了从 Data Cloud 查询客户表的简单查询。
SELECT name__c, age__c FROM `listing_nto_john.nto_customers__dll` WHERE age > 40 LIMIT 1000;
运行跨云查询
借助跨云查询,您可以将 BigQuery Omni 区域中的任何表与 BigQuery 区域中的表进行联接。如需详细了解跨云查询,请参阅此博文。在此示例中,我们检索名为 john
的客户的总销售额。
-- Get combined sales for a customer from both offline and online sales USING ( SELECT total_price FROM `listing_nto_john.nto_orders__dll` WHERE customer_name = 'john' UNION ALL SELECT total_price FROM `listing_nto_john.nto_orders__dll` WHERE customer_name = 'john' ) a SELECT SUM(total_price);
通过 CTAS 进行跨云数据转移
您可以使用 Create Table As Select (CTAS) 将数据从 BigQuery Omni 区域中的 Data Cloud 表移动到 US
区域。
-- Move all the orders for March to the US region CREATE OR REPLACE TABLE us_data.online_orders_march AS SELECT * FROM listing_nto_john.nto_orders__dll WHERE EXTRACT(MONTH FROM order_time) = 3
目标表是 US
区域中的 BigQuery 托管式表。此表可与其他表联接。此操作会根据转移的数据量产生 AWS 出站流量费用。
移动数据后,您不再需要为 online_orders_march
表中运行的任何查询支付出站流量费用。
跨云具体化视图
跨云具体化视图 (CCMV) 可逐步将数据从 BigQuery Omni 区域转移到非 BigQuery Omni BigQuery 区域。设置新的 CCMV,用于转移线上交易产生的总销售额摘要,并将该数据复制到 US
区域中。
您可以从广告数据中心访问 CCMV,并将它与其他广告数据中心数据联接。CCMV 在大多数情况下类似于常规 BigQuery 托管式表。
创建本地具体化视图
如需创建本地具体化视图,请运行以下命令:
-- Create a local materialized view that keeps track of total sales by day CREATE MATERIALIZED VIEW `aws_data.total_sales` OPTIONS (enable_refresh = true, refresh_interval_minutes = 60) AS SELECT EXTRACT(DAY FROM order_time) AS date, SUM(order_total) as sales FROM `listing_nto_john.nto_orders__dll` GROUP BY 1;
向具体化视图授权
您必须向具体化视图授权才能创建 CCMV。您可以向视图 (aws_data.total_sales
) 或数据集 (aws_data
) 授权。如需向具体化视图授权,请执行以下操作:
在 Google Cloud 控制台中,转到 BigQuery 页面。
打开源数据集
listing_nto_john
。点击共享,然后点击授权数据集。
输入数据集名称(在本例中为
listing_nto_john
),然后点击确定。
创建副本具体化视图
在 US
区域中创建新的副本具体化视图。每当源数据发生更改时,具体化视图便会定期进行复制,以使副本保持最新状态。
-- Create a replica MV in the us region. CREATE MATERIALIZED VIEW `us_data.total_sales_replica` AS REPLICA OF `aws_data.total_sales`;
对副本具体化视图运行查询
以下示例会对副本具体化视图运行查询:
-- Find total sales for the current month for the dashboard SELECT EXTRACT(MONTH FROM CURRENT_DATE()) as month, SUM(sales) FROM us_data.total_sales_replica WHERE month = EXTRACT(MONTH FROM date) GROUP BY 1
将 Data Cloud 数据与 INFORMATION_SCHEMA
搭配使用
Data Cloud 数据集支持 BigQuery INFORMATION_SCHEMA
视图。INFORMATION_SCHEMA
视图中的数据会定期从 Data Cloud 同步,可能会过时。TABLES
和 SCHEMATA
视图中的 SYNC_STATUS
列显示上次完成同步时间、阻止 BigQuery 提供最新数据的任何错误以及修复错误所需的任何步骤。
INFORMATION_SCHEMA
查询不反映在初始同步之前最近创建的数据集。
Data Cloud 数据集遵循与其他关联数据集相同的限制,例如,只能在数据集范围查询的 INFORMATION_SCHEMA
中访问。
后续步骤
了解 BigQuery Omni。
了解跨云联接。
了解具体化视图。