In Azure Synapse or ADF, directly using an alternate key in Dataverse lookups during a Copy Data task can indeed be challenging since lookups require GUIDs, and there isn't native support for alternate keys in these activities.
However you can use a Data Flow activity within your pipeline to perform a lookup on the Country entity before writing to the City entity. This way, you can join the City data with the Country data based on the alternate key (ISO code) and retrieve the necessary GUID. The transformed data with GUIDs can then be written to Dataverse.
You can also store your data temporarily in a staging table (such as in Azure SQL Database). Then, use a Script activity with a T-SQL query or stored procedure to join your City data with the Country entity on the alternate key to fetch the GUIDs. Finally, write the transformed data to Dataverse.
If the above options are too complex, consider using an Azure Function or Power Automate flow to map alternate keys to GUIDs before pushing the data to Dataverse. This approach may involve some custom coding but can be automated within your Synapse pipeline.