2012-04-30 26 views
5

Pregunta en SSAS para todos ustedes. Estoy intentando definir una relación de Uno a Muchos en un entorno de cubo OLAP SSAS. Sin embargo, estoy teniendo problemas para definir una clave principal. Las tablas de ejemplo están debajo. Las relaciones entre las primeras 3 tablas se definen fácilmente (TradeDate, NYMEX Trades & NYMEX Contract). Sin embargo, mi objetivo es crear una relación de uno a muchos entre el contrato NYMEX y el contrato modelo. En otras palabras, los datos de 1 Contrato NYMEX se utilizarán varias veces en el conjunto de datos del Contrato Modelo.SSAS Relación dimensional de uno a muchos

Tabla: TradeDate

  • TradeDate (PK)
  • Año
  • Mes etc ...

Tabla: Operaciones de NYMEX (NO PK)

  • ContractName
  • TradeDate
  • Precio

Tabla: NYMEX Contrato

  • ContractName (PK)

Tabla: Modelo de Contrato

  • ModelContractName (PK)
  • ContractName

Necesito crear una relación uno a varios entre NYMEX Contrato y Modelo de Contrato ... sin embargo mi PK está en la columna equivocada en el Modelo de Contrato. ¿Algunas ideas?

Para ayudar a aclarar: estoy intentando definir una relación dimensión -> dimensión. La Tabla "Contrato modelo" es una tabla de búsqueda.

+1

Debería considerar mover esta pregunta al sitio hermano: [dba.stackexchange.com] (http: // dba.stackexchange.com/) Las preguntas etiquetadas con [etiqueta: ssas] y/o [etiqueta: mdx] pueden tener mejores posibilidades de ser respondidas allí. –

+0

Puede marcarlo (para que un moderador lo transfiera) o publicarlo allí y eliminar esta pregunta usted mismo. –

+0

¿Por qué intenta crear una relación 1-M en lugar de una jerarquía? Si ContractName en Model Contract es el mismo que en NYMEX Contract, ¿no debería ser esa la clave foránea? ModelContractName parece ser el elemento de grano más fino en el Contrato modelo, por lo que la lista distinta de nombres debe ser una clave candidata adecuada (aunque una clave sustituta entera probablemente sea mejor). – JAQFrost

Respuesta

6

Lo que tiene es un ejemplo de un muchos-a-muchos relación entre sus datos de hechos (Oficios) y sus datos de dimensiones (Contrato modelo). Echa un vistazo a esto: dimension relationship.Su caso es un caso raro ya que los contratos modelo solo se pueden asignar a un Nombre del contrato, pero aún se incluye en el caso de muchos a muchos. Esto se maneja usando una tabla puente en modelado dimensional y en SSAS lo llaman una tabla de hechos intermedios. Una vez que tenga su configuración de DSV como esta: enter image description here

Luego, creará las dimensiones en su proyecto y luego creará un grupo de medidas para que ModelContract pueda usarlo como una tabla de hechos intermedia. A continuación, configurar el uso de dimensión para el cubo de la elección de una relación de muchos a muchos:

enter image description here enter image description here

Como nota al margen, siempre debe utilizar las claves sustitutas para sus dimensiones. Tienen varias ventajas, como espacio de almacenamiento en la tabla de hechos, dimensiones de cambio lento, desacoplamiento del sistema fuente, ...

+0

¡Definitivamente considere la posibilidad de remodelar si es posible incluir claves sustitutivas! – elgabito

0

necesita hacer 2 dimensiones aquí.

primero, no debe agregar su fecha como parte de la dimensión completa. La fecha en sí debería existir como una dimensión.

En segundo lugar, como veo, debe unirse a NYMEX Contract y Model Contract y hacer una dimensión. Puede unirlos en el DSV con una consulta con nombre o hacer una vista SQL o puede tener ambas tablas separadas en el DSV y unirlas en la dimensión.

En tercer lugar, NYMEX Trades es su tabla de hechos. Una vez que haya creado las dos dimensiones anteriores, debe agregarlas al cubo y unirlas con la tabla de hechos en la pestaña de relación de dimensión utilizando los campos ContractName y TradeDate

Cuestiones relacionadas