首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要知道一种快速有效的方法来比较MuleSoft中的两个非常大的数组

需要知道一种快速有效的方法来比较MuleSoft中的两个非常大的数组
EN

Stack Overflow用户
提问于 2022-01-31 03:28:33
回答 1查看 419关注 0票数 0

我从一个MySQL表( customTable)中获取所有记录,这个表有一个主键。我还从salesforce对象(customTable__c)从salesforce查询所有记录。我正在试图找到销售人员的记录,但已从数据库中删除。桌子和销售队伍都有大约80000张唱片。我使用下面的脚本进行比较,但是这个脚本需要很长时间才能完成。

salesforce数据以JSON格式出现:

代码语言:javascript
运行
AI代码解释
复制
[
        {
            "Product_Line__c": "Sample",
            "ExternalId__c": "a9M5C000000GoJxUAK",
        },
        {
            "Product_Line__c": "Sample2",
            "ExternalId__c": "a9M5C000000GoJxUAL"
        }
]

数据库记录以JSON格式出现:

代码语言:javascript
运行
AI代码解释
复制
[
  {
    "changed_on": "2021-12-08T11:24:50",
    "primaryKey":"a9M5C000000GoJxUAL"
  },
  {
   
    "changed_on": "2021-12-08T11:24:50",
     "primaryKey":"a9M5C000000GoJxUAQ"
  }
]

主键是一个字符串。

