Hitachi Vantara Pentaho Community Forums
Results 1 to 9 of 9

Thread: Duda con querys de fechas

  1. #1
    Join Date
    Dec 2008
    Posts
    132

    Talking Duda con querys de fechas

    Hola, tengo un campo con fechas y quisiera hacer un flitrado de una fecha hasta otra, pero no se como, ya que cuando le doy al botón de filtrar unicamente me deja ver un radiobutton para seleccionar cierta fecha.... yo supongo que debe ser con el MDX, pero no tengo idea de como hacerlo...
    eset es mi mdx
    Code:
    select NON EMPTY {[Measures].[Total]} ON COLUMNS,
      NON EMPTY {([Fecha].[Fechas], [Anual].[Anuales], [Estado.Estados].[Estados], [Tipo.Tipos].[Tipos], [Fondos.Fondos].[Fondos])} ON ROWS
    from [cuba22]
    De antemano, muchas gracias.

  2. #2
    Join Date
    Jul 2007
    Posts
    1,013

    Default

    No conozco tu set de datos, por lo que no puedo darte un ejemplo específico, pero asumiendo una dimensión de tiempo estándar podes usar intervalos así:

    ([2003].[Q1].[Jan].[01]:[2003].[Q4].[Dec].[31])

    Si queres mostrarlo anidado, ó de formas más complejas, podés fijarte en el ejemplo con Steel Wheels que hay en este hilo: http://forums.pentaho.org/showthread.php?t=67747, y generalizarlo para incluir un intervalo.

    ¡Saludos!

  3. #3
    Join Date
    Dec 2008
    Posts
    132

    Wink

    Gracias, fijate que lo puse en el where el ejemplo que me pones pero me marco error, vi que manejamos las fechas de distinta forma, yo la tengo toda la fecha yyyy-mm-dd en un solo campo así que cambie el
    Code:
     ([2003].[Q1].[Jan].[01]:[2003].[Q4].[Dec].[31])
    por este otro
    Code:
    select NON EMPTY {[Measures].[Total]} ON COLUMNS,
      NON EMPTY Hierarchize(Union({([Fecha].[Fechas], [Anual].[Anuales], [Estado.Estados].[Estados], [Tipo.Tipos].[Tipos], [Fondos.Fondos].[Fondos])}, Crossjoin([Fecha].[Fechas].Children, {([Anual].[Anuales], [Estado.Estados].[Estados], [Tipo.Tipos].[Tipos], [Fondos.Fondos].[Fondos])}))) ON ROWS
    from [cuba22]
    where ([2000-01-01]:[2000-11-01])
    y me dice que "Mondrian Errorimension '[Fecha]' appears in more than one independent axis."
    Hice bien en ponerlo en el where??
    Qué uso se les da a las "Q1"??
    La fecha debe ser por campos??

    Gracias

  4. #4
    Join Date
    Jul 2007
    Posts
    1,013

    Default

    El error es porque, tal cual dice, no podes usar la misma dimension en más de un eje (siendo los tres ejes las columnas, las filas y el filtro ó "where").

    Esto es complicado al principio para el que viene de SQL estándar, y en mi opinión fue una decisión poco feliz la de usar "WHERE" como palabra clave para los filtros, ya que no se comporta para nada como en SQL.

    Si un campo está listado en ROWS ó COLUMNS, el intervalo/filtro tiene que ser parte misma de esa declaración. Entonces en tu caso deberías reemplazar "[Fecha].[Fechas]" por algo así como "([Fecha].[2000-01-01]:[Fecha].[2000-11-01])".

    Además de esto, ¿"Fecha" en tu esquema está definida como una dimensión de tiempo? Sino esto puede causarte problemas al intentar calcular intervalos.

    En cuanto a Q1, es simplemente QUARTER1, que significa el primer cuarto del año. Dividir al año en cuartos se usa por defecto en las dimensiones de tiempo porque es muy útil en el mundo financiero. Yo lo puse en el ejemplo por costumbre, simplemente.

    ¡Saludos!

  5. #5
    Join Date
    Dec 2008
    Posts
    132

    Unhappy

    Bueno el campo fecha es de tipo "date" la tengo en una base de datos Oracle, mis disculpas, soy muy nuevo en esto, aún no me he metido para nada a quartiles.

    intente hacer lo que me comentas de esta forma
    Code:
    select NON EMPTY {[Measures].[Total]} ON COLUMNS,
      NON EMPTY {([Fecha].[Fechas].[2000-01-01]:[Fecha].[Fechas].[2000-11-01], [Anual].[Anuales], [Estado.Estados].[Estados], [Tipo.Tipos].[Tipos], [Fondos.Fondos].[Fondos])} ON ROWS
    from [cuba22]
    y también de esta forma

    Code:
    ... NON EMPTY {([Fecha].[2000-01-01]:[Fecha].[2000-11-01],  ...
    pero en ambas me marca este error
    "Mondrian Error:No function matches signature '(<Set>, <Member>, <Member>, <Member>, <Member>)'"

    No se podrá hacer este tipo de rangos o tengo algún dato mal??

  6. #6
    Join Date
    Jul 2007
    Posts
    1,013

    Default

    Esto debería funcionar (¡o eso espero! :P):

    Code:
    select NON EMPTY {[Measures].[Total]} ON COLUMNS,
      NON EMPTY Crossjoin({([Fecha].[Fechas].[2000-01-01]:[Fecha].[Fechas].[2000-11-01])}, {([Anual].[Anuales], [Estado.Estados].[Estados], [Tipo.Tipos].[Tipos], [Fondos.Fondos].[Fondos])}) ON ROWS
    from [cuba22]
    ¡Saludos!

  7. #7
    Join Date
    Dec 2008
    Posts
    132

    Default

    Guauuu!! eres un genio!! con eso trabajo, vaya lo que hace falta los parentesis jaja.

    Muchas gracias!! y aprovechando la molestia puedo agregar un par de cajas de texto para que alguien pueda escribir estas fechas?? o solamente via MDX??

    Gracias nuevamente

  8. #8
    Join Date
    Jul 2007
    Posts
    1,013

    Default

    Claro. La forma más sencilla de hacerlo es utilizar xactions. No se si ya has trabajado con ellas. En caso de que no, lo primero que deberias hacer es bajarte el Pentaho Design Studio, que es lo que se utiliza para editarlas.

    Aquí tienes información sobre cómo utilizarlo: http://wiki.pentaho.com/display/Serv.../Design+Studio

    ¡Saludos!

  9. #9
    Join Date
    Dec 2008
    Posts
    132

    Default

    ok muchas gracias, ahora mismo lo checo

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Privacy Policy | Legal Notices | Safe Harbor Privacy Policy

Copyright © 2005 - 2019 Hitachi Vantara Corporation. All Rights Reserved.