Я попытался упростить для этого вопроса. Надеюсь, это будет понятным.выберите все значения из измерения, для которого есть факты во всех других измерениях.
В принципе, у меня есть таблица фактов с измерением времени, другим измерением и иерархическим измерением. Для целей вопроса давайте предположим, что иерархическое измерение - это почтовый индекс и состояние. Другое измерение просто описательно. Назовем его «заказчиком». Предположим, что есть 50 клиентов.
Мне нужно найти набор состояний, для которых есть хотя бы один почтовый индекс, в котором каждый клиент имеет по крайней мере одну строку фактов для каждого дня в измерении времени. Если у zip-кода есть только 49 клиентов, я не забочусь об этом. Если даже один из 50 клиентов не имеет значения даже на один день в почтовом индексе, мне все равно. Наконец, мне также нужно знать, какие почтовые коды квалифицировали состояние для выбора. Обратите внимание, что нет необходимости, чтобы каждый почтовый индекс имел полный набор данных - только по крайней мере один почтовый индекс.
Я не против делать несколько запросов и выполнять некоторую обработку на стороне клиента. Это набор данных, который нужно генерировать только один раз в день и может быть кэширован. Я даже не вижу особо чистого способа сделать это с несколькими запросами, кроме простой итерации грубой силы, и в наборе данных есть много «почтовых индексов» (на самом деле это не почтовые индексы, но там приблизительно 100000 записей в нижнем уровне иерархии и нескольких сот в верхнем уровне, так zipcode-> государство является разумной аналогией)
какая это база данных? – Unreason
postgresql 8.3.x – ideasculptor