Find Duplicate Records Using Script
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-24-2017 02:54 AM
I have a requuirement to find out dupliacate records in cmdb_ci table.
There are combination of unique fields using which I need to find out duplicate.Unique fields which is to be checked are-:serial number,asset tag,category.
Actually I have one script which finds out duplicate records, but it is considering only one field. I want to check all the above fields mentioned.Below is the script
which is considering only fields but my requiirement is to find out duplicate in combination of above field.
- gs.print(getDuplicates('cmdb_ci','serial_number','asset_tag','model_id','u_asset_id','fqdn','model_number','model_id');
function getDuplicates(tablename,val,val1,val2,val3,val4,val5,val6) {
var dupRecords = [];
var gaDupCheck = new GlideAggregate(tablename);
- gaDupCheck.addQuery('active','true');
- gaDupCheck.addAggregate('COUNT',val);
- gaDupCheck.addAggregate('COUNT',val1);
- gaDupCheck.addAggregate('COUNT',val2);
- gaDupCheck.addAggregate('COUNT',val3);
- gaDupCheck.addAggregate('COUNT',val4);
- gaDupCheck.addAggregate('COUNT',val5);
- gaDupCheck.addAggregate('COUNT',val6);
// gaDupCheck.addNotNullQuery(val);
- gaDupCheck.groupBy(val);
- gaDupCheck.addHaving('COUNT', '>', 1);
- gaDupCheck.query();
while (gaDupCheck.next()) {
- dupRecords.push(gaDupCheck[val].toString());
- gs.print('Serial Number is-:'+ gaDupCheck[val].toString());
}
return dupRecords;
}
Thanks,
Amit
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-24-2017 05:08 AM
Hi Amit,
Instead of:
gaDupCheck.addAggregate('COUNT',val);
gaDupCheck.addAggregate('COUNT',val1);
gaDupCheck.addAggregate('COUNT',val2);
gaDupCheck.addAggregate('COUNT',val3);
gaDupCheck.addAggregate('COUNT',val4);
gaDupCheck.addAggregate('COUNT',val5);
gaDupCheck.addAggregate('COUNT',val6);
try
gaDupCheck.groupBy(val);
gaDupCheck.groupBy(val1);
gaDupCheck.groupBy(val2);
gaDupCheck.groupBy(val3);
gaDupCheck.groupBy(val4);
gaDupCheck.groupBy(val5);
gaDupCheck.groupBy(val6);
You have to group by this combination of columns, and not COUNT them. Please let me know if it works.