Help using Base SAS procedures

Fuzzy Mapping to find data from multiple datasets

Reply
New Contributor
Posts: 3

Fuzzy Mapping to find data from multiple datasets

I have a file with multiple columns out of which A has the primary index. For this primary index, I need to find customer ID and later multiple values from datasets like address, name, city, zip etc.

The problem is no dataset has all data for a particular 'A' in a single set. Can you guys help me to find all the values for each 'A' using fuzzy logic.

Super User
Posts: 10,483

Re: Fuzzy Mapping to find data from multiple datasets

You really aren't looking for values of A, you are looking to join up the data associated with A. And if you value A is a primary index there should be no fuzzy logic needed.

It helps to provide at least variable names and hopefully some example data.

A basic stub is something like:

proc sql;

     create combined data as

     select first.*, second.*

     from first join second on first.a=second.a;

quit;

This code will complain about variables, at least A, being duplicated. If there are duplicate values for A in either data set you will get an output record for each match: 3 values in First and 2 in Second yield 6 records.

You can use first.varname1, second.varname3 to specify the exact variables you want.

New Contributor
Posts: 3

Re: Fuzzy Mapping to find data from multiple datasets

Ballardw,

Thanks for your response. Being more precise, I am not sure of what table has these data. I want run a loop to read all tables( in particular database) with has specific columns to match 'Primary Index'

Super User
Posts: 10,483

Re: Fuzzy Mapping to find data from multiple datasets

You can find all of the data sets with a specified variable using the dictionary tables

proc sql;

     select name, libname, memname

     from dictionary.columns

     where upcase(name)="YOURINDEXVARIABLENAMEGOESHERE"

   /* if you know the name of the library then add this below, the libname should be upper case */

     and libname='MYLIB'

     ;

quit;

New Contributor
Posts: 3

Re: Fuzzy Mapping to find data from multiple datasets

To make the process clear.
1. Need to check all the tables in a particular database that has particular columns ( Name, Address, Zip,....... for each primary index)

2. if a table has such columns, need to map them with primary index and form a new table

3. need a automated way of checking all the folders and looping them

Note: a single table will not have all the required data. Need to combine data for multiple table to get data for particular primary index.

Super User
Posts: 17,784

Re: Fuzzy Mapping to find data from multiple datasets

Look at the dictionary tables, specifically the COLUMN table. 

Super User
Posts: 10,483

Re: Fuzzy Mapping to find data from multiple datasets

Are these tables SAS datasets? If so information does exist in dictionary.columns: this SAS built table, view actually, contains information such as name, data type, format, informat, length, label about every variable in every dataset the SAS install currently sees.

Do you know the names of the variables that make up your primary index? The example code I posted will find them using  where upcase(name) IN ("NAME","ADDRESS","ZIP")

or what ever you have named them. If you do not know the names of the variables but they have labels that are descriptive you may be able to find them looking in the label field of that dictionary table.

Super User
Posts: 17,784

Re: Fuzzy Mapping to find data from multiple datasets

That may not work depending on your data structure, just something to keep in mind.

What if you have a field that is PrimaryIndex>SecondaryIndex>Data Value

I think it's snowflake vs star schema.

Ask a Question
Discussion stats
  • 7 replies
  • 429 views
  • 3 likes
  • 3 in conversation