Вы не должны использовать отношения m2m с AppEngine. Базы данных NoSQL (и BigTable - одна из них) обычно не поддерживают JOIN, и программист должен денормализовать структуру данных. Это преднамеренное решение при проектировании: в то время как ваша база данных будет содержать избыточные данные, ваши запросы на чтение будут намного проще (не нужно объединять данные из 3 таблиц), что, в свою очередь, также значительно упрощает проектирование сервера БД (конечно, это сделано для оптимизации и масштабирования)
В вашем случае вам, вероятно, следует избавиться от моделей Tag и SongTag и просто сохранить тег в модели Song в виде строки. Я, конечно, предполагаю, что модель Tag содержит только идентификатор и имя. Если Tag фактически содержит больше данных, у вас все равно должна быть модель Tag. Модель песни в этом случае должна содержать как tag_id, так и tag_name. Идея, как я объяснил выше, состоит в том, чтобы ввести избыточность для упрощения запросов