2016-05-18 2 views
0

Разработка таблицы фактов в sql-сервере 14. Должно быть довольно просто, но ..: Мне нужно проверить количество посещений в день/клиент/команду/статус. Помимо этого количества посещений, мне нужно отслеживать количество действий, совершаемых при каждом посещении.График фактической таблицы фактов

  SELECT [VISITS_PK] 
        ,[PERIOD_SK] 
        ,[CLIENT_SK] 
        ,[TEAM_SK] 
        ,[STATUSS_SK] 
        ,[ACTIONS_SK] 
       FROM [dbo].[FACT_VISITS] 

Вернется

   VISITS_PK PERIOD_SK CLIENT_SK TEAM_SK STATUSS_SK ACTIONS_SK 
       1 20160515 1 1 1 1 
       2 20160515 1 1 1 2 
       3 20160515 1 1 1 3 
       4 20160515 2 2 1 1 
       5 20160515 2 2 1 2 

Резюме: 2 посещения сделано, 5 действия выполняются в общей сложности.

Отслеживание количества действий позволяет мне использовать COUNT, но если я не хочу принимать во внимание действия и просто видеть, сколько посещений я получил в целом, мне нужна другая таблица фактов с другим зерном? Я бы предпочел использовать одну таблицу фактов, поскольку количество посещений на самом деле просто более агрегировано.

Редактировать: Action_sk содержит ссылку на таблицу измерений с подробной информацией о выполненных действиях. первые 3 строки - это одно посещение с тремя действиями, две последние строки - одно посещение с двумя выполненными действиями.

+0

Почему вы говорите, что образцы данных показывают два посещения, когда каждая строка имеет разные VISITS_PK? Это означает, что каждая строка отличается от другого посещения. –

+0

Я отредактировал мое сообщение, первые 3 строки - одно посещение с 3 действиями, выполненными на клиенте, две последние строки - одно посещение с двумя выполненными действиями. –

+0

Причина, по которой это называется VISITS_PK, состоит в том, что ядро ​​этой таблицы должно было бы получать количество посещений, но количество действий, выполняемых при каждом посещении, также должно быть известно, хотя это не главный вопрос. Поэтому я думаю, что это плохое имя для вызова посещений таблицы и посещения_pk в качестве имени ключа, так как самый низкий уровень - это выполненные действия. –

ответ

2

Вместо строки для каждого действия, есть только один ряд за посещение, с SUM действий в этой поездке:

  VISITS_PK PERIOD_SK CLIENT_SK TEAM_SK STATUSS ACTIONS 
      1   20160515 1   1  1  3 
      2   20160515 2   2  1  2 

EDIT на основе нового понимания ваших данных:

Хорошо, я хотел бы изменить имя таблицы в Fact_Actions, так как это самый низкий уровень детализации и сделать посещения в SK, например, так:

  VISITS_SK PERIOD_SK CLIENT_SK TEAM_SK STATUSS_SK ACTIONS_PK 
      1   20160515 1   1  1   1 
      1   20160515 1   1  1   2 
      1   20160515 1   1  1   3 
      2   20160515 2   2  1   4 
      2   20160515 2   2  1   5 

Теперь вы можете подсчитать действия путем подсчета строк и подсчета посещений путем подсчета значений DISTINCT Visits_SK.

+0

Это удаляет информацию о действиях, теперь я забыл поставить _SK за STATUS_SK и ACTIONS_SK, но они необходимы для определения того, какие действия произошли при посещении. Удаление этой информации не является вариантом. –