De programacion y otros demonios

viernes, 31 de julio de 2009

Visores OLAP Open Source

Ahora que estoy cambiando el visor de mi modelo OLAP, este artículo ha sido muy interesante, les dejo el enlace al sitio de TodoBI



http://todobi.blogspot.com/2009/07/visores-olap-open-source.html

Etiquetas:

miércoles, 8 de julio de 2009

SSIS - Modificar el lenguaje de programacion por default

Ingresa por el menu superior a Tools -> Options

En el panel izquierdo navega hasta Business Intelligence -> Integration Services Designers como muestra la imagen…






Etiquetas:

SSAS - Como cambiar la propiedad measure group ID


Cree mi grupo de medidas en el cubo de Ventas con el nombre “Ventas”, y después lo cambié por “Basicos”. Luego encontré un artículo interesante de cómo crear un paquete ssis que fuera agregando nuevas particiones a mi cubo a medida que iban llegando nuevos datos a mi tabla de hechos. Las particiones las realizo por trimestres en la dimensión Tiempo, y el paquete ssis lo ejecuto a diario junto con el procesamiento de los cubos, de esta forma me ahorro el trabajo administrativo de tener que estar creando estas particiones ;)


Les dejo el link al artículo del sitio de microsoft (muy bueno) de cómo crear el paquete ssis:


Léame del ejemplo de paquete para sincronizar particiones de Adventure Works DW


Y agrego otro de un sitio web que también es muy bueno:


SSIS: Create Analysis Services partitions from a SSIS package


Mi sentencia SQL al interior del script component que obtiene la lista de particiones es algo como:


SELECT 'DBPruebas' as DataSourceID,
'Ventas' as CubeName,
'Ventas' as CubeID,
'Basicos' as MeasureGroup,
'Basicos' as MeasureGroupID,
'Ventas_' + CONVERT(VARCHAR(10), yearinfo.Trimestre) AS Partition,
'' as SQL,
CONVERT(VARCHAR(10), yearinfo.MinTimeKey) as MinTimeKey,
CONVERT(VARCHAR(10), yearinfo.MaxTimeKey) as MaxTimeKey
FROM (SELECT Trimestre,
(SELECT MIN(IdTiempo) FROM Tiempo t2 WHERE t2.Trimestre = t1.Trimestre) MinTimeKey,
(SELECT MAX(IdTiempo) FROM Tiempo t2 WHERE t2.Trimestre = t1.Trimestre) MaxTimeKey
FROM (SELECT DISTINCT Trimestre FROM Tiempo)
) AS yearinfo
WHERE EXISTS(
SELECT * FROM Ventas
WHERE IdTiempo between yearinfo.MinTimeKey AND yearinfo.MaxTimeKey
)


Como ven el nombre del grupo de medidas y su ID es el mismo “Basicos”, al correr el paquete recibía error:


[Analysis Services Execute DDL Task] Error: Errors in the metadata manager. Either the measure group with the ID of 'Basicos' does not exist in the cube with the ID of 'Ventas', or the user does not have permissions to access the object.


Por permisos no era, revisando las propiedades en mi proyecto AS encontré que el ID y el name del measure group eran diferentes, uno era “Basicos” y el otro “Ventas”; como estaban antes de renombrarlos…..



Para solucionarlo:


Abre tu proyecto AS, en el panel “solution explorer” da clic derecho en el cubo y elige la opción “View Code”. La pagina que se abre es el código xml con la estructura de tu cubo. Antes de hacer estos cambios debes tener un backup de tu proyecto, por si las moscas,… jeje…


Bueno, busca en este archivo el tag <MeasureGroups> allí encontrarás un tag con tu grupo de medidas


<MeasureGroup dwd:design-time-name="32af0376-7539-4d19-83c3-93e504c85bfa">
<ID>VentasID>
<Name>Basicos<Name>

Debes cambiar el ID por el que quieres, en mi caso “Basicos”.

Reemplaza tambien en el tag de <Kpis> , si es que tu cubo tiene:


<Kpis>
<Kpi dwd:design-time-name="61ca593f-f9bd-418d-b8db-80109c38a370">
<ID><KPIID>
<Name>KPI de ventas totales<Name>
<AssociatedMeasureGroupID>BasicosAssociatedMeasureGroupID>

Y listo ¡!! Asunto arreglado…..


Etiquetas:

lunes, 6 de julio de 2009

Error de timeout al modificar tabla

Mientras creaba una Primary Key en la tabla "tablename" con más de 8 millones de registros, me salía error de timeout en sql server 2008, esto no me había sucedido en 2005.... La solución es cambiar la configuración del timeout.


E




Etiquetas:

jueves, 2 de julio de 2009

Error ssis package : the version number in the package is not valid the version number cannot be greater than current version number

Tengo un aplicativo (visual studio 2005) que corre paquetes ssis en (sql server 2005), ahora compramos sql 2008 y debí migrarlos.. el aplicativo dejó de funcionar con error:

The version number in the package is not valid. The version number cannot be greater than current version number.

Dentro del aplicativo ejecuto las ETL por medio de BackgroundWorker con el comando dtexec.. que pasó? porqué dejó de funcionar??

Fácil, en mi máquina de desarrollo tengo las dos versiones instaladas 2005 y 2008.. así que hay dos dtexec:

2005 - C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTExec.exe
2008 - C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe

Para solucionarlo hay varias opciones:

1. Colocar el path completo dentro de mi aplicativo indicando donde se encuentra la utilidad C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe

2. Renombrar la utilidad de la carpeta 2005 a DTExec_old.exe. Esta fué la que yo elegí pues la coexistencia de las dos versiones sólo se dá en mi máquina de desarrollo, en producción sólo tendrá sql server 2008

miércoles, 1 de julio de 2009

Crear setup project con interfaz de cinco radiobutton

Hace rato no escribía,..... y este artículo vale la pena para el regreso. Cree un setup project y dentro de la instalación debía solicitar al usuario elegir la ciudad de entre 5 disponibles, pero los templates que vienen con visual studio 5 sólo traen 4 RadioButtons.. mi amigo google me envió donde estaba la respuesta:

Create custom dialogs for use in your Visual Studio Setup projects
(http://www.codeproject.com/KB/install/vsSetupCustomDialogs.aspx)

Está en inglés y la verdad, me quebré la cabeza tratando de poner los # que eran (no había bajado el código de ejemplo). No pretendo traducirles el artículo sino contarles mi experiencia a grandes razgos, para ver en detalle como cambiar la interfaz lean el artículo.
<< Leer más >>

Etiquetas: