A dictionary is a Warehouse lookup table that SQL queries on Lake tables fill, one query for each source system. It refreshes on a schedule, and you correct its values by hand in Data Mapping. Use it for a list that keeps itself up to date from your sources; if the values have no source, use a Static table instead.
The window has four tabs: Dictionary, Preview, Dependants and Settings. The Dictionary tab holds six steps: General, Queries, Columns, Dependencies, RLS and Data Mapping.
UNION DISTINCT in that source's query.-- comments in a dictionary query.| Message | What it means | What to do |
|---|---|---|
| The Source ID field must be a String type. Use CAST or CONVERT | The Source ID column is not text. | Convert the value to text in the query. |
| "Source ID" must be unique for each row in the query result | Two rows share a Source ID value. Empty values count as one value. | Give each row its own value. |
| Too many records: the maximum allowed is 15,000 | The query returns more rows than a dictionary accepts. | Narrow the query to 15,000 rows or fewer. |
| A Dictionary must have at least one query. Removing the last query is not allowed. | You tried to remove the only query. | Add another query first, then remove this one. |
| "SOURCE_ID" should be Unique for each "SOURCE_SYSTEM_ID" | The save found the same Source ID and Source System ID pair twice in the combined result. | Make each pair unique in the query, then save again. |
| Unknown dictionary source key(s): ... Each "Source ID" and "Source System ID" pair must exist in the dictionary main table. | A row was added with a Source ID and Source System ID pair that the dictionary does not hold. | Reuse a pair the dictionary already carries, then save again. |
Without the right permission, the action is refused with a message that names the permission. See Warehouse permissions and row-level security.
Yes. Every query must return the same fields, with the same names, because DataMind combines them into one list and those fields become the dictionary's columns. To merge tables within one source system, use UNION DISTINCT in that source's query.
A dictionary always keeps at least one query; removing the only one is refused with "A Dictionary must have at least one query. Removing the last query is not allowed." Add another query first, then remove this one.
When you save changed queries, the dictionary rebuilds its columns from the combined result, and a column the new queries no longer return is removed, together with the data in it. Check which columns your SQL returns before you save. In a Warehouse Builder chat the change waits on an approval card that lists the columns at risk and shows the SQL before and after.
Source ID identifies each record, and transformations join on it later. The column must be text, and every row in a query needs its own value; empty values count as one value. If your value is a number or a date, convert it with CAST or CONVERT. A query may return at most 15,000 rows.
Fill with AI, in the Data Mapping toolbar, is disabled for a table when any of its columns carries a PII domain; the request is refused with AI fill features are disabled for tables with PII columns. Fill those rows by hand instead. For how domains are set, see PII detection.
Unsaved Changes opens: "You have unsaved changes. How would you like to proceed?" Choose Save & Continue to save the step and move on, or Discard & Continue to drop the changes; while the dictionary is still being created, saving is the only way forward. If a required field is missing, the move is blocked with Please complete all required fields before navigating and you stay on the step.
The strip above the steps shows each step's state. A step that is saved and valid turns green; the step you are on is highlighted, and it shows an amber mark while it has unsaved changes and turns red when it still needs attention. Fix a red step before you continue.
Columns that come from your queries are locked, because the queries refill them. The columns you added are editable, and the key column is editable only on rows you add. The full grid is in Dictionary data mapping.