Я попытался упростить, чтобы задать этот вопрос. Надеюсь, это будет понятно.
По сути, у меня есть таблица фактов с измерением времени, другим измерением и иерархическим измерением. Для целей вопроса предположим, что иерархическим измерением является почтовый индекс и штат. Другое измерение является просто описательным. Назовем это «клиент». Предположим, что есть 50 клиентов.
Мне нужно найти набор штатов, для которых существует хотя бы один почтовый индекс, в котором КАЖДЫЙ клиент имеет хотя бы одну строку фактов для каждого дня во временном измерении. Если у почтового индекса всего 49 клиентов, меня это не волнует. Если хотя бы один из 50 клиентов не имеет ценности хотя бы за 1 день в почтовом индексе, меня это не волнует. Наконец, мне также нужно знать, какие почтовые индексы подходят для выбора штата. Обратите внимание, что для каждого почтового индекса не требуется полный набор данных, требуется только наличие хотя бы одного почтового индекса.
Я не против сделать несколько запросов и выполнить некоторую обработку на стороне клиента. Это набор данных, который нужно генерировать только один раз в день и который можно кэшировать. Я даже не вижу особенно чистого способа сделать это с несколькими запросами, за исключением простой итерации грубой силы, и в наборе данных есть чертовски много «почтовых индексов» (на самом деле не почтовые индексы, но там примерно 100 000 записей на нижнем уровне иерархии и несколько сотен на верхнем уровне, поэтому zipcode->state является разумной аналогией)