在 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 数据之前,您必须是 Data Cloud 用户。如果您对项目启用了 VPC Service Controls,则还需要其他权限。

所需的角色

您需要拥有以下角色和权限:

  • Analytics Hub Subscriber (roles/analyticshub.subscriber)
  • BigQuery Admin (roles/bigquery.admin)

从 Data Cloud 共享数据

本文档演示了如何将数据从 Data Cloud 共享到 BigQuery - 自带许可 (BYOL) 数据共享 - 与 BigQuery 的零 ETL 集成

如需在 BigQuery 中访问 Data Cloud 数据集,您必须先按照以下步骤将数据集关联到 BigQuery:

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 点击 Salesforce Data Cloud

    此时会显示 Data Cloud 数据集。您可以使用以下命名格式按名称查找数据集:

    listing_DATA_SHARE_NAME_TARGET_NAME
    
    替换以下内容:

    • DATA_SHARE_NAME:Data Cloud 中的数据共享的名称。
    • TARGET_NAME:Data Cloud 中的 BigQuery 目标的名称。
  3. 点击要添加到 BigQuery 的数据集。

  4. 点击将数据集添加到项目中

  5. 指定关联数据集的名称。

创建关联数据集后,您可以浏览数据集及其中的表。所有表的元数据都是从 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) 授权。如需向具体化视图授权,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 打开源数据集 listing_nto_john

  3. 点击共享,然后点击授权数据集

  4. 输入数据集名称(在本例中为 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 同步,可能会过时。TABLESSCHEMATA 视图中的 SYNC_STATUS 列显示上次完成同步时间、阻止 BigQuery 提供最新数据的任何错误以及修复错误所需的任何步骤。

INFORMATION_SCHEMA 查询不反映在初始同步之前最近创建的数据集。

Data Cloud 数据集遵循与其他关联数据集相同的限制,例如,只能在数据集范围查询的 INFORMATION_SCHEMA 中访问。

后续步骤