BookmarkSubscribeRSS Feed

What are MATables in SAS Marketing Automation and how do I manage them?

Started ‎12-15-2015 by
Modified ‎12-15-2015 by
Views 4,742

MATables are SAS datasets used by Customer Intelligence to represent the population (customers, households, etc.) of a node in a diagram. For example, if the count on a select node selecting customers is 3,456 then it will have an associated MATable containing 3,456 rows, each row containing one customer ID. These MATables are retained after the count is completed so that later executions of downstream nodes won't have to recreate the node population. This helps performance but can lead to exports being created using out of date information if export nodes and communication execution are used unwisely.


When are MATables created and deleted?

Each time you execute a node in a campaign, whether by scheduled execution, interactive execution or using the nodes' "run" or "update counts" action, a new MATable is created for that node. If the node had a count prior to this execution, then an MATable was associated with that node and is replaced by the new MATable. MATables that are no longer associated with a node are deleted when the campaign is closed. If you saved the campaign prior to closing it, then the old MATables are deleted.

But if you do not save the campaign prior to closing it, the new MATables will be deleted (since the campaign is reverting to its prior counts/node populations). MATables associated with nodes in a campaign are also deleted when the campaign is deleted. While there are some exceptions, in general a saved/closed campaign will have one MATable associated with it for each node in the campaign that has a count on the node.


How can I reduce the number of MATables being saved?

  • Clear counts on campaigns before saving them unless those counts/populations will still be correct when the campaign is next used (i.e. the underlying data will not have changed).
  • Delete old campaigns that are no longer being used (or at least open them, clear counts and save them if an archival copy of the campaign is needed).

When are new tables created to replace old ones?

  • It is important to remember that an MATable represents a node population at a point in time. If an existing MATable that was created a month ago is used instead of replaced by a new one, then the population as identified a month ago is used (i.e. does not reflect changes in the underlying data since the last execution.)
  • MATables are created only when a node is explicitly run or when a node does not already have a count/MATable and a node below it in the diagram is explicitly run.
  • Using the 'run' or 'update counts' feature on a node or nodes creates new MATables only for the node(s) selected.
  • SAS Marketing Automation supports several use scenarios so you have several options to reuse MATables versus replacing them with new versions:
    • One usage scenario is designing a new campaign. You often update counts on a newly-added node to see the size of the population at that point in their diagram. In this scenario, you probably don't want to rerun all nodes upstream from the node just to get an idea of the population of the newly added node.
    • Another scenario is building up a campaign interactively to produce a set of exports to be used immediately. For example, you build quick campaigns to produce timely emails to customers after some event, building the campaign as the event progresses, fine-tuning each node to achieve the desired size of contact group, and then you want to execute a communication to that group without having to rerun the nodes on which they have already created counts/MATables. This use scenario is achievable by executing a communication with the "use most recent data when executing communications" options deselected.
    • If executing communications, either via the scheduler or interactively, you may instead wish to recreate node populations at execution time to ensure that all changes to the underlying data since the last execution are reflected in the exports produced. This is accomplished by executing the communication with the "use most recent data when executing communications" option selected in the campaign, so that all old MATables are discarded and replaced by new ones. This ensures that the execution reflects the most current state of your DBMS.
    • Execution of a campaign, scheduled or via 'Execute now' in the execution dialog, clears counts on all nodes in the campaign prior to executing the communications since it is assumed that executing the entire campaign should always reflect the most recent state of your database.
    • Re-execution of nodes in a linked campaign is governed by the designer of the linked campaign via selection/deselection of the "use most recent data when referenced by a link node" checkbox in the linked campaign.

Saving the linked (target) campaign without counts also ensures that execution of campaigns referencing the target cell/campaign via a link node will trigger creation of current population MATables (since linked campaigns are opened read-only and any MATables produced during their execution will be discarded when the linked campaign is closed.)


Can I just delete all MATables older than X months?

In early MA releases, deleting MATables would cause "missing table" failures during execution if the deleted table was referenced. This occurred because checking for the existence of an MATable required executing a stored process, which greatly slowed opening campaigns.


In later releases (starting ~5.4), we decided that it was worth the performance hit on opening campaigns to avoid the execution failures and the existence of all MATables is checked when opening a campaign. You should now just receive a warning when opening the campaign; the node with which the deleted MATable was associated and all nodes following it in the diagram will lose their counts. Deleting or clearing counts on old campaigns is a safer option, though.


Thanks, very clear and useful.

Thank you for that feedback, @franmarq! Are there other topics you'd like to us to address with an article? Comment below. 

Nice explanation, thanks. Is there any way to export these node totals (programmatically) so I can monitor my user group/input data?

How do I know which node each table reference to?
Version history
Last update:
‎12-15-2015 03:47 PM
Updated by:


Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.


Register now!

Free course: Data Literacy Essentials

Data Literacy is for all, even absolute beginners. Jump on board with this free e-learning  and boost your career prospects.

Get Started

Article Tags