The Case
For the first case, we’re to find the missing (or more correctly, mis-shelved) book.
Solving
The solution is pretty straight-forwards; add up the weights of all the books on a shelf (as reporting by RFID) and find the one that doesn’t match the total weight reported by the shelf:
- Expand
rf_ids
- Joining to the
Books
table - Sum up the weight of the books by shelf
- Find the shelf
Plot twist - the shelves report a slightly different weight to the sum total of all books. I guess that’s the dust in the library. Hey, who turned out the lights?
Solution
let book_weight = toscalar(Books
| where book_title == "De Revolutionibus Magnis Data" | project weight_gram);
Shelves
| mv-expand rf_ids
| extend rf_id = tostring(rf_ids)
| join Books on rf_id
| summarize sum(weight_gram) by shelf, total_weight
| where (total_weight - sum_weight_gram) > book_weight