Bird
Raised Fist0
Terraformcloud~10 mins

Collection functions (length, flatten, merge) in Terraform - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Collection functions (length, flatten, merge)
Start with collections
↓
Apply length()
↓
Apply flatten()
↓
Apply merge()
↓
Get final result
Start with collections, then use length() to count items, flatten() to make nested lists flat, and merge() to combine maps.
Execution Sample
Terraform
locals {
  list_nested = [[1, 2], [3, 4]]
  map1 = {a = 1, b = 2}
  map2 = {b = 3, c = 4}
  len_list = length(local.list_nested)
  flat_list = flatten(local.list_nested)
  merged_map = merge(local.map1, local.map2)
}
This code counts items in a nested list, flattens it, and merges two maps.
Process Table
StepFunctionInputOutputExplanation
1length[[1, 2], [3, 4]]2Count top-level elements in the nested list
2flatten[[1, 2], [3, 4]][1, 2, 3, 4]Flatten nested list into single list
3merge{a=1,b=2}, {b=3,c=4}{a=1,b=3,c=4}Merge maps; later keys overwrite earlier ones
💡 All functions applied; final outputs obtained.
Status Tracker
VariableStartAfter lengthAfter flattenAfter merge
list_nested[[1, 2], [3, 4]][[1, 2], [3, 4]][[1, 2], [3, 4]][[1, 2], [3, 4]]
len_listundefined222
flat_listundefinedundefined[1, 2, 3, 4][1, 2, 3, 4]
merged_mapundefinedundefinedundefined{a=1,b=3,c=4}
Key Moments - 3 Insights
Why does length([[1, 2], [3, 4]]) return 2, not 4?
length() counts only the top-level elements. Here, the list has two elements: [1, 2] and [3, 4]. See execution_table step 1.
How does flatten() change the nested list?
flatten() removes one level of nesting, combining inner lists into a single list. See execution_table step 2.
When merging maps with overlapping keys, which value is kept?
The value from the later map overwrites the earlier one. In step 3, key 'b' changes from 2 to 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the output of length() at step 1?
A1
B2
C4
D0
💡 Hint
Check the 'Output' column in execution_table row with Step 1.
At which step does the list become flat?
AStep 2
BStep 1
CStep 3
DNo flattening occurs
💡 Hint
Look at the 'Function' and 'Output' columns in execution_table for flatten().
If map2 was {b=5, c=6} instead, what would merged_map's 'b' value be?
A2
B3
C5
DUndefined
💡 Hint
Refer to execution_table step 3 where later map keys overwrite earlier ones.
Concept Snapshot
length(collection) returns number of top-level items.
flatten(list_of_lists) merges nested lists into one list.
merge(map1, map2, ...) combines maps; later keys overwrite earlier.
Use these to count, simplify, and combine collections easily.
Full Transcript
This visual trace shows how Terraform collection functions work step-by-step. We start with a nested list and two maps. length() counts the top-level items in the list, returning 2 because there are two inner lists. flatten() then merges these inner lists into one flat list with four numbers. Finally, merge() combines two maps; when keys overlap, the value from the later map replaces the earlier one. This helps beginners see exactly how these functions change data collections in Terraform.

Practice

(1/5)
1. What does the Terraform function length() do when applied to a list?
easy
A. Returns the number of items in the list
B. Combines all items into a single string
C. Flattens nested lists into one list
D. Merges the list with another list

Solution

  1. Step 1: Understand the purpose of length()

    The length() function counts how many elements are in a list, map, or string.
  2. Step 2: Apply to a list context

    When used on a list, it returns the total number of items inside that list.
  3. Final Answer:

    Returns the number of items in the list -> Option A
  4. Quick Check:

    length(list) = count of items [OK]
Hint: Count items with length() to get list size fast [OK]
Common Mistakes:
  • Thinking length() merges lists
  • Confusing length() with flatten()
  • Assuming length() returns the list itself
