Given a table of transactions with columns TransactionID, UserID, ProductID, and TransactionDate, write a SQL query to find the users who have made transactions with at least 3 different products in the past week.

Here's the SQL query you could use:

```
SELECT UserID
FROM transactions
WHERE TransactionDate >= DATEADD(day, -7, GETDATE()) -- Select transactions from the past week
GROUP BY UserID
HAVING COUNT(DISTINCT ProductID) >= 3 -- Only select users with at least 3 unique products
``` 

This query uses the `DATEADD` function to get transactions within the last week and then groups transactions by user ID. It then only selects user IDs that have made transactions with at least 3 unique products using the `COUNT` and `DISTINCT` functions in the `HAVING` clause.