预期输出( salesforce和数据库中主/外部id的差异:

代码语言:javascript
运行
AI代码解释
复制
[
   "ExternalId__c" : "a9M5C000000GoJxUAK",
   "Is_RM_Deleted__c" : true
]

我们还有别的好办法吗?我们能更快地完成任务吗?

salesforce.externaID是一个80k记录的数组。

database.primaryKey是一个80k记录的数组。

代码语言:javascript
运行
AI代码解释
复制
 %dw 2.0
   output application/json
    (salesforce.externalID -- database.primaryKey) 
     map {
    
        "ExternalId__c": $,
        "Is_RM_Deleted__c": true
    } 
EN

回答 1

Stack Overflow用户

发布于 2022-01-31 06:27:08

通常,在性能方面,DW不是瓶颈。您正在从DB和Salesforce加载160 k记录。默认情况下,Mulesoft将尝试流,一开始只加载几条记录。在DW代码中,您使用两个流,这意味着在执行DW转换时,Mulesoft将所有160 K记录加载到内存中,这可能需要一些时间。

如果您想要找到消耗每个流所需的时间,可以在DB和Salesforce查询之后添加带有sizeOf()的转换操作符。这个sizeOf()函数消耗了流,您可以这样计时它。

如果性能瓶颈正在加载数据,则可能必须将其分解为较小的块。

如果您已经有了内存中的数据,您可以尝试这样的方法:

如果在内存中加载记录不是瓶颈,您可以尝试这样的方法:

代码语言:javascript
运行
AI代码解释
复制
%dw 2.0
output application/json

var salesforce = [
    { externalID: 1 }, 
    { externalID: 2 },
    { externalID: 3 }
]

var database = [
    { primaryKey: 1 },
    { primaryKey: 2 }
]

var bSearch = java!java::util::Arrays::binarySearch

var databaseSortedArray = database.primaryKey orderBy ($)
---
salesforce 
    filter ((databaseSortedArray bSearch $.externalID) < 0)
    map {
        ExternalId__c: $.externalID,
        Is_RM_Deleted__c: true,
    }

这将使用标准的java函数进行二进制搜索,这需要对PrimaryKey数组进行排序。为了获得更好的性能,可以向SQL查询中添加order子句,以便在DB中进行排序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70925208

复制
相关文章
python中作用域与函数嵌套
实际上我们在定义函数的时候,如果省略了星号,那么在调用函数的时候必须要省略星号,除非我们拆解后的参数个数刚好相等。
刘金玉编程
2019/07/31
7530
python中函数嵌套、函数作为变量以及闭包的原理
python允许创建嵌套函数。也就是说我们可以在函数里面定义函数,而且现有的作用域和变量生存周期依旧不变。
狼啸风云
2021/03/04
5.4K0
python中函数嵌套、函数作为变量以及闭包的原理
Python嵌套函数与匿名函数
函数的嵌套调用是在"函数调用中再调用其他函数"。也就是说:函数嵌套允许在一个函数中调用另外一个函数。如下: name = "Forest" def change(): name = "Forest1" def change2(): # global name 如果声明了这句,下面的name改的是最外层的全局变层 name = "Forest2" #这句注释掉的话,则打印Forest1 print("第3层打印", name)
Yuou
2022/09/26
5160
python-函数的对象、函数嵌套、名称
内存存储变量名与变量间的绑定关系的空间(存放变量名的空间),这个空间被称为名称空间。
py3study
2020/01/15
2.5K0
python 中的嵌套类
能够看到 类中 又定义了 类 ,这种情况我们称之为嵌套类 。给一个简单 demo 来认识嵌套类 。
py3study
2020/01/10
4.2K0
python中的嵌套类
在.NET和JAVA语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的,今天在python也看到了很不错支持一下。动态语言中很好的嵌套类的实现,应该说嵌套类解决设计问题同时简化了程序,值得学习。
py3study
2020/01/08
3.7K0
Python嵌套函数 闭包
这也很好理解,在函数outer中定义了另外一个函数inner,而inner也必须在outer中被调用才能执行。
猫叔Rex
2022/01/24
1K0
python3--嵌套函数
# Auther: Aaron Fan # 嵌套函数 # 定义: # 在一个函数体内,用def重新定义新的函数,才叫嵌套函数 # 示例1:  #属于嵌套函数 def foo():    print("in the foo")    def bar():        print("in the bar")    bar() foo() #而这种就不属于嵌套函数: #def test1(): #    test2() #test1()
py3study
2020/01/06
7720
Python函数嵌套定义的洪荒之力
本文重点在于:Python允许函数的嵌套定义,这在有些情况下会带来很多方便。 感谢中国石油大学(华东)计算机与通信工程学院李昕老师提供问题。 假设有个列表,内容如下: >>> x = list(range(20)) >>> x [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 现在我们想得到一个新列表,其中每个值都是x中元素值加5,这很容易用Python内置函数map()实现,例如: >>> list(map(lam
Python小屋屋主
2018/04/16
1.1K0
函数的嵌套
# 输出:输出我在中国(大函数) 北京(小函数) def func_big(country): def func_small(city): print('我在%s,城市是%s' % (country, city)) func_small('北京') func_small('广州') func_big('中国') def func_big(country, bcity='北京'): def func_small(city): print
汪凡
2018/05/29
1.3K0
python基础之函数嵌套调用
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数嵌套调用相关内容。
jiankang666
2022/12/05
5730
python基础之函数嵌套调用
python基础之函数嵌套定义
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数嵌套定义相关内容。
jiankang666
2022/12/05
5000
python基础之函数嵌套定义
Python嵌套定义函数增强reduce()函数功能
2)functools标准库中的reduce()函数第一个参数可以是函数或lambda表达式,这个函数必须接收两个参数。
Python小屋屋主
2019/12/13
9100
Python嵌套定义函数增强reduce()函数功能
【说站】python函数嵌套调用的实现
以上就是python函数嵌套调用的实现,希望对大家有所帮助。更多Python学习指路:python基础教程
很酷的站长
2022/11/23
6080
【说站】python函数嵌套调用的实现
函数嵌套
现在有一个需求,通过给一个函数传参即可求得某个圆的面积或者圆的周长。也就是说把一堆工具丢进工具箱内,之后想要获得某个工具,直接从工具箱中获取就行了。
py3study
2020/01/16
1K0
函数嵌套
Python动态参数/命名空间/函数嵌套
  def func(*args, **kwargs):     pass
py3study
2020/01/15
8530
lambda隐藏函数的嵌套
# 隐藏函数嵌套 f = (lambda a,b :a if a>b else b)(1000, 2000008) print((lambda a,g:a if a > g else g)(2000,f)) # lambda 推导式 l = [lambda x:x**i for i in range(4)] print(l[1](4))
汪凡
2018/05/29
1.1K0
零基础学习 Python 之嵌套函数
我在几天以前的文章中(零基础学习 Python 之函数对象)说过,函数不单单可以作为对象来传递,还可以在一个函数里面嵌套一个函数,这个就是我们今天要讲的嵌套函数。
编程文青李狗蛋
2019/11/07
3230
python 函数嵌套和nonlocal关键字
与global关键字有点相似,可以对比着理解。nonlocal关键字只能作用域局部变量,且始终找离当前最近的上层局部作用域中的变量。看栗子:
全栈程序员站长
2022/10/04
4340
Python学习(一)函数定义、使用与嵌套
本文介绍了Python中函数定义、使用和嵌套,以及Python中self和init的含义和作用。
码科智能
2018/01/02
1.3K0

相似问题

Google API快速入门

135

Google Analytics API Python快速入门

117

Google Calendar API for iOS Swift

13

PHP Google Sheets API快速入门问题

112

Google Calendar API location swift iOS

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档