2. Which of the following is the correct syntax to merge two maps map1 and map2 in Terraform?
easy
A. length(map1, map2)
B. flatten(map1, map2)
C. map1 + map2
D. merge(map1, map2)

Solution

  1. Step 1: Identify the function for combining maps

    The merge() function is used to combine two or more maps into one.
  2. Step 2: Check syntax correctness

    The correct syntax is merge(map1, map2). Other options either use wrong functions or invalid operators.
  3. Final Answer:

    merge(map1, map2) -> Option D
  4. Quick Check:

    merge() combines maps correctly [OK]
Hint: Use merge() with parentheses and commas for maps [OK]
Common Mistakes:
  • Using + operator to merge maps
  • Confusing flatten() with merge()
  • Passing maps without commas
3. What is the output of this Terraform expression?
flatten([["a", "b"], ["c"], ["d", "e"]])
medium
A. [["a", "b"], ["c"], ["d", "e"]]
B. ["a", "b", "c", "d", "e"]
C. ["a", "b", ["c"], "d", "e"]
D. Error: flatten() only works on maps

Solution

  1. Step 1: Understand flatten() function

    The flatten() function takes a list of lists and combines all inner lists into one single list.
  2. Step 2: Apply flatten() to the given nested list

    Input is [["a", "b"], ["c"], ["d", "e"]]. Flattening merges all inner lists into ["a", "b", "c", "d", "e"].
  3. Final Answer:

    ["a", "b", "c", "d", "e"] -> Option B
  4. Quick Check:

    flatten(nested list) = single list [OK]
Hint: flatten() removes inner list brackets to one list [OK]
Common Mistakes:
  • Thinking flatten() returns original nested list
  • Expecting flatten() to work on maps
  • Confusing flatten() with merge()
4. Given the code snippet:
locals {
  map1 = { a = 1, b = 2 }
  map2 = { b = 3, c = 4 }
  result = merge(map1, map2)
}

What is the value of local.result?
medium
A. { a = 1, b = 3, c = 4 }
B. { a = 1, b = 2, c = 4 }
C. { a = 1, b = 5, c = 4 }
D. Error: duplicate keys not allowed in merge

Solution

  1. Step 1: Understand merge() behavior with duplicate keys

    When keys overlap, the value from the last map argument overrides earlier ones.
  2. Step 2: Apply merge to map1 and map2

    map1 has b=2, map2 has b=3. The merged map uses b=3 from map2, so result is { a=1, b=3, c=4 }.
  3. Final Answer:

    { a = 1, b = 3, c = 4 } -> Option A
  4. Quick Check:

    merge() overrides duplicate keys with last map [OK]
Hint: Last map's keys override earlier ones in merge() [OK]
Common Mistakes:
  • Assuming values add up for duplicate keys
  • Expecting error on duplicate keys
  • Confusing merge() with flatten()
5. You have a list of maps:
list_of_maps = [
  { name = "Alice", age = 30 },
  { name = "Bob", age = 25 },
  { name = "Carol", age = 27 }
]

Which Terraform expression correctly merges all maps into one map with all keys and values combined?
hard
A. length(list_of_maps)
B. flatten(list_of_maps)
C. merge(list_of_maps...)
D. merge(list_of_maps)

Solution

  1. Step 1: Understand how to merge multiple maps in a list

    To merge all maps inside a list, you use the splat operator ... to unpack the list as arguments to merge().
  2. Step 2: Check each option

    merge(list_of_maps...) uses merge(list_of_maps...) which correctly merges all maps. flatten(list_of_maps) tries flatten on maps (invalid), C returns count, D passes list directly (invalid).
  3. Final Answer:

    merge(list_of_maps...) -> Option C
  4. Quick Check:

    Use merge() with ... to combine list of maps [OK]
Hint: Use ... to unpack list when merging maps [OK]
Common Mistakes:
  • Passing list directly to merge() without ...
  • Using flatten() on maps
  • Confusing length() with merge()
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard