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