On Steam is the game Human Resource Machine. While it is a game it is played using simple programming commands as blocks like Scratch, has an input and output conveyor and several places to hold intermediate calculations or values, think variables. Latter in the game you can even name the locations.
While some of the problems are too hard for someone 9 years old, the upside of the game is that it gives you a visual representation to the abstract concept of a variable. It also has a character that moves the boxes around and performs simple operations such as add based on the commands.
As such when I read your question what I see as the true question is how do I get a 9 year old to understand a variable as an abstract concept. The game gives helps in that it gives the player a concrete and visual representation of a variable as something concrete being interacted with the game character. Once the player understands what a variable is, they can abstract that away in the way professional programmers do with many concepts.
Also I would not consider a variable as the first abstract concept a child learns but the concept of words and numbers. The words are typically one word to one concrete item. A number is one value to a count of concrete items. A number can also be a way to give a unique name to group of similar items. A variable in one of its simplest is one word to one item that has similar properties or relationships but that can be replaced as time progresses.
When I introduce variables I state that a variable has a name but also a type which in some languages are static and in others are dynamicalso has a type. So in teaching variables it can help to also introduce the concept of type.