Improve MATCH() function speed

I am using a match() function to compare email addresses, looking for matchs of new emails to old. Old emails are in a data set of approx 40k and new emails total 16k. The process takes more than an hour. How might I improve on this performance? Is MATCH the best function to use?
Thanks
Kevin

Hi Kevin,
Do you need to know where the matching addresses are in the 'old' table, or would knowing whether an address in the 'new' list is matched one or more times in the 'old' list be sufficient?
If the latter, here's a method that may do the job. I've assumed the 'old' table ("Table 1") has the addresses listed in column C, the 'new' table (Table 2) has them in column D, and that there is one header row on each table
Add a column to the right of column D in the 'new' table. It will become Column E.
In E2, enter this formula:
=COUNTIF(Table 1::$C,D)
Copy cell E2, click on the column reference tab for column E to select the while column, then command-click on E1 to remove it from the selection.
Paste.
The formula will be pasted into every cell in Table 2::E.
Calculation time will depend on the number of rows in Table 1 and the number of addresses in Table 2.
Any row with a result in column E of 1 or more contains a duplicate (or more than one duplicate) of the address in the cell to its left. Addresses with zeroes to their right are unduplicated in the 'old' table.
Regards,
Barry

Similar Messages

  • I have power mac G4.  What do I do to reimage it to improve its functionality?

    I have a power mac G4.  How can I reimage it so that I can improve its functionality?

    We need more details to provide usable recommendations:
    What is the Mac OS version and G4 processor speed (both available from "About this Mac" in the Apple menu. "iOS 4.1" is not a computer operating system)
    How much RAM is installed? (Also from "About this Mac.")
    Are there specific programs  you use or tasks you perform that are slow? If so, please tell us which ones.
    How much free space is on your hard drive? (highlight your hard drive icon on the desktop and do command i from the keyboard. That shows the capacity of the drive and how much space is available)

  • Using Match function in FR Reports

    Hi,
    Can anyone pls. let me know how i can use Match function in FR ? I've a Report where i'm using 2 Grids. In one Grid1 i'm using Entity under page and ICP dimension as Column. In Grid2, i'm using ICP under page and would like to use Match function where the condition is, if i select ICP member from Page, it should show the corresponding Entities in Grid1
    Thanks,
    PVR

    I don't think what your trying to do is available "out of the box", we have used a workaround to do what you want:
    - include idescendants for the member but apply suppression on the member names that ended in rollup.
    (we were lucky in that the parent members were standardized to contain rollup as the description name).
    Cheers, Iain

  • How to improve this query speed ?....help me

    How to improve the query speed. Any hints can u suggest in the query or any correction. Here i am using sample tables for checking purpose, When i am trying with my original values, this type of query taking longer time to run
    select ename,sal,comm from emp where(comm is null and &status='ok') or (comm is not null and &status='failed');
    Thanx in advance
    prasanth a.s.

    What about
    select ename,sal,comm from emp where comm is null and &status='ok'
    union all
    select ename,sal,comm from emp where comm is not null and &status='failed';
    Regards
    Vaishnavi

  • MATCH function support

    Hi
    I am having problems with the match function
    Basically I am using it to find the first and last position of a value in a range.
    =MATCH(B1,D5:D30,0)
    works fine to return the first value, but
    =MATCH(B1,D5:D30,1)
    to find the last value only works in the spreadsheet, not in the SWF.
    Anyone got any ideas?

    Ok, just be aware that countif can be a hit on performance so I would recommend only using it on small data sets.
    As for who to request this, thats a good question, you could raise a ticket with SAP via your Account rep, but other than placing the issue on here, I really don't know
    I'll check version 5.2 and 5.3 this evening an post the results on here.  Which version are you using?
    Edit:
    Version 5.2.0 and 5.3.0 have the same behaviour.
    Edited by: Charles Davies on Feb 1, 2010 6:36 PM

  • I just subscribed to imatch while logged in to iTunes on a mac computer that belongs to someone else. (I was logged in to MY iTunes)  my iPhone will not turn on the MATCH function, saying I am no subscribed. I've powered off and on.  can anyone help?

    I just subscribed to imatch while logged in to iTunes on a mac computer that belongs to someone else. (I was logged in to MY iTunes)  my iPhone will not turn on the MATCH function, saying I am no subscribed. I've powered off and on.  can anyone help?

    Hi,
    I am having the same problem. Itunes reports that it's uploaded all the music etc.
    When I turn the match function on, it says "you are not currently subscribed to itunes match".
    I have restarted the phone and coputer, logged in & out several times to no avail.
    Any ideas or suggestions?

  • Regex matches function

    Hi
    I am trying to come up with a regex that I can use with the matches function to validate the user id I accept. The user id can contain alphabets, numbers and 3 special chars ".","-" and "#".
    The regex I came up with was: user_id.matches("[a-zA-Z\\d\\.\\-#]"). The string I am trying to match is 'user-1'. But this fails to match.
    I am not confident about the regex I am using to match my string to. Please let me know what I am doing wrong.
    Thanks

    I would use '+' rather than '*'; I doubt that an empty string would be considered a valid user ID. ^_^   String regex = "[a-zA-Z0-9#.-]+";

  • HT204406 help! cannot perform Itunes Match function

    I've owned a iMac for 2 years. Itunes match function used to perform correctly, until about a month ago. My softwares are up to date, including Lion I just installed successfully. Itunes version is the latest.
    When I try to perform Itunes match: Step 1 completes correctly, but NOT step 2. Step 2 stops, then loops back into step 1, and again and again ( loop..)
    Makes me a little sad...
    Anyone to help?

    never mind...just needed to restart the phone...seems to be working now...

  • @Match Function Usage

    Hi All,
    I am trying to use the @Match function within Datacopy but it gives me an error. Here is my code. Any help is appreciated.
    FIX (No_GEO, Plan, Functional)
    Datacopy @Match(Entity, "CC_????_S") TO @Match(Entity, "CC_????");
    ENDFIX

    A syntax issue -- you're not going to be able to use the @MATCH function on the left hand side of the equal side.
    Here's the formula you need:
    FIX(everything you listed in all of your FIXes bar Plan and Entity)
    FIX(@MATCH("Entity", "CC_????"))
    "Plan" = @MEMBER(@CONCATENATE(@NAME(@CURRMBR("Entity")), "_S")) ;
    ENDFIX
    ENDFIX
    This formula:
    1) Selects the current member in the Entity dimension through @CURRMBR
    2) Makes #1 a text string with @NAME
    3) Concatenates the _S
    4) Turns #3 into a member name with @MEMBER
    5) Assigns the value to the Plan Scenario
    The FIX around the members is so that just the CC_???? members get impacted.
    Regards,
    Cameron Lackpour

  • Pattern Matching functions in DP Macro

    Folks,
    Can anyone tell me if there are any pattern matching functions in DP Macros? Here is the requirement:
    If the time bucket is a quarter, then hide some rows. If the time bucket is  a month or something finer, then show the same row. Assume that all the time buckets in the data view will be the same (no telescoping buckets profile)
    So, suppose that I use BUCKET_DESCRIPTION and get the name of the bucket. If it is Q.* (using pattern matching lingo here), then I would like to set the row attributes accordingly. If it is M.* then set the row attributes to visible.
    Can you please throw some light on this? Would you do it some other way?
    Thanks,
    Satish

    Hi,
    You may try with the macro function BUCKET_DAYS(). This will find number of days in a given bucket.
    Then you can write condition, If bucket days is more than 1 and less than 7, then it is weekly.
    If bucket days is more than 7, then it is monthly.
    Please see if it is helpful for you.
    Regards,
    Manimaran M.

  • How can i improve this function?i need your help....

    Hi guys,
    i'm a pratical question for you.
    I've developed a jas application that reads a txt file and convert it
    into an array of byte,fro putting it into a blob field of a db mysql.
    With big file i go in heap size memory!
    I want to improve my function that makes it,but i'm a bit
    inexpert...can you help me?
    I have a file so made...
    Each line has the same number of value,but i know this number only when
    i read the file
    string1 string2 string3................
    stringx double double......(ever double)
    stringy double double......(ever double)
    and other lines equals to them from the second.
    Only the first line has only strings.
    I have read this file using a string array to read the first line and
    an arraylist of "Riga" object to read the others lines.....i've used a
    vector to store partial data from lines reading and at the end i've
    created an array of byte in which i copy the vector.
    Can you help me improving my code?
    The file has about 50000 rows......so i go in heap memory size...
    i know my code isn't too optimized.....can you help me?Please,i'm a
    newbie,help me with code if possible...
    When i encode the objects i've created into an array of byte i use a
    whitespace to separe different value and a ; to separe different lines.
    I've done it because in a second moment i've to read the array of byte.
    Thanks...this is my code
    public class MyBean {
            private UploadedFile myFile;
            private ArrayList rows = new ArrayList();
        private List lines = new ArrayList();
        public MyBean(){
        public List getLines(){
            return lines;
        public void setLines(List lines){
            this.lines=lines;
    public boolean insRighe(Riga nuovo){
               return rows.add(nuovo);
        public UploadedFile getMyFile() {
            return myFile;
        public void setMyFile(UploadedFile myFile) {
            this.myFile = myFile;
        public ArrayList getRows() {
                    return rows;
            public void setRows(ArrayList rows) {
                    this.rows = rows;
        public String carica() throws IOException {
            Riga r;
            Double val[];
            Head h;
            int col=0;
            int row=0;
            byte middlerow=' ';
            byte endrow=';';
            byte[] data=null;
            Vector temp=new Vector();
            int numberOfNumericColumns=0;
            String geneid=null;
            String g=null;
            String[]intest=null;
            BufferedReader br = new BufferedReader(new
    InputStreamReader(myFile.getInputStream()));
                    String line = null;
            while ((line = br.readLine()) != null) {
                    line = line.replace (',', '.');
                    StringTokenizer st = new StringTokenizer(line);
                    numberOfNumericColumns = (st.countTokens()-1);
                    col=(numberOfNumericColumns+1);
                //se siamo nella prima riga(contatore segna 0)
                    if(row==0){
                            intest=new String[col];
                            int j=0;
                            while(st.hasMoreTokens()){
                                    intest[j]=(st.nextToken().trim());
                                    j++;
                            h=new Head(intest);//crei l'oggetto head
                            String []qa=h.getHvalues();
                            String asd="";
                        for(int i=0;i<=qa.length-1;i++){
                            asd=asd.concat(qa[i]+" ");
                        System.out.println("head "+asd);//stampo contenuto
    dell' head
                        row=1;
                    }//fine if
                    else
                            Double[] values=new Double[numberOfNumericColumns];
                        int z=0;
                        geneid=st.nextToken();
                        while (st.hasMoreTokens()) {
                            String app=st.nextToken();
                            values[z]=Double.valueOf(app);
                            z++;
                        r=new Riga(geneid,values); //crei l'oggetto riga
                        System.out.println("riga");
                        System.out.println(r.getgeneid());
                        values=r.getvalues();
                        for(int e=0;e<values.length;e++){
                            System.out.println(values[e]);
                        insRighe(r); //aggiungi
                    row++;
                    int i = 0;
                    while (i < intest.length) {
                            byte[] bytesnew = intest.getBytes();
    // temp.addAll(bytesnew);
    // memorizza in byte un elemento del vettore alla volta
    for (byte b : bytesnew)
    temp.add(new Byte(b)); // provare Byte
    // temp.addElement(intest[i].getBytes());
    temp.addElement(Byte.valueOf(middlerow));
    i++;
    temp.addElement(Byte.valueOf(endrow));
    System.out.println("Intestazione convertita in byte");
    for (int l = 0; l < rows.size(); l++) {
    r = (Riga) rows.get(l);
    g = r.getgeneid();
    // temp.addElement(g.getBytes());
    byte[] byte2 = g.getBytes();
    for (byte c : byte2)
    temp.add(new Byte(c));
    temp.addElement(Byte.valueOf(middlerow));
    val = r.getvalues();
    byte[] tempByte1;
    for (int e = 0; e <= val.length - 1; e++) {
    // Returns a string representation of the double argument.
    tempByte1 = Double.toString(val[e]).getBytes();
    for (int j = 0; j < tempByte1.length; j++) {
    temp.addElement(Byte.valueOf(tempByte1[j]));
    temp.addElement(Byte.valueOf(middlerow));
    temp.addElement(Byte.valueOf(endrow));
    data = new byte[temp.size()];
    for (int t = 0; t < temp.size(); t++) {
    data[t] = (((Byte) temp.elementAt(t)).byteValue());
    return data;
    public class Riga{
         private String geneid=null;
         private Double[] values=null;
         public Riga(String idGene,Double[] x ) {
    this.geneid=idGene;
    this.values=x;
         public String getgeneid(){
              return this.geneid;
         public void setgeneid(String idGene){
              this.geneid=idGene;
         public Double[] getvalues(){
              return this.values;
         public void setvalues(Double[] x){
              this.values=x;
    Message was edited by:
    giubat

    Maybe I didn't understand you, but why are you putting a file with 50000 rows as one single BLOB into a DB? Don't you think it's time for a new table?

  • Regular exression for matching function declarations or calls

    Hi guys,
    I used a regular expression like \\w + (\\s*) \\( .*\\) (\\s*) [\\{;] to match function
    declarations.This regular expression works fine for all the declarations of the form init_queue(TREE **NODE) {  and even for declarations of the form
    init_queue (TREE **NODE)
    But the problem occurs when i have a declaration of the form
    init_queue(TREE **NODE ,
    int size ) {
    when i have a declaration of this form my regular expression doesnt parse function names.The regular expression . (DOT) means it recognizes anything except for line terminators.So i used the DOTALL option in pattern matching so that .(DOT) matches even line terminators.But using this has a negative effect like i am not able to match declarations of the form
    init_queue(TREE **NODE) { 
    can anyone help me out in solving this
    Thank you,
    Akash

    multipost: http://forum.java.sun.com/thread.jspa?threadID=5168705

  • How to improve the response speed

    Dear Consultants,
    In BI 7.0 EP Environment,  displaying 40000 detailed records wasted  3 minutes, this speed is slowly.
    How to improve the response speed ?
    Please give me some proposals and methods to solve this question.
    Thanks a lot & Best Regards
    Ricky

    Hello,
    3min. is not so bad for 40000 rows of data. Firstly you can analyze where the time spent is it olap or DB. you can use RSRT for analysis.
    Then,
    1. Create aggregates
    2. Use caching and precalculation
    3. check 'Use Selection of Structure Elements' from properties of query in RSRT
    4. Remove unnecessary calculations from query
    5. remove unnecessary rows. try to make them free characteristics.
    6. If there is unused data in infocube, you can archive this data.
    regards,

  • Text crawl speed: how to match the speeds of many crawls?

    I have 20 bits of text of different lengths (from 20 to 60 words) and I need to make a crawl of each. I want all of the text crawls to move at the same speed right to left, but it appears that I have to lengthen and shorten clips by trial and error to match the speeds. Is this right? Is there an easier way to regulate the speed?
    I'm using Final Cut HD 4.5. I have the BorisFX plug-in.
    Thanks.

    Just do some simple mathematics instead of manually adjusting the actual clip's length on the timeline.
    An example.
    Control click on the text clip with 20 words and check duration. Lets assume it is 8 seconds. Then control click a clip with about 40 words <click>change duration to 12 seconds.
    It should give you the same or very similar speed.
    Rely on numbers rather than guessing clips lengths.
    G.
    PS. Just reading now Zak's post, didn't remember Andy's plugin(Sorry Andy) but let us know if that solves your problem.

  • Will Apple please improve the functionality of their Audiobooks? I did, afterall, spend money on them...

    Apple needs to improve the functionality of their audiobooks. I just recently purchased a $40 bible audiobook. I am listening to it through iOS 5.0.1 on an iPhone 4 and the interface is extremely limited. It's not at all intuitive. There isn't an option for book marking, which I would very much appreciate. I just think they could do a lot to improve the audiobook experience. Especially since it is one of their products...

    Apple does not make the audiobooks.  They only sell them.
    Yu can leave feedback for Apple at : http:www.apple.com/feedback

Maybe you are looking for

  • Do I need to do more than make a Custom File Info Panel

    I downloaded the spec for XMP Custom Panels and have it partially working in Photoshop CS--see the code below.<br /><br />The problem is with namespaces.  I want to put my info into a danser namespace in JPEGs. <br />1. The code below partially works

  • Takes a while to play sound via audio interface on iMac

    I purchased iMac along with Focusrite Scarlett 6i6 USB audio interface and started having following problems from the beginning. When I play video/music on itunes, logic or whatever apps that plays sound, it takes a while(about 20 sec) to play sounds

  • More info needed on BC Dynamic menus and using CSS with them

    Hi all, The BC Gurus tutorial on Dynamic Menus and how to style them with CSS made no sense to me, unfortunately. The presentation was too rushed and the screen too small to see what was happening. In a previous question I found out how to apply CSS

  • Mail 6.0 does not display embedded images

    This was true in the prior version as well, but now I'm about to give up on the product. While HTML emails do display images ("Display remote images in HTML messages" is checked in preferences), those with embedded images do not.  Instead, I get a se

  • New Tabs do not open properly

    Firefox 3.6.13 will not open new tabs with File New Tab, Ctrl+T or the '+' tab to the right of others. Only right click - 'open link in new tab' works. What's wrong?