Categories
Uncategorized

Convenciones de nomenclatura



El sitio web de Microsoft enumera estas posibilidades para nombres de objetos

La siguiente tabla muestra ejemplos de algunos nombres de objetos:

< tr>

…………………. ………………………
Tipos de objeto Ejemplos Comentario
Nombre de tabla Ventas Si el nombre de la tabla no contiene espacios u otros caracteres especiales, el nombre no necesita estar entre comillas.
Nombre de la tabla ‘Ventas de Canadá’ Si el nombre contiene espacios, tabulaciones u otros caracteres especiales, encierre el nombre entre comillas simples.
Nombre de columna totalmente calificado Ventas [Cantidad] El nombre de la tabla precede al nombre de la columna, y el el nombre de la columna está entre corchetes.
Nombre de medida totalmente calificado Ventas [Ganancias] El nombre de la tabla precede al nombre de la medida, y el nombre de la medida está entre corchetes. En ciertos contextos, siempre se requiere un nombre completo.
Nombre de columna no calificado [Cantidad] El nombre no calificado es solo el nombre de la columna, entre paréntesis. Los contextos donde puede usar el nombre no calificado incluyen fórmulas en una columna calculada dentro de la misma tabla, o en una función de agregación que está escaneando sobre la misma tabla.
Columna totalmente calificada en tabla con espacios ‘Ventas de Canadá’ [Cantidad] El nombre de la tabla contiene espacios, por lo que debe estar entre comillas simples.
Nombre de medida no calificado [Profit] Las medidas no tienen un vínculo real con las tablas y deben nombrarse sin referencia a la tabla en la que se encuentran

Las 2 opciones en amarillo no deben usarse. El nombre de una columna no calificada se puede confundir con el nombre de una medida. Un nombre de medida totalmente calificado siempre se puede confundir con el nombre de una columna.


El código DAX funcionará, incluso si no se cumplen estos estándares de nombres. El problema es que el código se vuelve mucho más difícil de entender. Poder entender su código, tanto cuando lo escribe como cuando regresa seis meses después, es algo muy valioso. Use una convención de nomenclatura.



Categories
Uncategorized

Eliminar el pivote de las tablas dinámicas



Tomé este ejemplo de una pregunta que respondí en el formulario de Microsoft. La persona que publicó estaba teniendo problemas para crear un informe. Esta es la tabla de datos que estaban usando.

Statement L1Statement L2Order L1Order L2Unique Key
14. Profit before tax14. Profit before tax111
15. CIT15. CIT222
16. Deferred tax16. Deferred tax333
17. Profit after tax17. Profit after tax444
17. Profit after tax% Profit455

Puede ver que los datos tienen la forma de una tabla dinámica. Hay diferentes columnas para el mismo tipo de datos, como la “declaración”, por lo que escribir cualquier tipo de código DAX o usar los datos en gráficos se vuelve bastante complicado. Escribían medidas para extraer valores de las diferentes columnas y luego intentaban usar esos valores en los cálculos. Aquí están los mismos datos “no povited”

Es mucho más fácil trabajar con estos datos y algunos de los gráficos con los que estaban luchando simplemente "se cayeron" cuando arrastró los campos de los nuevos datos a un gráfico de tabla dinámica.



Categories
Uncategorized

El Evangelio según Russo y Ferrari

Usa un esquema en estrella. Siempre.
Ocultar todas las columnas en la tabla de hechos.
Solo muestre medidas en la tabla de hechos.
Exponga atributos visibles solo a través de dimensiones.
Pruebe sus fórmulas en pequeños conjuntos de datos que puede dominar y comprender de un vistazo.
Estas son reglas de oro.

Los modeladores expertos pueden decidir anular las reglas, pero lo hacen con una comprensión profunda y exhaustiva de lo que están tratando. Los modeladores sin experiencia a menudo eligen evitar las reglas. Hacerlo es emocionante, si quieres sentir la emoción de pasear por un laberinto de complejidad totalmente inexplorado y peligroso. Por otro lado, si desea implementar un modelo de sonido para sus clientes, entonces obedecer estas simples reglas es un muy buen paso en la dirección correcta.
https://community.powerbi.com/t5/Desktop/Filter-based-on-date-range-in-another-table/mp/844013#M405291

Categories
Uncategorized

