作者文杰特涵
最后更新于 2022 年 2 月 14 日
警告
这篇文章是入门这是在 中发布的内容的删节版。我们不保证所发布内容的准确性、完整性、可靠性或最新性。具体内容请参考原文。
另外,如果您有任何需要或更正的要求或更正,请发表评论。
概述
本指南介绍了在 Salesforce 和 Teradata Vantage 之间迁移数据的过程。包括两个用例。
① 从 Salesforce 获取客户信息,并将其与 Vantage 的订单和运输信息相结合,以获得分析见解。
② 华帝新线索使用来自 Salesforce 的数据更新表格并使用 AppFlow 将新线索添加到 Salesforce。
Amazon AppFlow 将客户账户数据从 Salesforce 传输到 Amazon S3。然后,Vantage 使用本机对象存储 (NOS) 加载功能将 Amazon S3 中的数据与 Vantage 中的数据组合到一个查询中。
帐户信息存储在 Vantage 上新线索用于表更新。更新表时,Vantage 使用 NOS 写入回写到 Amazon S3 存储桶。当新的潜在客户数据文件到达时,Lambda 函数会触发,将数据文件从 Parquet 格式转换为 CSV 格式,然后 AppFlow 会将新的潜在客户重新插入 Salesforce。
关于亚马逊 AppFlow
Amazon AppFlow 是一项完全托管的集成服务,可让您在 SaaS 应用程序(例如 Salesforce、Marketo、Slack、ServiceNow)和 AWS 服务(例如 Amazon S3 和 Amazon Redshift)之间安全地传输数据。 AppFlow 自动加密动态数据,允许您限制与 AWS PrivateLink 集成的 SaaS 应用程序在公共互联网上的数据流,从而减少您面临安全威胁的风险。
截至今天,Amazon AppFlow 可以从 16 个来源中进行选择,并将数据发送到 4 个目的地。
关于 Teradata Vantage
Teradata Vantage 是一个用于企业分析的多云数据平台,可从头到尾解决您的数据挑战。
Vantage 使企业能够从小型、弹性扩展的计算和存储开始,只为他们使用的东西付费,利用低成本的对象存储,并整合分析工作负载。 Vantage 支持 R、Python、Teradata Studio 和任何其他基于 SQL 的工具。
Vantage 是一个平台,它汇集了描述性、预测性和规范性分析、自主决策、ML 功能和可视化工具,可在您的数据所在的任何地方大规模挖掘实时商业智能。我可以做到。
Teradata Vantage Native Object Store (NOS) 允许您使用标准 SQL 探索外部对象存储(例如 Amazon S3)中的数据。使用 NOS 不需要特殊的对象存储端计算基础设施。要探索 Amazon S3 存储桶中的数据,只需创建一个指向该存储桶的 NOS 表定义。 NOS 还允许您从 Amazon S3 快速导入数据并与 Vantage 数据库中的其他表连接。
先决条件
假定您熟悉 Amazon AppFlow 服务和 Teradata Vantage。
需要以下帐户和系统。
• 访问 Teradata Vantage 实例。
・具有允许您创建和运行流的角色的 AWS 账户。
・用于存储 Salesforce 数据的 Amazon S3 存储桶(例如 ptctsoutput)
用于存储原始 Vantage 数据(Parquet 文件)的 Amazon S3 存储桶(例如 vantageparquet)。此存储桶必须具有允许访问 Amazon AppFlow 的策略。
用于存储转换后的 Vantage 数据(CSV 文件)的 Amazon S3 存储桶(例如 vantagecsv)
・满足以下要求的 Salesforce 帐户。
○ 您需要在您的 Salesforce 帐户中启用 API 访问。对于 Enterprise、Unlimited、Developer 和 Performance 版本,默认启用 API 访问。
○ 您的 Salesforce 帐户必须允许安装连接的应用程序。如果禁用,请联系您的 Salesforce 管理员。在 Amazon AppFlow 中创建 Salesforce 连接后,确保在您的 Salesforce 帐户中安装了名为“Amazon AppFlow Embedded Login App”的连接应用程序。
○ “Amazon AppFlow Embedded Login App”的刷新令牌策略必须设置为“刷新令牌在撤销前有效”。否则,当刷新令牌过期时,流程将失败。
○ 要使用事件驱动的流触发器,必须启用 Salesforce 的变更数据捕获。从设置中,在快速搜索中输入“更改数据捕获”。
○ 如果您的 Salesforce 应用程序强制执行 IP 地址限制,您必须将 Amazon AppFlow 使用的地址列入白名单。有关更多信息,请参阅 Amazon Web Services 一般参考https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html[AWS请参阅 IP 地址范围。
○ 传输 1,000,000 条或更多 Salesforce 记录时,无法选择 Salesforce 复合字段。不允许复合字段传输,因为 Amazon AppFlow 使用 Salesforce Bulk API 进行传输。
○ 要使用 AWS PrivateLink 创建私有连接,您必须在您的 Salesforce 账户中同时启用“管理元数据”和“管理外部连接”用户权限。私有连接目前在 us-east-1 和 us-west-2 AWS 区域可用。
○ 存在无法更新的 Salesforce 对象,例如历史对象。对于这些对象,Amazon AppFlow 不支持计划触发流的增量导出(仅传输新数据选项)。或者,您可以选择“传输所有数据”选项并选择适当的过滤器来限制要传输的记录。
程序
满足先决条件后,进行以下操作:
① 创建从 Salesforce 到 Amazon S3 的流
② 使用 NOS 探索数据
③ 使用 NOS 将 Vantage 数据导出到 Amazon S3。
④ 创建从 Amazon S3 到 Salesforce 的流
创建从 Salesforce 到 Amazon S3 的流
在此步骤中,我们将使用 Amazon AppFlow 创建流。在这个例子中,Salesforce 开发人员帐户连接到 Salesforce。
AppFlow 控制台并使用您的 AWS 登录凭证登录,创建流程点击。确保您位于正确的区域并创建了一个存储桶来存储您的 Salesforce 数据。
步骤 1:指定流详细信息
此步骤提供流程的基本信息。
流名称(例如销售人员)和流程描述(可选)并输入自定义加密设置(详细信息)不选中。到下一个点击。
第 2 步:设置流程
此步骤提供有关流的源和目标的信息。在这个例子中,作为源销售队伍作为目的地亚马逊 S3使用。
・源名称选择 Salesforce,然后选择 Salesforce 连接和创建新连接选择。
・Salesforce 环境什么时候数据加密使用默认值。为连接命名(例如 salesforce)并单击继续]点击。
・在销售人员登录屏幕上,用户名什么时候密码输入。登录点击。
・允许单击以允许 AppFlow 访问您的 Salesforce 数据和信息。
・AppFlow配置流程回到窗口,然后Salesforce 对象并选择客户作为 Salesforce 对象。
・目的地名称使用 Amazon S3 作为早些时候选择创建的bucket来保存数据(例如ptctsoutput)
・浮动触发器到“按需运行”。下一个点击。
第 3 步:数据字段映射
此步骤确定数据将如何从源传输到目标。
・映射方法作为,使用手动映射字段。
・为简单起见,源到目标映射选择直接映射所有字段。
如果单击“直接映射所有字段”,则所有字段将为“映射字段显示在添加表达式(连接),修改值(屏蔽或截断字段值),删除选定的映射单击您想要的字段的复选框
在此示例中,未选中复选框。
・验证现在添加一个条件以忽略不包含帐单地址的记录(可选)。点击下一步**。
第 4 步:添加过滤器
您可以指定过滤器来确定要传输的记录。在此示例中,我们将添加一个条件来过滤已删除的记录(可选)。 [到下一个]点击
步骤 5. 审查和创建
检查您输入的所有信息。如有必要,我会修复它。 [创建流]点击。
创建流后,您将看到带有流信息的流创建成功消息。
运行流程
右上方运行流程点击。
流程完成运行后,您将看到一条运行成功的消息。
消息示例
单击存储桶链接以查看数据。 Salesforce 中的数据将采用 JSON 格式。
更改数据文件属性
默认情况下,Salesforce 中的数据是加密的。为了让 NOS 访问它,它必须被解密。
单击 Amazon S3 存储桶中的数据文件并选择“财产标签。
加密,单击 AWS-KMS 并将 AWS-KMS 加密更改为无。 [保持]点击。
使用 NOS 探索数据
Native Object Store 具有用于探索和分析 Amazon S3 中数据的内置功能。以下是 NOS 的一些常用功能。
创建外部表
外部表使在 Vantage 高级 SQL 引擎中引用外部数据变得容易,从而以结构化的关系格式提供数据。
要创建外部表,请首先使用您的凭据登录 Teradata Vantage 系统。使用访问密钥创建 AUTHORIZATION 对象以访问您的 Amazon S3 存储桶。 Authorization 对象通过建立对允许谁使用外部表访问 Amazon S3 数据的控制来增强安全性。
CREATE AUTHORIZATION DefAuth_S3
AS DEFINER TRUSTED
USER 'A*****************' /* AccessKeyId */
PASSWORD '********'; /* SecretAccessKey */
“USER”是您的 AWS 账户的 AccessKeyId,“PASSWORD”是您的 SecretAccessKey。
使用以下命令在 Amazon S3 上为 JSON 文件创建一个外部表。
CREATE MULTISET FOREIGN TABLE salesforce,
EXTERNAL SECURITY DEFINER TRUSTED DefAuth_S3
(
Location VARCHAR(2048) CHARACTER SET UNICODE CASESPECIFIC,
Payload JSON(8388096) INLINE LENGTH 32000 CHARACTER SET UNICODE
)
USING
(
LOCATION ('/S3/s3.amazonaws.com/ptctstoutput/salesforce/1ce190bc-25a9-4493-99ad-7497b497a0d0/903790813-2020-08-21T21:02:25')
);
至少,外部表定义必须包括一个表名和一个指向对象存储中数据的 Location 子句(以黄色突出显示)。位置必须有一个顶级名称,亚马逊称之为“存储桶”。
如果文件名在文件名末尾没有标准扩展名(.json、.csv、.parquet),还必须定义位置和有效负载列(以青绿色突出显示)以指示数据文件类型。
外部表始终定义为无主索引 (NoPI) 表。
创建外部表后,您可以通过对外部表执行“选择”来查询 Amazon S3 数据集的内容。
SELECT * FROM salesforce;
SELECT payload.* FROM salesforce;
外部表仅包含两列。位置和有效载荷。位置是对象存储系统中的地址。数据本身由有效负载列表示,外部表中每条记录中的有效负载值表示单个 JSON 对象及其所有名称-值对。
SELECT * FROM salesforce 的示例输出;
示例输出格式“SELECT payload.* FROM salesforce;”。
JSON_KEYS 表运算符
JSON 数据可能包含每条记录的不同属性。使用 JSON_KEYS 确定您的数据存储区可能包含的完整属性列表。
|SELECT DISTINCT * FROM JSON_KEYS (ON (SELECT payload FROM salesforce)) AS j;
这个 SQL 的结果非常大,所以只显示了部分结果。
查看创建
视图简化了与有效负载属性相关的名称,更容易针对对象存储数据编写可执行 SQL 代码,并隐藏外部表中的位置引用以使它们看起来像常规列。可以做到。
下面是使用从上面的 JSON_KEYS 表运算符发现的属性的示例视图创建语句。
REPLACE VIEW salesforceView AS (
SELECT
CAST(payload.Id AS VARCHAR(20)) Customer_ID,
CAST(payload."Name" AS VARCHAR(100)) Customer_Name,
CAST(payload.AccountNumber AS VARCHAR(10)) Acct_Number,
CAST(payload.BillingStreet AS VARCHAR(20)) Billing_Street,
CAST(payload.BillingCity AS VARCHAR(20)) Billing_City,
CAST(payload.BillingState AS VARCHAR(10)) Billing_State,
CAST(payload.BillingPostalCode AS VARCHAR(5)) Billing_Post_Code,
CAST(payload.BillingCountry AS VARCHAR(20)) Billing_Country,
CAST(payload.Phone AS VARCHAR(15)) Phone,
CAST(payload.Fax AS VARCHAR(15)) Fax,
CAST(payload.ShippingStreet AS VARCHAR(20)) Shipping_Street,
CAST(payload.ShippingCity AS VARCHAR(20)) Shipping_City,
CAST(payload.ShippingState AS VARCHAR(10)) Shipping_State,
CAST(payload.ShippingPostalCode AS VARCHAR(5)) Shipping_Post_Code,
CAST(payload.ShippingCountry AS VARCHAR(20)) Shipping_Country,
CAST(payload.Industry AS VARCHAR(50)) Industry,
CAST(payload.Description AS VARCHAR(200)) Description,
CAST(payload.NumberOfEmployees AS VARCHAR(10)) Num_Of_Employee,
CAST(payload.CustomerPriority__c AS VARCHAR(10)) Priority,
CAST(payload.Rating AS VARCHAR(10)) Rating,
CAST(payload.SLA__c AS VARCHAR(10)) SLA,
CAST(payload.AnnualRevenue AS VARCHAR(10)) Annual_Revenue,
CAST(payload."Type" AS VARCHAR(20)) Customer_Type,
CAST(payload.Website AS VARCHAR(100)) Customer_Website,
CAST(payload.LastActivityDate AS VARCHAR(50)) Last_Activity_Date
FROM salesforce
);
SELECT * FROM salesforceView;
部分输出
READ_NOS 表操作符
READ_NOS 表运算符可用于在不首先定义外部表的情况下对部分数据进行采样和探索,或者显示与 Location 子句中指定的所有对象相关的键列表。
SELECT top 5 payload.*
FROM READ_NOS (
ON (SELECT CAST(NULL AS JSON CHARACTER SET Unicode))
USING
LOCATION ('/S3/s3.amazonaws.com/ptctstoutput/salesforce/1ce190bc-25a9-4493-99ad-7497b497a0d0/903790813-2020-08-21T21:02:25')
ACCESS_ID ('A**********') /* AccessKeyId */
ACCESS_KEY ('***********') /* SecretAccessKey */
) AS D
GROUP BY 1;
输出
将 Amazon S3 数据与数据库内表连接起来
外部表可以与 Vantage 中的表连接以进行进一步分析。例如,订单和运输信息存储在三个 Vantage 表中:Orders、Order_Items 和 Shipping_Address。
订单 DDL
CREATE TABLE Orders (
Order_ID INT NOT NULL,
Customer_ID VARCHAR(20) CHARACTER SET LATIN CASESPECIFIC,
Order_Status INT,
-- Order status: 1 = Pending; 2 = Processing; 3 = Rejected; 4 = Completed
Order_Date DATE NOT NULL,
Required_Date DATE NOT NULL,
Shipped_Date DATE,
Store_ID INT NOT NULL,
Staff_ID INT NOT NULL
) Primary Index (Order_ID);
Order_Items 的 DDL
CREATE TABLE Order_Items(
Order_ID INT NOT NULL,
Item_ID INT,
Product_ID INT NOT NULL,
Quantity INT NOT NULL,
List_Price DECIMAL (10, 2) NOT NULL,
Discount DECIMAL (4, 2) NOT NULL DEFAULT 0
) Primary Index (Order_ID, Item_ID);
Shipping_Address 的 DDL。
CREATE TABLE Shipping_Address (
Customer_ID VARCHAR(20) CHARACTER SET LATIN CASESPECIFIC NOT NULL,
Street VARCHAR(100) CHARACTER SET LATIN CASESPECIFIC,
City VARCHAR(20) CHARACTER SET LATIN CASESPECIFIC,
State VARCHAR(15) CHARACTER SET LATIN CASESPECIFIC,
Postal_Code VARCHAR(10) CHARACTER SET LATIN CASESPECIFIC,
Country VARCHAR(20) CHARACTER SET LATIN CASESPECIFIC
) Primary Index (Customer_ID);
该表具有以下数据:
命令
order_item
收件地址
通过将外部 salesforce 表连接到数据库中的 Orders、Order_Items 和 Shipping_Address 表,您可以检索客户的订单信息以及客户的运输信息。
SELECT
s.payload.Id as Customer_ID,
s.payload."Name" as Customer_Name,
s.payload.AccountNumber as Acct_Number,
o.Order_ID as Order_ID,
o.Order_Status as Order_Status,
o.Order_Date as Order_Date,
oi.Item_ID as Item_ID,
oi.Product_ID as Product_ID,
sa.Street as Shipping_Street,
sa.City as Shipping_City,
sa.State as Shipping_State,
sa.Postal_Code as Shipping_Postal_Code,
sa.Country as Shipping_Country
FROM
salesforce s, Orders o, Order_Items oi, Shipping_Address sa
WHERE
s.payload.Id = o.Customer_ID
AND o.Customer_ID = sa.Customer_ID
AND o.Order_ID = oi.Order_ID
ORDER BY 1;
结果
将 Amazon S3 数据导入 Vantage
当您预计对相同数据的重复访问时,拥有 Amazon S3 数据的持久副本非常有用。 NOS 外部表不会自动创建 Amazon S3 数据的持久副本。下面描述了几种填充数据库的方法。
CREATE TABLE AS ... WITH DATA "语句可以与用作源表的外部表定义一起使用。在这种方法中,外部表的有效负载由您要包含在目标表中的属性和关系表的属性,可以选择性的选择列名。
CREATE TABLE salesforceVantage AS (
SELECT
CAST(payload.Id AS VARCHAR(20)) Customer_ID,
CAST(payload."Name" AS VARCHAR(100)) Customer_Name,
CAST(payload.AccountNumber AS VARCHAR(10)) Acct_Number,
CAST(payload.BillingStreet AS VARCHAR(20)) Billing_Street,
CAST(payload.BillingCity AS VARCHAR(20)) Billing_City,
CAST(payload.BillingState AS VARCHAR(10)) Billing_State,
CAST(payload.BillingPostalCode AS VARCHAR(5)) Billing_Post_Code,
CAST(payload.BillingCountry AS VARCHAR(20)) Billing_Country,
CAST(payload.Phone AS VARCHAR(15)) Phone,
CAST(payload.Fax AS VARCHAR(15)) Fax,
CAST(payload.ShippingStreet AS VARCHAR(20)) Shipping_Street,
CAST(payload.ShippingCity AS VARCHAR(20)) Shipping_City,
CAST(payload.ShippingState AS VARCHAR(10)) Shipping_State,
CAST(payload.ShippingPostalCode AS VARCHAR(5)) Shipping_Post_Code,
CAST(payload.ShippingCountry AS VARCHAR(20)) Shipping_Country,
CAST(payload.Industry AS VARCHAR(50)) Industry,
CAST(payload.Description AS VARCHAR(200)) Description,
CAST(payload.NumberOfEmployees AS INT) Num_Of_Employee,
CAST(payload.CustomerPriority__c AS VARCHAR(10)) Priority,
CAST(payload.Rating AS VARCHAR(10)) Rating,
CAST(payload.SLA__c AS VARCHAR(10)) SLA,
CAST(payload."Type" AS VARCHAR(20)) Customer_Type,
CAST(payload.Website AS VARCHAR(100)) Customer_Website,
CAST(payload.AnnualRevenue AS VARCHAR(10)) Annual_Revenue,
CAST(payload.LastActivityDate AS DATE) Last_Activity_Date
FROM salesforce)
WITH DATA
NO PRIMARY INDEX;
・选择 * *从销售人员优势; 部分结果。
您可以使用 READ_NOS 表运算符,而不是使用外部表。此表运算符允许您直接从对象存储访问数据,而无需先构建外部表。 READ_NOS 可以与 CREATE TABLE AS 子句组合以在数据库中构建数据的持久版本。
CREATE TABLE salesforceReadNOS AS (
SELECT
CAST(payload.Id AS VARCHAR(20)) Customer_ID,
CAST(payload."Name" AS VARCHAR(100)) Customer_Name,
CAST(payload.AccountNumber AS VARCHAR(10)) Acct_Number,
CAST(payload.BillingStreet AS VARCHAR(20)) Billing_Street,
CAST(payload.BillingCity AS VARCHAR(20)) Billing_City,
CAST(payload.BillingState AS VARCHAR(10)) Billing_State,
CAST(payload.BillingPostalCode AS VARCHAR(5)) Billing_Post_Code,
CAST(payload.BillingCountry AS VARCHAR(20)) Billing_Country,
CAST(payload.Phone AS VARCHAR(15)) Phone,
CAST(payload.Fax AS VARCHAR(15)) Fax,
CAST(payload.ShippingStreet AS VARCHAR(20)) Shipping_Street,
CAST(payload.ShippingCity AS VARCHAR(20)) Shipping_City,
CAST(payload.ShippingState AS VARCHAR(10)) Shipping_State,
CAST(payload.ShippingPostalCode AS VARCHAR(5)) Shipping_Post_Code,
CAST(payload.ShippingCountry AS VARCHAR(20)) Shipping_Country,
CAST(payload.Industry AS VARCHAR(50)) Industry,
CAST(payload.Description AS VARCHAR(200)) Description,
CAST(payload.NumberOfEmployees AS INT) Num_Of_Employee,
CAST(payload.CustomerPriority__c AS VARCHAR(10)) Priority,
CAST(payload.Rating AS VARCHAR(10)) Rating,
CAST(payload.SLA__c AS VARCHAR(10)) SLA,
CAST(payload."Type" AS VARCHAR(20)) Customer_Type,
CAST(payload.Website AS VARCHAR(100)) Customer_Website,
CAST(payload.AnnualRevenue AS VARCHAR(10)) Annual_Revenue,
CAST(payload.LastActivityDate AS DATE) Last_Activity_Date
FROM READ_NOS (
ON (SELECT CAST(NULL AS JSON CHARACTER SET Unicode))
USING
LOCATION ('/S3/s3.amazonaws.com/ptctstoutput/salesforce/1ce190bc-25a9-4493-99ad-7497b497a0d0/903790813-2020-08-21T21:02:25')
ACCESS_ID ('A**********') /* AccessKeyId */
ACCESS_KEY ('***********') /* SecretAccessKey */
) AS D
) WITH DATA;
salesforce 读取 NOS表格结果
SELECT * FROM salesforceReadNOS;
将 Amazon S3 数据放入关系表的另一种方法是“INSERT SELECT”。在这种方法中,外部表是源表和插入新创建的永久表的表。与上面的 READ_NOS 示例相反,此方法需要预先创建永久表。
INSERT SELECT 方法的优点之一是能够更改目标表的属性。例如,将目标表更改为多组您可以指定是否使用或选择不同的主索引。
CREATE TABLE salesforcePerm, FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT,
DEFAULT MERGEBLOCKRATIO,
MAP = TD_MAP1
(
Customer_Id VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC,
Customer_Name VARCHAR(100) CHARACTER SET LATIN NOT CASESPECIFIC,
Acct_Number VARCHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC,
Billing_Street VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC,
Billing_City VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC,
Billing_State VARCHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC,
Billing_Post_Code VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC,
Billing_Country VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC,
Phone VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC,
Fax VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC,
Shipping_Street VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC,
Shipping_City VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC,
Shipping_State VARCHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC,
Shipping_Post_Code VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC,
Shipping_Country VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC,
Industry VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC,
Description VARCHAR(200) CHARACTER SET LATIN NOT CASESPECIFIC,
Num_Of_Employee INT,
Priority VARCHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC,
Rating VARCHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC,
SLA VARCHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC,
Customer_Type VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC,
Customer_Website VARCHAR(100) CHARACTER SET LATIN NOT CASESPECIFIC,
Annual_Revenue VARCHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC,
Last_Activity_Date DATE
) PRIMARY INDEX (Customer_ID);
INSERT INTO salesforcePerm
SELECT
CAST(payload.Id AS VARCHAR(20)) Customer_ID,
CAST(payload."Name" AS VARCHAR(100)) Customer_Name,
CAST(payload.AccountNumber AS VARCHAR(10)) Acct_Number,
CAST(payload.BillingStreet AS VARCHAR(20)) Billing_Street,
CAST(payload.BillingCity AS VARCHAR(20)) Billing_City,
CAST(payload.BillingState AS VARCHAR(10)) Billing_State,
CAST(payload.BillingPostalCode AS VARCHAR(5)) Billing_Post_Code,
CAST(payload.BillingCountry AS VARCHAR(20)) Billing_Country,
CAST(payload.Phone AS VARCHAR(15)) Phone,
CAST(payload.Fax AS VARCHAR(15)) Fax,
CAST(payload.ShippingStreet AS VARCHAR(20)) Shipping_Street,
CAST(payload.ShippingCity AS VARCHAR(20)) Shipping_City,
CAST(payload.ShippingState AS VARCHAR(10)) Shipping_State,
CAST(payload.ShippingPostalCode AS VARCHAR(5)) Shipping_Post_Code,
CAST(payload.ShippingCountry AS VARCHAR(20)) Shipping_Country,
CAST(payload.Industry AS VARCHAR(50)) Industry,
CAST(payload.Description AS VARCHAR(200)) Description,
CAST(payload.NumberOfEmployees AS INT) Num_Of_Employee,
CAST(payload.CustomerPriority__c AS VARCHAR(10)) Priority,
CAST(payload.Rating AS VARCHAR(10)) Rating,
CAST(payload.SLA__c AS VARCHAR(10)) SLA,
CAST(payload."Type" AS VARCHAR(20)) Customer_Type,
CAST(payload.Website AS VARCHAR(100)) Customer_Website,
CAST(payload.AnnualRevenue AS VARCHAR(10)) Annual_Revenue,
CAST(payload.LastActivityDate AS DATE) Last_Activity_Date
FROM salesforce;
SELECT * FROM salesforcePerm;
这是一个示例结果。
使用 NOS 将 Vantage 数据导出到 Amazon S3
一条Vantage系统新线索有一张桌子
请注意,此潜在客户没有地址信息。使用从 Salesforce 获得的帐户信息,新线索让我们更新表格。
UPDATE nl
FROM
newleads AS nl,
salesforceReadNOS AS srn
SET
Street = srn.Billing_Street,
City = srn.Billing_City,
State = srn.Billing_State,
Post_Code = srn.Billing_Post_Code,
Country = srn.Billing_Country
WHERE Account_ID = srn.Acct_Number;
新的潜在客户现在具有地址信息。
使用 WRITE_NOS 将新的潜在客户信息写入 S3 存储桶。
SELECT * FROM WRITE_NOS (
ON (
SELECT
Account_ID,
Last_Name,
First_Name,
Company,
Cust_Title,
Email,
Status,
Owner_ID,
Street,
City,
State,
Post_Code,
Country
FROM newleads
)
USING
LOCATION ('/s3/vantageparquet.s3.amazonaws.com/')
AUTHORIZATION ('{"Access_ID":"A*****","Access_Key":"*****"}')
COMPRESSION ('SNAPPY')
NAMING ('DISCRETE')
INCLUDE_ORDERING ('FALSE')
STOREDAS ('CSV')
) AS d;
Access_ID 是 AccessKeyID,Access_Key 是 Bucket 的 SecretAccessKey。
创建从 Amazon S3 到 Salesforce 的流
重复步骤 1 以创建以 Amazon S3 作为源和 Salesforce 作为目标的流。
步骤 1. 指定流详细信息
此步骤提供流程的基本信息。
流名称(例如 vantage2sf)和流程描述(可选)并输入自定义加密设置(详细信息)不选中。 [到下一个]点击。
步骤 2. 配置您的流程
此步骤提供有关流的源和目标的信息。在这个例子中,作为源亚马逊 S3并作为目的地销售队伍将被使用。
・来源详情选择 Amazon S3 并选择您编写 CSV 文件的存储桶(例如 vantagecsv)。
・目的地详情选择 Salesforce 和选择 Salesforce 连接使用下拉列表中 Step1 中创建的连接,Lead 为选择 Salesforce 对象选择。
・错误处理使用默认停止当前流运行。
・浮动触发器是按需运行。 [下一个]点击。
步骤 3. 映射数据字段
在此步骤中,您决定如何将数据从源传输到目标。
・映射方法作为,使用手动映射字段
・目的地记录优先级使用插入新记录(默认)作为
・源和目标映射,使用以下映射:
・”到下一个“点击。
第4步。添加过滤器
您可以指定过滤器来确定要传输的记录。在此示例中,未添加任何过滤器。 [到下一个“点击。
第 5 步:审查和创建
确认您刚刚输入的所有信息。如有必要,我会修复它。 [创建流]点击。
创建流后,您将看到带有流信息的流创建成功消息。
运行流程
[运行流程]点击。
流程完成运行后,您将看到一条运行成功的消息。
消息示例
新的潜在客户 Tom Johnson 已添加到 Salesforce 页面。
清理(可选)
Salesforce 完成处理您的数据后,您使用的资源将添加到您的 AWS 账户 (应用流, 亚马逊S3,华帝,虚拟机等),请执行以下步骤:
① 应用流。
○ 删除流程中创建的“连接”。
○ 删除流。
② Amazon S3 存储桶和文件
○ 导航到存储 Vantage 数据文件的 Amazon S3 存储桶并删除文件。
○ 如果您不需要保留存储桶,请将其删除。
③ Teradata Vantage 实例
○ 停止/终止不再需要的实例。
联系 Teradata Vantage
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308630665.html