【问题标题】:Totalling up values across salesforce account hierarchies汇总各个销售人员帐户层次结构的值
【发布时间】:2016-03-09 11:40:28
【问题描述】:

我正在努力寻找解决以下问题的方法,任何人都可以提出高级方法。

使用 talend,我有一组帐户的输入值集(来自 CSV):

AccountId, ValueXYZ__c

我想将 ValueXYZ 存储在 SFDC 帐户中,这没问题,但是我想将具有相同父级的所有帐户的 ValueXYZ 合计为 Account.Parent.TotalValueXYZ

然后我想在帐户层次结构中“滚动”它:

想象一下帐户层次结构:

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

我尝试了几种方法,但都无法使它们起作用!

【问题讨论】:

  • 您能否提供代码 sn-ps,您目前尝试过,这可能有助于更快地解决您的问题并概述问题所在?
  • 这是一个天才的工作,所以我不确定如何从中获得 sn-ps(我是天才的菜鸟,抱歉)。我将在另一条评论中总结我尝试过的一些方法...

标签: salesforce hierarchy talend account


【解决方案1】:

层级信息存储在哪里?如果您可以以键值对格式将层次结构信息展平,那么就很简单了。只需阅读您的输入文件并在层次结构文件上进行查找/连接。你将不得不循环直到你到达基本记录

【讨论】:

    【解决方案2】:

    我的问题的症结在于不知道每个帐户在层次结构中的位置。一旦我有了这个,我就可以从最低级别循环到最高级别,将这些值总计到它们的父级。

    这是我编写的 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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多