Wish Upon a Star

Learning how to shape your data model into star schemas will be like having your own fairy godmother. Many of the problems analyzing and reporting on your data will vanish with a sweep of her wand.

Categories
Uncategorized

The Data Rainbow Path

Transform the wild jungle of your data into golden results by managing the path data takes thru your business.

Assessment

Acquisition

Accuracy

Validation

Currency

Data Modeling for reporting

Public service BI

Categories
Uncategorized

Agile BI is a Process, not a Project

Categories
Uncategorized

UnPovit Povit Tables


I took this example from a question I answered on the Microsoft form. The person who posted was having trouble creating a report. This is the data table they were using.


Statement L1Statement L2Order L1Order L2Unique Key
14. Profit before tax14. Profit before tax111
15. CIT15. CIT222
16. Deferred tax16. Deferred tax333
17. Profit after tax17. Profit after tax444
17. Profit after tax% Profit455

You can see that the data is in the form of a pivot table. There are different columns for the same type of data, like the “statement”, so writing any sort of DAX code or using the data in graphics becomes quite complicated. They were writing measures to extract values from the different columns and then trying to use those values in calculations.

Here is the same data “un-povited”

This image has an empty alt attribute; its file name is data_unpovited-1024x599.png

This data is much easier to work with and some of the graphics they were struggling with just “fell out” when you dragged the fields from the new data onto a pivot table graphic.

Categories
Uncategorized

Use Variables



Here is a sample measure from a client’s Power BI file
Confirmed =
CALCULATE (
    COUNTROWS ( ‘happyfit schedule’ ),
    ‘ happyfit  schedule'[is_accept] = TRUE,
    ‘ happyfit  schedule'[is_cancel] = FALSE,
    ‘ happyfit  schedule'[is_complete] = FALSE,
    ‘ happyfit  schedule'[is_decline] = FALSE,
    ‘ happyfit  schedule'[is_no_show] = FALSE,
    ‘ happyfit  schedule'[is_noresponse] = 0,
    ‘ happyfit  schedule'[province_id] = 1,
    DATESBETWEEN (
        ‘ happyfit  schedule'[date],
        DATE ( 2019, 06, 01 ),
        DATE ( 2019, 06, 30 )
    )
) + 0

There are lots of issues with this code, but we will start with adding a couple of variables.

Confirmed =
VAR month_start =
    DATE ( 2019, 06, 01 )
VAR month_end =
    DATE ( 2019, 06, 30 )
VAR row_count =
    CALCULATE (
        COUNTROWS ( ‘ happyfit  schedule’ ),
        ‘ happyfit  schedule'[is_accept] = TRUE,
        ‘ happyfit  schedule'[is_cancel] = FALSE,
        ‘ happyfit  schedule'[is_complete] = FALSE,
        ‘ happyfit  schedule'[is_decline] = FALSE,
        ‘ happyfit   schedule'[is_no_show] = FALSE,
        ‘ happyfit  schedule'[is_noresponse] = 0,
        ‘ happyfit  schedule'[province_id] = 1,
        DATESBETWEEN ( ‘ happyfit  schedule'[date], month_start, month_end )
    ) + 0
RETURN
    row_count



Categories
Uncategorized

Format your Code


Here is a measure from a client’s Power BI file (with some of the names changed to protect the innocent). I went to DaxFormatter.com and pasted it in.


Then I pressed the big red button “Format”. This is what I got back.

There are so many advantages to code that looks like this that I can’t begin to list them. The most surprising advantage: looking at formatted code teaches you a lot about how to write DAX.

Categories
Uncategorized

A Calendar Table



Now that we have our data in a nice star schema let’s add a couple of calendar tables to help us work with the dates.

Some people might add just one calendar table and have two relationships to the fact table, one active and one disabled. They then switch which relationship is active when writing their DAX measures. I prefer to just add one calendar table for each date I want to work with. It doesn’t take up that much space and it simplifies my DAX code.

You can get a calendar table from many places on the internet. Here is a good one: Avi Singh’s “Ultimate Calendar Table” https://www.youtube.com/watch?v=zXZAZrUwUe8&t=35s

This ends the example for Slogan 1. We could have done this work in Power Query instead of SQL. There are always many ways to do anything in Power BI. We will use this same example to illustrate some of the other slogans.