Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
alex_j
Frequent Visitor

Migración de una consulta SQL a Power Bi (tasas de retención)

Hola a todos. Comencé a migrar algunos informes de Excel a Power BI y uno de ellos era la tasa de retención.

Fue escrito en SQL y básicamente tengo una tabla con toda la información que quiero. El código SQL para generar este informe es algo como esto:

IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='#TotalOrders' and xtype='U')
	CREATE TABLE #TotalOrders 
	(
	email VARCHAR(50),
	orderdatetime VARCHAR(50),
	shippingcountry VARCHAR(50),
	orderreference VARCHAR(50),
	fraudulent BIT
	)

INSERT INTO #TotalOrders
SELECT email, orderdatetime,shippingcountry,orderreference,fraudulent FROM ORDERS

GO

DECLARE @date AS Date
DECLARE @months AS INTEGER
-----------------------------
SET @date = CONVERT(DATETIME, '2020-08-01')
SET @months = -1

SELECT @date AS 'Date',
COUNT( distinct total.email) AS total,
COUNT( distinct retained.email) AS retained,
SUBSTRING(CAST(ROUND((1.0 * COUNT( distinct retained.email))/ (1.0 * COUNT( distinct total.email)
),4)*100 AS VARCHAR(20)),0,6) + '%' AS pcn

FROM #TotalOrders AS total
LEFT JOIN #TotalOrders AS retained
ON ( total.email = retained.email AND 
CONVERT(datetime,retained.orderdatetime, 103) BETWEEN DATEADD(Month,@months,@date)
AND @date AND retained.fraudulent = 0)

WHERE (CONVERT(datetime, total.orderdatetime, 103) BETWEEN 
	DATEADD(Month,2*@months,@date) AND DATEADD(Month, @months,@date))
	AND total.fraudulent = 0

DROP TABLE #TotalOrders

Y el resultado es algo como esto:

Fecha total retenida pcn

2020-08-01 19354 1618 8.360%

Explicando el código SQL, tenemos 2 variables, una para la fecha y los meses.

Por lo tanto, en este ejemplo, recibimos los correos electrónicos de los pedidos de junio (meses * 2) y registramos en julio (meses) cuántos clientes compraron de nuevo.

Si la variable de meses era -2 iríamos 2 meses antes de agosto (abril y mayo) y comprobamos en junio / julio cuántos correos electrónicos se repiten.

¿Cómo puedo crear algo similar a esto con DAX? Sé que tiene capacidades excepcionales, pero todavía me estoy acostumbrando a toda la sintaxis y los métodos.

El modelo de Power BI tiene los mismos nombres y para las variables, la fecha sería MIN(date) - que obtendrá el primer día del mes) y para los meses variables que estoy pensando en usar un parámetro.

¡Apreciamos a todos los que podrían echarme una mano con esto! ¡Que tengan un buen día a todos!

5 REPLIES 5
alex_j
Frequent Visitor

Gracias, los dos. El archivo pbix se puede descargar aquí.

Básicamente, este archivo de ejemplo solo tiene la fecha en que se realizó el pedido y el correo electrónico del usuario (que se ha hash). También hay una columna llamada frauduent, que debe ser filter como 0, bastante simple.

Una vez más, gracias por su ayuda chicos!

No utilice una jerarquía de fechas en el campo orderdatetime. En su lugar, cree una columna calculada que solo tenga el valor de fecha de orderdatetime y, a continuación, agregue una tabla de calendario adecuada que contiene la granularidad necesaria (día, mes, etc.)

Fecha De Pedido - DATEVALUE(test[orderdatetime])
Calendario : CALENDARAUTO()
Mes - MES('Calendario'[Fecha])
lbendlin_0-1599581046034.pnglbendlin_0-1599581221516.png

Hola lbendlin.

Arreglé mi archivo de muestra. En realidad, nuestro archivo original tiene la tabla de datos como usted dijo y me había olvidado de crear la misma tabla en esta. El archivo de enlace es el mismo y se puede descargar aquí.

Realmente espero que ustedes pueden ayudarme en cómo construir la tasa de retención!

v-diye-msft
Community Support
Community Support

Hola @alex_j

Podrías considerar proporcionar tu psídix ficticio que sería útil para nosotros investigarlo más a fondo.

Puede cargarlo en onedrive para la empresa y compartir el enlace aquí. por favor, no se olvide de revelar los resultados esperados y eliminar la información confidencial.

Community Support Team _ Dina Ye
If this post helps, then please consider Accept it as the solution to help the other members find it more
quickly.
lbendlin
Super User
Super User

proporcione datos de muestra en formato utilizable y muestre el resultado esperado.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors