❄ Snowflake Data Matching Wizard
Connect directly to your Snowflake data warehouse and find matching clusters, no file exports needed
The Snowflake Data Matching Wizard is a browser-based, step-by-step tool that connects directly to your Snowflake data warehouse and uses Interzoid's AI-powered similarity algorithms to identify and cluster matching records within your tables. Whether you need to deduplicate company names, match individual names, or find address variations, the wizard walks you through the entire process: connecting to Snowflake, selecting a table and columns, estimating the cost, running the match, and reviewing the results in a sortable, searchable spreadsheet view.
The wizard supports 17 languages and guides you through a cascading connection flow: authenticate with Snowflake, then select from your available warehouses, databases, schemas, and tables using dropdown menus populated directly from your Snowflake account. No need to manually look up or type database object names.
1Prerequisites
Before using the Snowflake Data Matching Wizard, you will need:
- An Interzoid API Key: Register for an account and obtain your unique API license key. This key authenticates your requests and tracks usage credits.
- A Snowflake Account and User: Your Snowflake account identifier (for example
MYORG-MYACCOUNTor the legacy locator formxy12345.us-west-2) and a Snowflake user with read access to the tables you want to match against. A dedicated service user is recommended; see Authentication Options below for how the user signs in. - Available Credits: Each record processed consumes one API credit. The wizard counts the rows in your table and shows an estimate before you run, so you can confirm your balance covers the job.
As of October 2026, Snowflake requires a second factor for people signing in with a password and no longer allows passwords at all for service users. An application such as this wizard cannot answer an MFA prompt, so a plain username and password that worked previously will now be rejected. The wizard offers two Snowflake-approved alternatives, key-pair authentication and programmatic access tokens, and can set up key-pair authentication for you in about a minute. Details are in step 4.
2Launch the Wizard and Enter Your API Key
Open the Snowflake Data Matching Wizard in your browser. Before beginning, enter your Interzoid API key in the top-right area of the header bar. Your key will be saved in your browser for future sessions.
- API Key Field: Type or paste your API key into the input field in the header. Click the lock/eye icon to toggle visibility. The API Key label links to your account page.
- Check Credits: Click the Credits button to see your current credit balance. The balance is also used for the cost estimate on the Run tab. Approved accounts may run a negative balance: the wizard shows a negative balance in amber with a note, not as an error, and the job proceeds with usage beyond the balance billed to the account.
- Language Selection: Click the language dropdown in the navigation bar to switch between any of the 17 supported languages. The entire wizard interface will update immediately. You can also set the language via URL parameter:
?lang=frfor French,?lang=jafor Japanese, and so on. - Resources & Support: The Resources menu links to this guide, a tutorial video, a sample match report, Interzoid Central Command, and support.
Once your API key is entered, click Get Started on the introduction screen to begin the wizard.
3Select a Matching Function
The wizard presents six matching functions. Choose the one that matches your data and use case. Each card shows a description, the credit cost per record, how many input columns the function needs, and the column parameters it requires. The function you used most recently is marked Last used and pre-selected the next time you open the wizard.
Single-Column Functions
These functions analyze one column of data to find matches:
| Function | Use Case | Column Required |
|---|---|---|
| Company Name Matching | Match variations like "IBM", "I.B.M. Corp", "International Business Machines" | Company Name |
| Individual Name Matching | Match "James Johnston", "Jim Johnston", "J. Johnston" as the same person | Full Name |
| Street Address Matching | Match "400 E Broadway St" with "400 East Broadway Street" | Address |
Combination Functions
These functions use two columns together for higher matching precision:
| Function | Use Case | Columns Required |
|---|---|---|
| Company + Address | Higher precision matching using both company name and street address | Company Name, Address |
| Company + Full Name | Contact deduplication using company and individual name | Company Name, Full Name |
| Address + Full Name | Person-at-address matching using address and individual name | Address, Full Name |
Click on the card for your chosen function (or select it with the keyboard), then click Next to proceed.
4Connect to Snowflake
Enter your account identifier and username, choose how to authenticate, click Connect, and then use the cascading dropdown menus to navigate to your data. The wizard connects to Snowflake in real time and presents the available objects at each level.
Connection Flow
- Account Identifier: Enter your Snowflake account identifier. Both the organization form (
MYORG-MYACCOUNT) and the legacy locator form (xy12345.us-west-2) are accepted, as is the full host name (myorg-myaccount.snowflakecomputing.com), including private link hosts. You can find the identifier under your account menu in Snowsight. - Username: The Snowflake user the wizard will sign in as. Your account identifier and username are remembered in your browser.
Authentication Options
The wizard offers two ways for that user to sign in. Pick one with the two cards under the username field.
🔑 Key-pair authentication Recommended
An RSA private key held by you, with the matching public key registered on your Snowflake user. This is Snowflake's recommended method for applications and service users: nothing expires, no network policy is required, and the private key never leaves your side.
The wizard can generate the key pair for you in the browser. Setup takes one copied statement in Snowflake.
🔒 Password or access token
A programmatic access token (PAT) generated in Snowsight, pasted in place of a password. Quick to try, but tokens expire (15 days by default) and the user must be covered by a network policy, or by an authentication policy that waives that requirement.
A plain password still works only where Snowflake still permits it, which as of October 2026 is essentially never for application sign-ins.
Setting Up Key-Pair Authentication (About One Minute)
With Key-pair authentication selected, the Generate a key pair here tab is shown by default:
- Click Generate key pair. The wizard creates a 2048-bit RSA key pair entirely inside your browser.
- The wizard shows a ready-to-run statement of the form
ALTER USER <your user> SET RSA_PUBLIC_KEY = '...';with your public key filled in. Click Copy statement. - Paste the statement into a Snowsight worksheet and run it, using a role that can alter the user (for example
ACCOUNTADMINor the user's owner). - Back in the wizard, click Connect.
That is the whole setup. The wizard also shows the key's fingerprint, which matches the RSA_PUBLIC_KEY_FP value from DESCRIBE USER in Snowflake if you ever need to confirm which key is registered.
- Keep this key in this browser: Checked by default, so you can reconnect later without registering a new key. Uncheck it to keep the key in memory only for this session, or click Forget this key to remove it.
- Download private key (.p8): Saves the private key as a file so you can use the same key in other tools (SnowSQL, Python connectors, BI tools) or on another computer.
- Generate a new pair: Replaces the current key. Remember to register the new public key in Snowflake before connecting.
Using an Existing Key
If you already have an RSA key registered on the Snowflake user, switch to the I already have a key tab and either paste the PEM text or click Load key file to read a .p8 or .pem file from disk. Unencrypted PKCS#8 keys, passphrase-protected PKCS#8 keys (enter the passphrase in the field below the key), and legacy PKCS#1 keys are all accepted. For instructions on generating keys with OpenSSL, see Snowflake's key-pair authentication guide.
Using a Programmatic Access Token
Select Password or access token, generate a token in Snowsight (open the user under Governance & security > Users & roles and click Generate new token in the Programmatic access tokens section), and paste the token into the password field. Snowflake requires the user to be subject to a network policy before a token can be generated or used; an account administrator can waive that with an authentication policy:
CREATE AUTHENTICATION POLICY pat_no_netpolicy
PAT_POLICY = (NETWORK_POLICY_EVALUATION = ENFORCED_NOT_REQUIRED);
ALTER USER my_user SET AUTHENTICATION POLICY pat_no_netpolicy;
Recommended Snowflake Setup: a Dedicated Service User
For ongoing use, create a read-only service user for the wizard rather than registering a key on a person's account. Service users are exactly what key-pair authentication is designed for, and access can be revoked at any time by dropping the user or revoking the role:
CREATE ROLE matching_reader;
GRANT USAGE ON WAREHOUSE compute_wh TO ROLE matching_reader;
GRANT USAGE ON DATABASE my_db TO ROLE matching_reader;
GRANT USAGE ON SCHEMA my_db.public TO ROLE matching_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA my_db.public TO ROLE matching_reader;
CREATE USER svc_matching TYPE = SERVICE DEFAULT_ROLE = matching_reader;
GRANT ROLE matching_reader TO USER svc_matching;
-- Then paste the ALTER USER ... SET RSA_PUBLIC_KEY statement the wizard generates,
-- with svc_matching as the user name.
A Reader Account is a Snowflake feature that lets you share selected data with an external party in a fully isolated account that you control.
- Your Snowflake admin creates a Reader Account dedicated to Interzoid.
- You share only the specific databases, schemas, tables, or views you want Interzoid to read.
- You create a service user and role inside that Reader Account with read-only permissions, and register the wizard's public key on that user.
- You enter the Reader Account's identifier and that user in the wizard.
You decide exactly what to share, and you can revoke access at any time by disabling the user, revoking the role, or unsharing the data.
After Connecting
- Connect Button: Click Connect to sign in. If the connection succeeds, the wizard loads your available warehouses into a dropdown menu. If it fails, the message says which part went wrong: a public key that does not match the registered one, a user that requires MFA, a service user that was given a password, a network policy that blocks the connection, or an account identifier that could not be found.
- Warehouse: Select your compute warehouse. Once selected, the wizard automatically loads the list of available databases.
- Database: Select the database containing the table you want to match against. The wizard then loads the available schemas within that database.
- Schema: Select the schema (for example
PUBLIC) that contains your target table.
Once you have selected a warehouse, database, and schema, click Next to proceed to table and column selection. To connect to a different account or user, click Disconnect.
5Select Table, Columns, and Options
Choose the table to match against, confirm which columns hold the data to match on, and decide what the output should contain.
Table Selection
The wizard presents a dropdown of all tables and views in the schema you selected. Choosing one does three things at once: it loads the column names, fetches the first five rows as a preview, and counts the rows so the Run tab can show a cost estimate. The row count appears directly under the table dropdown.
Match Columns
For each matching parameter required by your chosen function, the wizard looks at the column names and pre-selects the most likely one (a column named COMPANY_NAME for Company Name, STREET_ADDRESS for Address, and so on). Pre-selected columns are marked, and you can change any of them from the dropdown. Under each selection the wizard shows what the first record will actually send to the matching engine, so a wrong guess is obvious before you run.
- Single-column functions: Select one column for the matching parameter.
- Combination functions: Select two different columns, one for each parameter. The two columns must be different.
Table Preview
Below the column selectors, a preview of the first rows of the table highlights the columns you have mapped, so you can see the data in context. If a preview cannot be loaded for a table, the mapping still works from the column names.
Output Columns
Use the checkboxes to choose which columns from the table appear in the match report. The match columns are always included and show as checked and locked, so you only need to tick the additional columns you want. Select all and Select none buttons are available for wide tables.
Output Options
These settings are remembered in your browser across sessions.
- Include header row in output: When enabled (default), the first line of the output lists the column names, with
simkeyas the last name when similarity keys are shown. The spreadsheet view uses this row to label its columns. - Show similarity keys in output: When enabled (default), each output record includes the generated similarity key as the last column. Records with the same key are matches. Disable this for clean output with only the selected data columns (the spreadsheet view can then no longer group matched records).
- Show matching records only: When enabled (default), only records that have at least one other matching record are returned, grouped into clusters. Disable it to see every record in the table after processing.
- Keep original record order: Available only when all records are returned. When enabled, output row 1 is table row 1 and so on, which is what you want if you plan to load the similarity keys back alongside the original data. When disabled, similar records are sorted together by similarity key.
Click Next when your selections and options are configured.
6Review and Run
The final screen shows a summary of all your selections: matching function, Snowflake account, user and authentication method, warehouse, database, schema, table, column assignments, and output options. Below the summary are the number of records to process and the estimated cost in credits, with a banner comparing the estimate to your current balance:
- Green: your balance covers the run.
- Amber: your balance is below the estimate.
- Blue: your balance is negative. Approved accounts may run a negative balance; the job proceeds and usage beyond the balance is billed to the account.
- Grey: the balance has not been checked yet; click Check Credits.
Click the green Run Match button to start processing. The wizard will:
- Validate your API key and check your account's credit position for the job.
- Connect to Snowflake and read the selected columns from your table.
- Process each record through the selected matching algorithm using concurrent workers for performance.
- Generate the match report with records sorted and grouped into clusters of matching entries.
A progress indicator is shown while the job runs. Processing time depends on the number of records: most tables complete within seconds, while very large tables (up to 500,000 records) may take a minute or more. If a run fails, the reason (a rejected job size, a credit limit, a dropped connection) is shown in a red banner above the results area.
7Review the Results
When the run completes, a summary line reports how many records came back and, when similarity keys are included, how many match groups they form. The results panel below it shows the first 1,000 rows of the output; for larger results a note says how many rows there are in total, and the Spreadsheet View, Open as Text File, and Save Results buttons always work on the complete output.
Spreadsheet View
Click Spreadsheet View to open the results in a grid designed for reviewing match reports:
- Grouping: matched records are tinted in alternating shades per similarity group and boxed, so each cluster reads as a unit. When all records are returned, records with no match partner stay plain.
- Search: filters every row by any cell value.
- Sort: click a column header to sort ascending, again for descending, and a third time to restore the original order. Sorting by the similarity key column regroups the records.
- Columns: drag a header edge to resize, double-click it to fit the content, or use the fit-all button. The key column is highlighted.
- Paging and full screen: large results are shown 500 rows per page (search and sort still cover every row), and the grid can expand to fill the window. Press Escape to close it.
Example Output
For a company name match on a Snowflake table with columns COMPANY, ADDRESS, CITY, STATE, with similarity keys and the header row enabled:
COMPANY,ADDRESS,CITY,STATE,simkey
IBM Corporation,1 New Orchard Rd,Armonk,NY,d477E1d7sG6dja3hDNsk9P
I.B.M. Corp,1 New Orchard Road,Armonk,NY,d477E1d7sG6dja3hDNsk9P
Microsoft Inc.,1 Microsoft Way,Redmond,WA,k8Rp2mNx4wQjL9vB3cYh7T
Microsoft Corporation,One Microsoft Way,Redmond,WA,k8Rp2mNx4wQjL9vB3cYh7T
MSFT Corp,1 Microsoft Way,Redmond,WA,k8Rp2mNx4wQjL9vB3cYh7T
In this example, the first cluster contains two records identified as variations of IBM, and the second cluster contains three records identified as variations of Microsoft. The last column in each row is the similarity key; all records sharing the same key are considered matches.
8Save Your Results
Click Save Results above the results panel (or in the spreadsheet view) to download the complete match report as a CSV file. On supported browsers, a save dialog lets you choose the file name and location; on other browsers, the file downloads automatically. Open as Text File opens the complete output in a new browser tab instead.
The saved file is clean, delimited text that can be imported directly into spreadsheets, databases, or other data processing tools for further analysis.
9API Access for Developers
The Snowflake Data Matching Wizard is powered by a REST API that can also be called directly from your own applications, scripts, or data pipelines. The /match and /discover endpoints accept the same parameters either as a GET query string or, recommended, as a JSON body in a POST request. Use POST for key-pair authentication, since a private key does not belong in a URL.
Example: Match with Key-Pair Authentication (POST)
# Build the JSON body with the private key read from a file (jq keeps the newlines intact)
$ jq -n --arg key "$(cat rsa_key.p8)" '{
driver: "snowflake",
db_host: "MYORG-MYACCOUNT",
db_user: "SVC_MATCHING",
auth_method: "keypair",
private_key: $key,
db_warehouse: "COMPUTE_WH",
db_database: "MY_DB",
db_schema: "PUBLIC",
table: "CUSTOMERS",
columns: "ID,COMPANY,ADDRESS,CITY,STATE",
function: "company-name-only",
company_column_name: "COMPANY",
apikey: "YOUR_API_KEY",
showkeys: "true",
matchesonly: "true",
includeheaders: "true"
}' > body.json
$ curl -X POST "https://match.interzoid.com/match" \
-H "Content-Type: application/json" \
-d @body.json
Example: Match with a Programmatic Access Token (GET)
$ curl "https://match.interzoid.com/match?\
driver=snowflake&\
db_host=MYORG-MYACCOUNT&\
db_user=SVC_MATCHING&\
db_password=YOUR_PROGRAMMATIC_ACCESS_TOKEN&\
db_database=MY_DB&\
db_schema=PUBLIC&\
db_warehouse=COMPUTE_WH&\
table=CUSTOMERS&\
columns=ID,COMPANY,ADDRESS,CITY,STATE&\
function=company-name-only&\
company_column_name=COMPANY&\
apikey=YOUR_API_KEY&\
showkeys=true&\
matchesonly=true&\
includeheaders=true"
Snowflake Match API Parameters
| Parameter | Required | Description |
|---|---|---|
driver |
Yes | Set to snowflake |
db_host |
Yes | Snowflake account identifier (MYORG-MYACCOUNT or xy12345.us-west-2) or the full *.snowflakecomputing.com host name |
db_user |
Yes | Snowflake username |
auth_method |
No | password (default) or keypair |
db_password |
With password |
A programmatic access token, or a password where Snowflake still permits one |
private_key |
With keypair |
The PEM text of the RSA private key registered on the user (PKCS#8, encrypted PKCS#8, or PKCS#1). Send in a POST body. |
private_key_passphrase |
No | Passphrase for an encrypted private key |
db_warehouse |
Yes | Snowflake compute warehouse name |
db_database |
Yes | Snowflake database name |
db_schema |
Yes | Snowflake schema name (for example PUBLIC) |
db_role |
No | Role to use for the session, when the user's default role is not the right one |
table |
Yes | Name of the table or view to read from |
columns |
Yes | Comma-separated list of column names to include in the output |
function |
Yes | One of: company-name-only, fullname-only, address-only, company-and-address, company-and-fullname, address-and-fullname |
apikey |
Yes | Your Interzoid API license key |
company_column_name |
When applicable | Name of the column containing company names |
fullname_column_name |
When applicable | Name of the column containing individual names |
address_column_name |
When applicable | Name of the column containing street addresses |
showkeys |
No | true (default) or false: append the similarity key to each output record |
matchesonly |
No | true (default) or false: return only matching clusters, or every record |
includeheaders |
No | true (default) or false: write a header row of column names as the first line |
preserveorder |
No | false (default) or true: keep table order instead of sorting by similarity key. Applies only when matchesonly=false. |
Discovery API
The wizard's cascading dropdown menus, table preview, and row count are powered by a /discover endpoint that you can also call directly. It takes the same connection and authentication parameters as /match plus a resource:
# List warehouses (also validates the credentials). Shown with a token; for key-pair auth,
# POST a JSON body with auth_method and private_key exactly as in the /match example.
$ curl "https://match.interzoid.com/discover?driver=snowflake&db_host=MYORG-MYACCOUNT&db_user=SVC_MATCHING&db_password=TOKEN&resource=warehouses"
# List databases within a warehouse
$ curl "https://match.interzoid.com/discover?...&db_warehouse=COMPUTE_WH&resource=databases"
# List schemas within a database
$ curl "https://match.interzoid.com/discover?...&db_warehouse=COMPUTE_WH&db_database=MY_DB&resource=schemas"
# List tables within a schema
$ curl "https://match.interzoid.com/discover?...&db_database=MY_DB&db_schema=PUBLIC&resource=tables"
# List columns within a table
$ curl "https://match.interzoid.com/discover?...&db_schema=PUBLIC&table=CUSTOMERS&resource=columns"
# Count the rows in a table (for a cost estimate)
$ curl "https://match.interzoid.com/discover?...&db_schema=PUBLIC&table=CUSTOMERS&resource=rowcount"
# First five rows of a table, as column names plus rows
$ curl "https://match.interzoid.com/discover?...&db_schema=PUBLIC&table=CUSTOMERS&resource=preview"
The list resources and rowcount return a JSON object with the names (or the count) in items; preview adds a rows array:
{"resource":"warehouses","items":["COMPUTE_WH","ANALYTICS_WH"]}
{"resource":"rowcount","items":["12480"]}
{"resource":"preview","items":["ID","COMPANY","CITY"],"rows":[["1","IBM Corporation","Armonk"],["2","I.B.M. Corp","Armonk"]]}
The /match API returns plain text output identical to what the wizard displays, making it suitable for piping into other tools or storing directly as a file.
The Snowflake Data Matching Wizard makes it easy to discover hidden duplicates and matching records directly within your Snowflake data warehouse. Whether you use it interactively through the browser-based wizard or programmatically through the API, it delivers clean, actionable match reports that help you improve the quality, consistency, and value of your data assets, without ever exporting a file. If you have any questions or need assistance, don't hesitate to reach out to our support team.