Service Name (ServiceName in the XML) is the account or computer for which the ticket was requested, and Service ID (ServiceSid) is its SID. This pair is where the Kerberoasting logic lives. A ticket for a computer account shows a Service Name ending in a dollar sign, for example FS01$. The service key behind it is the machine account password, 120 characters of random data rotated every 30 days by default, which is not crackable in any useful timeframe.
A ticket for a user account with a registered SPN (svc_sql, svc_backup, a gMSA, an application identity someone created in 2016) is a different animal. That ticket is encrypted with a key derived from a human-chosen password, and anyone with a valid domain logon can request it. The offline crack is the attack; the request is the only part you can see. So a 4769 whose Service Name is a user-style account name, not a $-suffixed computer, is the population you care about, and it is a small fraction of total volume once you carve it out.
The krbtgt service name is its own special case. Requests with ServiceName equal to krbtgt are TGT renewals and cross-realm referrals, not service access, and they are extremely common. Filter them with the machine accounts. Service ID shows NULL SID on failure events, so joins on ServiceSid only work on successes.
Account Name (TargetUserName) is the requester in normalized UPN form (user@FULL.DOMAIN), built from the SamAccountName plus the domain, not the actual userPrincipalName attribute. Computer accounts also carry the $ suffix here. Logon GUID lets you tie a DC-side 4769 back to the 4624 or 4648 the target server writes when the ticket is used, which is how you confirm the ticket was actually presented somewhere rather than just requested and cracked.