Transformation caches in Informatica IICS are temporary storage areas that help Informatica Intelligent Cloud Services (IICS) process data faster. IICS first tries to store cache data in memory, and if memory is not enough, it writes the extra data to disk cache files. Understanding how these caches work will help you improve mapping performance and avoid failures.
1) What Is a Transformation Cache in IICS?
Transformation Caches in Informatica IICScache is a temporary storage area that IICS uses while running transformations. Its purpose is to speed up processing.
Two types of storage may be used:
✅ 1) Memory Cache (RAM)
Fastest.
IICS first tries to keep cache data here.
✅ 2) Disk Cache Files
Slower.
Stored under $PMCacheDir and $PMTempDir.
If memory is not enough, IICS writes overflow data to disk cache files, which slows the mapping.
Transformations that use caches:
Lookup, Joiner, Aggregator, Rank and Sorter
Except Sorter (which uses one combined cache), all others use two caches:
Index Cache → stores keys
Data Cache → stores values
2) How Transformation Cache Works (Diagram)
The flow is simple: IICS receives input data → runs a transformation → stores keys in Index Cache and row data in Data Cache → spills to disk if memory is insufficient → sends output rows to the next step.
3) Index Cache vs. Data Cache- Simple Examples
Below we will show for each transformation what goes Into Index Cache vs. Data Cache (With Clear Examples)
A) Lookup Transformation:
Lookup Table:
| EmpID | EmpName | DeptID |
|---|---|---|
| 101 | Alice | 10 |
| 102 | Bob | 20 |
| 103 | Carol | 10 |
Condition: EmpID = input.EmpID
- Index Cache: 101→R1, 102→R2, 103→R3
- Data Cache: R1=[Alice,10], R2=[Bob,20], R3=[Carol,10]
B) Joiner Transformation:
Master Table:
| DeptID | DeptName |
|---|---|
| 10 | Sales |
| 20 | Finance |
Detail Table:
| EmpID | EmpName | DeptID |
|---|---|---|
| 101 | Alice | 10 |
| 102 | Bob | 20 |
Condition: Master.DeptID = Detail.DeptID
- Index Cache: 10→R1,
20→R2 - Data Cache: A=[Sales], B=[Finance]
C) Aggregator Transformation
Input:
| DeptID | Salary |
|---|---|
| 10 | 1000 |
| 20 | 2000 |
| 10 | 1500 |
Condition: Group By DeptID
Expression: SUM(Salary)
- Index Cache: 10, 20
- Data Cache: 10→2500, 20→2000
D) Rank Transformation
Input:
| EmpID | Salary |
|---|---|
| 101 | 5000 |
| 102 | 8000 |
| 103 | 6000 |
Condition: Rank Top 2 salaries
The Data Cache stores sorted rows: (102,8000), (103,6000), (101,5000).
E) Sorter Transformation (Single Cache)
| EmpID | Salary |
|---|---|
| 101 | 5000 |
| 102 | 8000 |
| 103 | 6000 |
Condition: Sort Salary by DESC
(8000 → Row102) (6000 → Row103) (5000 → Row101)
4) Common Problems & Root‑Cause Analysis(RCA)
🔶Problem 1: High Precision Causes Slow Cache Creation
When a field has a very large precision (for example, a text field sized at 32,000 characters) as below image, IICS must allocate much more memory for the cache. This dramatically increases the time taken to build the cache and, in some cases, the task may appear stuck or even fail due to limited memory.
Even if you are not storing that many characters in the actual field, the Secure Agent still reserves space based on the precision definition. This means:
- Larger precision → larger cache structures
- Larger cache → slower build timePossibly,
- cache spills to disk → even slower performance
🔶 How to Improve Cache Efficiency (Action Steps)
✔ 1. Review precision of all incoming fields
- Look for text or large numeric fields with very high sizes.
- If their actual data is much smaller, reduce the precision.
✔ 2. Check return fields in Lookup transformations
- Avoid returning very wide fields if not needed.
- Return only what is necessary.
✔ 3. Inspect Sort Keys in Sorter
- Only sort on columns required for your logic.
- Avoid sorting on wide string columns unless required.
✔ 4. Check Master Pipeline of Joiner
- Remove oversized fields before they reach the Joiner.
- Use Expression transformations to shrink precision early in the flow.
🔶Problem 2: Cache Folder Gets Full in IICS
Whenever you click Preview inside a mapping, IICS quietly generates temporary CSV files behind the scenes. These files are stored in the Secure Agent under:
.../apps/Data_Integration_Server/data/cache/preview
Here’s what actually gets written:
- One CSV file for the transformation you previewed
- One CSV file for each upstream transformation
- One file per output group, if the transformation has multiple outputs
If you preview many times during mapping development, this folder can quickly grow in size.
But IICS automatically cleans these preview files every 24 hours, removing anything older than a day. However, if you generate a lot of previews within a short time window, the folder may temporarily appear full until the automated cleanup happens.
🔶Problem 3: Cache Files Left Behind After Failed Mapping Runs
During actual execution, transformations like Joiner and Aggregator generate cache files with specific prefixes:
- PMAGG* → Aggregator cache files
- PMJNR* → Joiner cache files
- PMLKP* → Lookup cache files
Normally, IICS deletes these automatically after a successful run. But if the mapping fails midway, the cleanup process does not occur. This means:
- Stale cache files remain in the directory
- The folder gradually fills up
- Disk space warnings or failures may occur later
5) How to Find Correct Cache Size Using Logs
Step 1 — Set tracing to Verbose Initialization
Transformation → Advanced tab →
Tracing Level = Verbose Initialization
Step 2 — Run mapping in Auto Cache size mode
Step 3 — Look at session log
You will see entries like below:
These are the exact sizes your transformation needs.
Step 4 — Set these values manually
Now you enter them in the transformation’s Advanced tab, so the cache fits in memory. This prevents disk spilling.
6) Tuning Tips
- Lookup → Reduce precision, filter SQL
- Joiner → Smaller Master, sort inputs
- Aggregator → Fewer group‑by columns
- Sorter → Sort only needed columns
- Disk cache → Clean stale files regularly
7) Summary Table
| Transformation | Index Cache | Data Cache |
|---|---|---|
| Lookup | Lookup keys | Lookup rows |
| Joiner | Master join keys | Master rows |
| Aggregator | Group keys | Aggregate values |
| Rank | Group keys | Sorted rows |
| Sorter | — | Sort keys + rows |