帮助通过SQL管理派生数据集的构造

下面介绍的功能在通过SQL管理派生数据集时非常有用。

更改要为配置文件启用的现有数据集

ALTER TABLE SQL构造可用于为配置文件启用现有数据集。 这要求向架构和相应的数据集中添加启用配置文件的标记。

ALTER TABLE your_decile_table ADD label 'PROFILE';
注意
成功执行ALTER TABLE命令后,控制台返回ALTER SUCCESS

向现有数据集添加主要身份

将数据集中的现有列标记为主标识集,否则会导致错误。 要使用SQL设置主标识,请使用下面显示的查询格式。

ALTER TABLE <your_table_name> ADD CONSTRAINT primary identity NAMESPACE

例如:

ALTER TABLE test1_dataset ADD CONSTRAINT PRIMARY KEY(id2) NAMESPACE 'IDFA';

在提供的示例中,id2test1_dataset中的现有列。

为配置文件禁用数据集

如果要为配置文件禁用表,则必须使用DROP命令。 下面显示了使用DROP的示例SQL语句。

ALTER TABLE table_name DROP LABEL 'PROFILE';

例如:

ALTER TABLE decile_table DROP label 'PROFILE';

此SQL语句提供了使用API调用的高效替代方法。 有关详细信息,请参阅有关如何使用数据集API禁用用于Real-Time CDP的数据集的文档

允许为数据集更新和插入功能

UPSERT命令允许您在表中插入新记录或更新现有数据。 具体来说,如果表中已存在指定的值,它允许您更新现有行;如果指定的值不存在,它允许您插入新行。

下面显示了使用正确格式的示例语句。

ALTER TABLE table_name ADD LABEL 'UPSERT';

例如:

ALTER TABLE table_with_a_decile ADD label 'UPSERT';

此SQL语句提供了使用API调用的高效替代方法。 有关详细信息,请参阅有关如何使用数据集API🔗启用用于Real-Time CDP和UPSERT的数据集的文档。

禁用数据集的更新和插入功能

此命令禁用更新行并将其插入到数据集的功能。

下面显示了使用正确格式的示例语句。

ALTER TABLE table_name DROP LABEL 'UPSERT';

例如:

ALTER TABLE table_with_a_decile DROP label 'UPSERT';

显示与每个表关联的其他表信息

为启用配置文件的数据集保留其他元数据。 使用SHOW TABLES命令显示一个额外的labels列,该列提供有关与表关联的任何标签的信息。

此命令的输出示例如下所示:

       name          |        dataSetId         |     dataSet    | description | labels
---------------------+--------------------------+----------------+-------------+----------
 luma_midvalues      | 5bac030c29bb8d12fa992e58 | Luma midValues |             | false
 luma_postvalues     | 5c86b896b3c162151785b43c | Luma midValues |             | false
 table_with_a_decile | 5c86b896b3c162151785b43c | Luma midValues |             | 'UPSERT', 'PROFILE'
(3 rows)

从示例中可以看到table_with_a_decile已为配置文件启用,并应用于标签,如'UPSERT''PROFILE',如前所述。

使用SQL创建字段组

现在可以通过使用SQL创建字段组。 这提供了在Experience Platform UI中使用架构编辑器或对架构注册表进行API调用的替代方法。

下面显示了创建字段组的示例语句。

CREATE FIELDGROUP <field_group_name> [IF NOT EXISTS]  (field_name <data_type> primary identity namespace <namespace>, [field_name_2 >data_type>]) [ WITH(LABEL='PROFILE') ];
重要
如果语句中未提供label标志或字段组已存在,则通过SQL创建字段组将失败。
请确保查询包含IF NOT EXISTS子句,以避免查询失败,因为该字段组已存在。

现实世界的例子可能与下面所示的例子类似。

CREATE FIELDGROUP field_group_for_test123 (decile1Month map<text, integer>, decile3Month map<text, integer>, decile6Month map<text, integer>, decile9Month map<text, integer>, decile12Month map<text, integer>, decilelietime map<text, integer>) WITH (LABEL-'PROFILE');

成功执行此语句将返回创建的字段组ID。 例如:c731a1eafdfdecae1683c6dca197c66ed2c2b49ecd3a9525

有关替代方法的详细信息,请参阅有关如何在架构编辑器🔗中创建新字段组或使用架构注册表API的文档。

放置字段组

有时可能需要从架构注册表中删除字段组。 这是通过执行具有字段组ID的DROP FIELDGROUP命令来完成的。

DROP FIELDGROUP [IF EXISTS] <your_field_group_id>;

例如:

DROP FIELDGROUP field_group_for_test123;
重要
如果字段组不存在,则通过SQL删除字段组将失败。 请确保语句包含IF EXISTS子句以避免查询失败。

显示表的所有字段组名和ID

SHOW FIELDGROUPS命令返回一个表,其中包含表的名称、fieldgroupId和所有者。

此命令的输出示例如下所示:

       name                      |        fieldgroupId                             |     owner      |
---------------------------------+-------------------------------------------------+-----------------
 AEP Mobile Lifecycle Details    | _experience.aep-mobile-lifecycle-details        | Luma midValues |
 AEP Web SDK ExperienceEvent     | _experience.aep-web-sdk-experienceevent         | Luma midValues |
 AJO Classification Fields       | _experience.journeyOrchestration.classification | Luma midValues |
 AJO Entity Fields               | _experience.customerJourneyManagement.entities  | Luma midValues |
(4 rows)