Via types (through-hole, blind, buried) in PCB Design - Full Explanation
Imagine a multi-story building where people need to move between floors. Through-hole vias are like staircases that go from the ground floor all the way to the top floor. Blind vias are staircases that start on the ground floor but only go up a few floors, not reaching the top. Buried vias are hidden elevators inside the building that only connect middle floors without any doors on the ground or top floors.
┌───────────────┐ │ Top Layer │ ├───────────────┤ │ Inner Layer 1 │ ├───────────────┤ │ Inner Layer 2 │ ├───────────────┤ │ Bottom Layer │ └───────────────┘ Through-hole via: │ drilled through all layers Blind via: │ drilled from top layer to inner layer 1 Buried via: │ drilled between inner layer 1 and inner layer 2 only
Practice
Which type of via connects all layers of a PCB from top to bottom?
Solution
Step 1: Understand via types
Through-hole vias go through the entire PCB, connecting all layers.Step 2: Compare with other vias
Blind vias connect outer to inner layers only; buried vias connect only inner layers.Final Answer:
Through-hole via -> Option DQuick Check:
All layers connected = Through-hole via [OK]
- Confusing blind vias with through-hole
- Thinking buried vias connect outer layers
- Assuming microvias connect all layers
Which of the following is the correct DAX formula to count only blind vias from a table Vias with a column Type?
COUNTROWS(FILTER(Vias, Vias[Type] = "blind"))
Solution
Step 1: Understand DAX counting syntax
To count rows matching a condition, use COUNTROWS with FILTER.Step 2: Check each option
COUNTROWS(FILTER(Vias, Vias[Type] = "blind")) correctly filters rows where Type equals "blind" and counts them.Final Answer:
COUNTROWS(FILTER(Vias, Vias[Type] = "blind")) -> Option BQuick Check:
Correct DAX syntax for conditional count = COUNTROWS(FILTER(Vias, Vias[Type] = "blind")) [OK]
- Using COUNT instead of COUNTROWS for rows
- Using single equals (==) in DAX which is invalid
- Trying to sum boolean expressions directly
Given the DAX measure:BlindViaCount = COUNTROWS(FILTER(Vias, Vias[Type] = "blind"))
and the Vias table below:
Type through-hole blind buried blind through-hole blind
What is the value of
BlindViaCount?Solution
Step 1: Identify rows with Type = "blind"
From the table, rows 2, 4, and 6 have "blind" type.Step 2: Count these rows
There are 3 such rows matching the filter condition.Final Answer:
3 -> Option AQuick Check:
Count of "blind" rows = 3 [OK]
- Counting only first two blind vias
- Including buried or through-hole vias by mistake
- Misreading the table rows
Identify the error in this DAX formula intended to count buried vias:BuriedCount = COUNTROWS(FILTER(Vias, Vias[Type] == "buried"))
Solution
Step 1: Review DAX comparison operators
DAX uses single equals (=) for comparisons, not double equals (==).Step 2: Check the formula syntax
The formula uses '==' which causes a syntax error in DAX.Final Answer:
Using double equals (==) instead of single equals (=) in DAX -> Option CQuick Check:
DAX comparison uses =, not == [OK]
- Using == from other languages in DAX
- Thinking COUNTROWS can't work with FILTER
- Misplacing commas in FILTER function
You want to create a Power BI report showing the percentage of each via type (through-hole, blind, buried) in a PCB design. Which DAX measure correctly calculates the percentage of buried vias?
BuriedPercent = DIVIDE(CALCULATE(COUNTROWS(FILTER(Vias, Vias[Type] = "buried"))), COUNTROWS(Vias), 0)
Solution
Step 1: Understand percentage calculation in DAX
Percentage = count of buried vias divided by total vias, safely handling divide by zero.Step 2: Analyze each option
BuriedPercent = DIVIDE(CALCULATE(COUNTROWS(FILTER(Vias, Vias[Type] = "buried"))), COUNTROWS(Vias), 0) uses DIVIDE with CALCULATE and FILTER correctly, providing safe division.Final Answer:
BuriedPercent = DIVIDE(CALCULATE(COUNTROWS(FILTER(Vias, Vias[Type] = "buried"))), COUNTROWS(Vias), 0) -> Option AQuick Check:
Safe division with DIVIDE and correct filter = BuriedPercent = DIVIDE(CALCULATE(COUNTROWS(FILTER(Vias, Vias[Type] = "buried"))), COUNTROWS(Vias), 0) [OK]
- Using simple division without DIVIDE (risk divide by zero)
- Using COUNT instead of COUNTROWS for rows
- Trying to sum boolean expressions directly
Ready to prove it?
Pass the test and this pattern moves unknown
