martes, 25 de junio de 2013

Parámetros múltiples con SSRS

Recientemente he tenido que preparar unos informes en Reporting Services que requerían seleccionar un parámetro múltiple, similar al que se puede ver en la imagen a continuación:

En principio, lo lógico es considerar realizar una variación en la consulta que alimenta este reporte, en el sentido de añadir un IN a continuación de la clausula WHERE:

Pues bien, cuando utilizamos como fuente un procedimiento almacenado es necesario realizar algunos pasos más para que podamos tener nuestro filtro múltiple.

En primer lugar hay que generar una función en T-SQL que nos permita separar las distintas partes de una cadena que será lo que enviemos como parámetro:


CREATE FUNCTION [dbo].[FnSplit]
(
--@List nvarchar(2000),
--@SplitOn nvarchar(5)
@List nvarchar(MAX),
@SplitOn nvarchar(MAX)
)
RETURNS @RtnValue table
(
Id int identity(1,1),
Value nvarchar(100)
)
AS
BEGIN
While (Charindex(@SplitOn,@List)>0)
Begin
Insert Into @RtnValue (value)
Select
Value = ltrim(rtrim(Substring(@List,1,Charindex(@SplitOn,@List)-1)))
Set @List = Substring(@List,Charindex(@SplitOn,@List)+len(@SplitOn),len(@List))
End

Insert Into @RtnValue (Value)
Select Value = ltrim(rtrim(@List))
Return
END
Una vez creada esta función:

necesitaremos modificar la clausula WHERE de nuestra consulta principal:



 Como podéis ver reemplazamos la sentencia:

--BANCO_MAEB IN (@BANCO_MAEB)

 por:

(BANCO_MAEB) collate database_default IN(SELECT Value FROM dbo.FnSplit(@BANCO_MAEB,','))

 
Por último, debemos hacer algunos cambios en nuestros reportes:

Nos aseguramos que nuestro parámetro admite entradas múltiples:



En las propiedades de nuestro dataset principal configuramos la sección de parámetros, tal y como se muestra a continuación:


Como nuestro parámetro debe aceptar múltiples entradas lo configuramos haciendo uso de la función Join para vincular los parámetros múltiples separados con una coma:

=Join(Parameters!BANCO_MAEB.Value,",")


Y ya estaría. Parece un poco enrevesado pero en cuanto tengáis la función FnSplit creada, el resto es bastante sencillo.


Saludos.

José Antonio.

miércoles, 19 de junio de 2013

Segmentación de clientes



Dentro de las técnicas de análisis y de minería de datos una de las más famosas es la segmentación, especialmente la segmentación de clientes. Es curioso, pero la mayor parte de las veces que he hablado de segmentación con algún cliente en el que he trabajado o con compañeros de profesión me da la sensación que para ellos segmentar es aplicar un sofisticado algoritmo, como el k-means clustering que, de alguna manera, agruparía nuestros clientes en segmentos perfectamente homogéneos.

Es también curioso que en los ejemplos de cómo aplicar la segmentación de clientes se utilizan BBDD del estilo AdventureWorks de Microsoft, donde se posee información muy detallada de clientes como número de hijos, ingresos anuales, tipo de empleo, nivel de estudios, número de coches que posee…


                                          Típico ejemplo naif de segmentación aplicada a la BBDD de AdventureWorks
 
Evidentemente esto no es nunca así, ni tan siquiera en EEUU donde las leyes son mucho más permisivas con el uso de información para marketing.
Segmentar por información demográfica o a nivel demográfico (código postal, sección censal,…) puede ser interesante pero, no provee información a nivel de cliente sino, en el mejor de los casos  provee información agregada a nivel de vecindario.

La información realmente relevante para un negocio no va a venirnos dada de ninguna fuente de datos externa, por mucho dinero que nos cueste. A menos que hablemos de un negocio recién arrancado, nuestras fuentes más valiosas de conocimiento vendrán de los sistemas de las empresa (operacionales, sistemas de CRM, Data Warehouses,…).
Las verdaderas perlas de conocimiento de un negocio, como son los hábitos de compra de nuestros clientes, solo aparecen después de años de actividad y cientos de miles de transacciones donde lenta e inexorablemente se irán perfilando patrones o tendencias, es decir, información extrapolable a conocimiento dentro del ruido general.

Con información de este estilo más un conocimiento muy profundo del mercado, canales y la competencia donde trabajas es con lo que se pueden hacer campañas de marketing directo que garanticen un mínimo de éxito y rentabilidad.
 
Volviendo al tema de la segmentación, hay agrupaciones que surgen de forma “natural” en función del negocio en el que trabajamos. En el mundo del retailing es muy común encontrarse con algunas de este estilo:
 
 
Es importante, como explicaré en una entrada posterior, partir de una adecuada definición de categorías y subcategorías de productos/servicios. Estos son al fin y al cabo nuestros outputs a nivel de negocio. A medida que nuestros clientes los van adquiriendo nos permiten segmentar a estos últimos en clientes de productos de salud, belleza, fitness,…
Con el tiempo, la información de hábitos de compra, respuesta a campañas o promociones, gestiones con atención al cliente, más otra información de carácter financiero nos permitirán obtener el llamado “customer value” de nuestro cliente.
Dentro de mi experiencia en clientes del sector retailing, tal vez las casuísticas más interesantes se me han presentado en el mundo del Home Shopping o TeleTienda. Este tipo de retailing es bastante distinto al que podríamos llamar más tradicional, pero también mucho más dinámico e interesante.
¿Qué caracteriza este tipo de canal? ¿En qué se diferencia de aquellos más convencionales?
Bien, como leí recientemente en un libro sobre el tema de Nick Romer: “Make millions selling on QVC” vender por un canal de Teletienda es como tener tu producto al lado de la caja registradora, donde cientos de miles de personas están de pie observándolo mientras esperan en la cola para pagar.
Es un área interesante, pero es compleja, influye mucho la ciencia del comportamiento, como veremos en próximas entradas.

Les adelantaré aquí que influye mucho lo que se denomina el efecto expectativa. Las expectativas influyen,en gran medida, en las percepciones y el comportamiento. Si explicamos a un nutrido grupo de personas que un producto nuevo va a cambiar sus vidas (su aspecto físico, su vitalidad o su calidad de vida), un número significativo de ellas experimentará ese cambio.  La creencia actúa así como un instrumento que ayuda a provocar el cambio. Con un convincente infomercial una persona puede creer que algo va a ocurrir (adelgazar, moldear sus abdominales,…), la idea por sí misma crea esa posibilidad.

Es importante pues, a través de los canales correspondientes, convencer y establecer las expectativas de un modo creíble al destinatario en lugar de dejar que éstos lleguen a conclusiones sesgadas.

En resumen,
-         La segmentación es un negocio “real” debe estar basada en variables de comportamiento de compra del usuario, las variables sociodemográficas, en caso de poderse obtener, deben servir para complementar el perfil de nuestros clientes.
-        Muchas veces, la segmentación de nuestros clientes vendrá condicionada por la categorización que tengamos en nuestro portfolio de productos.
-         Para emprender acciones comerciales de marketing directo, necesitaremos poder puntuar a nuestros clientes a través de KPI’s o indicadores que midan principalmente la rentabilidad de nuestro clientes. Es necesario calcular un customer value.
-         La venta de Home Shopping es un tipo de retailing muy característico relativamente poco estudiado y que requiere de un conocimiento de ciencias del comportamiento.