跨 salesforce 帐户层次结构汇总值
Totalling up values across salesforce account hierarchies
我正在努力寻找解决以下问题的方法,任何人都可以建议一个高级方法。
使用 talend,我有一组帐户的输入值集(来自 CSV):
AccountId, ValueXYZ__c
我想针对 SFDC 帐户存储 ValueXYZ,这没问题,但我想将具有相同父级的所有帐户的 ValueXYZ 相加
Account.Parent.TotalValueXYZ
然后我想 "roll" 一直到帐户层次结构:
想象一下帐户层次结构:
A
-B
--C
--D
-E
--F
--G
我想要 A 上的 3 个值:
ValueXYZ = account A's ValueXYZ
TotalValueXYZ = total of ValueXYZ values for all accounts under A in the hierarchy
TOTAL = formula field to add together the previous 2 values
我想要帐户 B 上的 3 个值
ValueXYZ = account B's ValueXYZ
TotalValueXYZ = total of ValueXYZ values for accounts C & D
TOTAL = formula field to add together the previous 2 values
我想要帐户 C 上的 3 个值
ValueXYZ = account C's ValueXYZ
TotalValueXYZ = 0
TOTAL = formula field to add together the previous 2 values
我尝试了多种方法,但无法使任何一种起作用!
层级信息存储在哪里?如果您可以以键值对格式展平层次结构信息,那么就很简单了。只需读取您的输入文件并对层次结构文件执行 lookup/join。您将不得不循环直到到达基本记录
我的问题的症结在于不知道每个帐户在层次结构中的位置。一旦我有了它,我就可以从最低级别循环到最高级别,将这些值加起来达到它们的 parents.
这是我写的 T-SQL 用来标记每个帐户的层次结构位置 (HILEVEL)
TRUNCATE TABLE [TALEND_WORKSPACE].[dbo].[SFDCAccount]
INSERT INTO [TALEND_WORKSPACE].[dbo].[SFDCAccount] (Id, ParentId, QCIYTDOneTime, QCIYTDRecurring, HILEVEL)
SELECT Id, ParentId, ValueXYZ, '0'
FROM [TALEND_WORKSPACE].[dbo].[SFDCAccountRawData]
WHERE ParentId = ' ';
USE TALEND_WORKSPACE
IF OBJECT_ID('dbo.sfdcaccounthierarchy', 'P') IS NOT NULL
DROP PROCEDURE [dbo].[sfdcaccounthierarchy];
GO
CREATE PROCEDURE [dbo].[sfdcaccounthierarchy]
AS
DECLARE @v_counter int;
DECLARE @v_lastccounter int;
DECLARE @v_max int;
SET @v_counter = 0;
SET @v_lastccounter = 0;
SET @v_max = 10;
WHILE (@v_counter < @v_max)
BEGIN
SET @v_lastccounter = @v_counter;
SET @v_counter = @v_counter+1;
PRINT @v_counter;
INSERT INTO [dbo].[SFDCAccount] (Id, ParentId, QCIYTDOneTime, QCIYTDRecurring, HILEVEL)
SELECT Id, ParentId, ValueXYZ, @v_counter
FROM [TALEND_WORKSPACE].[dbo].[SFDCAccountRawData]
WHERE ParentId IN (SELECT Id FROM [TALEND_WORKSPACE].[dbo].[SFDCAccount]
WHERE HILEVEL = @v_lastccounter);
if @@ROWCOUNT != 0
BREAK;
END
GO
EXEC [TALEND_WORKSPACE].[dbo].[sfdcaccounthierarchy];
我正在努力寻找解决以下问题的方法,任何人都可以建议一个高级方法。
使用 talend,我有一组帐户的输入值集(来自 CSV):
AccountId, ValueXYZ__c
我想针对 SFDC 帐户存储 ValueXYZ,这没问题,但我想将具有相同父级的所有帐户的 ValueXYZ 相加 Account.Parent.TotalValueXYZ
然后我想 "roll" 一直到帐户层次结构:
想象一下帐户层次结构:
A
-B
--C
--D
-E
--F
--G
我想要 A 上的 3 个值:
ValueXYZ = account A's ValueXYZ
TotalValueXYZ = total of ValueXYZ values for all accounts under A in the hierarchy
TOTAL = formula field to add together the previous 2 values
我想要帐户 B 上的 3 个值
ValueXYZ = account B's ValueXYZ
TotalValueXYZ = total of ValueXYZ values for accounts C & D
TOTAL = formula field to add together the previous 2 values
我想要帐户 C 上的 3 个值
ValueXYZ = account C's ValueXYZ
TotalValueXYZ = 0
TOTAL = formula field to add together the previous 2 values
我尝试了多种方法,但无法使任何一种起作用!
层级信息存储在哪里?如果您可以以键值对格式展平层次结构信息,那么就很简单了。只需读取您的输入文件并对层次结构文件执行 lookup/join。您将不得不循环直到到达基本记录
我的问题的症结在于不知道每个帐户在层次结构中的位置。一旦我有了它,我就可以从最低级别循环到最高级别,将这些值加起来达到它们的 parents.
这是我写的 T-SQL 用来标记每个帐户的层次结构位置 (HILEVEL)
TRUNCATE TABLE [TALEND_WORKSPACE].[dbo].[SFDCAccount]
INSERT INTO [TALEND_WORKSPACE].[dbo].[SFDCAccount] (Id, ParentId, QCIYTDOneTime, QCIYTDRecurring, HILEVEL)
SELECT Id, ParentId, ValueXYZ, '0'
FROM [TALEND_WORKSPACE].[dbo].[SFDCAccountRawData]
WHERE ParentId = ' ';
USE TALEND_WORKSPACE
IF OBJECT_ID('dbo.sfdcaccounthierarchy', 'P') IS NOT NULL
DROP PROCEDURE [dbo].[sfdcaccounthierarchy];
GO
CREATE PROCEDURE [dbo].[sfdcaccounthierarchy]
AS
DECLARE @v_counter int;
DECLARE @v_lastccounter int;
DECLARE @v_max int;
SET @v_counter = 0;
SET @v_lastccounter = 0;
SET @v_max = 10;
WHILE (@v_counter < @v_max)
BEGIN
SET @v_lastccounter = @v_counter;
SET @v_counter = @v_counter+1;
PRINT @v_counter;
INSERT INTO [dbo].[SFDCAccount] (Id, ParentId, QCIYTDOneTime, QCIYTDRecurring, HILEVEL)
SELECT Id, ParentId, ValueXYZ, @v_counter
FROM [TALEND_WORKSPACE].[dbo].[SFDCAccountRawData]
WHERE ParentId IN (SELECT Id FROM [TALEND_WORKSPACE].[dbo].[SFDCAccount]
WHERE HILEVEL = @v_lastccounter);
if @@ROWCOUNT != 0
BREAK;
END
GO
EXEC [TALEND_WORKSPACE].[dbo].[sfdcaccounthierarchy];