Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola
Tengo el siguiente código
Transactions Last FY =
VAR _selectedCurrency = SELECTEDVALUE('Selected Currency'[Currency Type])
VAR _selectedPeriod = SELECTEDVALUE('Selected Period'[Period Type])
VAR _filter =
SWITCH(_selectedPeriod,
"Last Month",
FILTER ( ALL ('Date Table'[Is Last Year Last Month]), 'Date Table'[Is Last Year Last Month] = TRUE() ),
"Current Month",
FILTER( ALL ( 'Date Table'[Is Last Year Current Month] ), 'Date Table'[Is Last Year Current Month] = TRUE() ),
"Quarter to Date",
FILTER( ALL ( 'Date Table'[Is In Last FQTD] ), 'Date Table'[Is In Last FQTD] = TRUE() ),
"Last Month Year to Date",
FILTER( ALL ( 'Date Table'[Is Complete Fiscal Month of Last FY] ), 'Date Table'[Is Complete Fiscal Month of Last FY] = TRUE() ),
"Year to Date",
FILTER ( ALL ( 'Date Table'[Is In Last FYTD] ), 'Date Table'[Is In Last FYTD] = TRUE() )
)
RETURN
SWITCH(
_selectedCurrency,
"Group Currency", CALCULATE ( [Transactions Last FY (Local Currency)], _filter ),
"Local Currency", CALCULATE ( [Transactions Last FY (Group Currency)], _filter ),
"Select a single currency type" )
Esto arroja error True/False expresión debe referirse exactamente a una columna.
¿Dónde está el error en el código?
Gracias
Solved! Go to Solution.
¿ @EBGAL
El problema principal aquí es la variable _filter y cómo se usa.
¿Cómo solucionar esto?
Primero, como recomendación general, es posible que desee crear submedidas, para preservar su cordura. 🙂
De todos modos, aquí hay algunas ideas:
Opción 1: Crear una tabla de filtros condicionales con FILTER en su lugar
Dentro de la variable _filter, cree una unión cruzada de todas las combinaciones de las 5 columnas booleanas 'Tabla de fechas' y, a continuación, filtre esta tabla en función de _selectedPeriod. Además, debe agregar REMOVEFILTERS ( 'Tabla de fechas') como un argumento dentro de CALCULATE.
Además, para una expresión booleana,
Entonces, en lugar de escribir 'Tabla de fechas'[Es el último año el mes pasado] = VERDADERO (), puede escribir 'Tabla de fechas'[Es el último año del mes pasado].
No me molesté en crear ninguna submedida aquí, pero esto ilustra el principio:
Transactions Last FY =
VAR _selectedCurrency =
SELECTEDVALUE ( 'Selected Currency'[Currency Type] )
VAR _selectedPeriod =
SELECTEDVALUE ( 'Selected Period'[Period Type] )
VAR _filter =
FILTER (
ALL (
'Date Table'[Is Last Year Last Month],
'Date Table'[Is Last Year Current Month],
'Date Table'[Is In Last FQTD],
'Date Table'[Is Complete Fiscal Month of Last FY],
'Date Table'[Is In Last FYTD]
),
SWITCH (
_selectedPeriod,
"Last Month", 'Date Table'[Is Last Year Last Month],
"Current Month", 'Date Table'[Is Last Year Current Month],
"Quarter to Date", 'Date Table'[Is In Last FQTD],
"Last Month Year to Date", 'Date Table'[Is Complete Fiscal Month of Last FY],
"Year to Date", 'Date Table'[Is In Last FYTD]
)
)
RETURN
CALCULATE (
SWITCH (
_selectedCurrency,
"Group Currency", [Transactions Last FY (Group Currency)],
"Local Currency", [Transactions Last FY (Local Currency)],
"Select a single currency type"
),
_filter,
REMOVEFILTERS ( 'Date Table' )
)
Opción 2: Utilice SWITCH para elegir entre 5 expresiones diferentes según el tipo de período.
Haciéndolo de esta manera, recomendaría una submedida Transactions Last FY Base:
Transactions Last FY Base =
VAR _selectedCurrency =
SELECTEDVALUE ( 'Selected Currency'[Currency Type] )
RETURN
SWITCH (
_selectedCurrency,
"Group Currency", [Transactions Last FY (Group Currency)],
"Local Currency", [Transactions Last FY (Local Currency)],
"Select a single currency type"
)
Transactions Last FY =
VAR _selectedPeriod =
SELECTEDVALUE ( 'Selected Period'[Period Type] )
RETURN
SWITCH (
_selectedPeriod,
"Last Month",
CALCULATE (
[Transactions Last FY Base]
'Date Table'[Is Last Year Last Month],
REMOVEFILTERS ( 'Date Table' )
),
"Current Month",
CALCULATE (
[Transactions Last FY Base],
'Date Table'[Is Last Year Current Month],
REMOVEFILTERS ( 'Date Table' )
),
"Quarter to Date",
CALCULATE (
[Transactions Last FY Base],
'Date Table'[Is In Last FQTD],
REMOVEFILTERS ( 'Date Table' )
),
"Last Month Year to Date",
CALCULATE (
[Transactions Last FY Base],
'Date Table'[Is Complete Fiscal Month of Last FY],
REMOVEFILTERS ( 'Date Table' )
),
"Year to Date",
[Transactions Last FY Base],
'Date Table'[Is In Last FYTD],
REMOVEFILTERS ( 'Date Table' )
)
)
Opción 3: ¿Usar grupos de cálculo?
Puede transferir la lógica de las diversas instrucciones SWITCH a grupos de cálculo, ciertamente para la selección Tipo de período.
Es muy posible que haya malinterpretado algo, ¡así que por favor vuelva a publicar si estos no están dando los resultados esperados!
Saludos
Owen
¿ @EBGAL
El problema principal aquí es la variable _filter y cómo se usa.
¿Cómo solucionar esto?
Primero, como recomendación general, es posible que desee crear submedidas, para preservar su cordura. 🙂
De todos modos, aquí hay algunas ideas:
Opción 1: Crear una tabla de filtros condicionales con FILTER en su lugar
Dentro de la variable _filter, cree una unión cruzada de todas las combinaciones de las 5 columnas booleanas 'Tabla de fechas' y, a continuación, filtre esta tabla en función de _selectedPeriod. Además, debe agregar REMOVEFILTERS ( 'Tabla de fechas') como un argumento dentro de CALCULATE.
Además, para una expresión booleana,
Entonces, en lugar de escribir 'Tabla de fechas'[Es el último año el mes pasado] = VERDADERO (), puede escribir 'Tabla de fechas'[Es el último año del mes pasado].
No me molesté en crear ninguna submedida aquí, pero esto ilustra el principio:
Transactions Last FY =
VAR _selectedCurrency =
SELECTEDVALUE ( 'Selected Currency'[Currency Type] )
VAR _selectedPeriod =
SELECTEDVALUE ( 'Selected Period'[Period Type] )
VAR _filter =
FILTER (
ALL (
'Date Table'[Is Last Year Last Month],
'Date Table'[Is Last Year Current Month],
'Date Table'[Is In Last FQTD],
'Date Table'[Is Complete Fiscal Month of Last FY],
'Date Table'[Is In Last FYTD]
),
SWITCH (
_selectedPeriod,
"Last Month", 'Date Table'[Is Last Year Last Month],
"Current Month", 'Date Table'[Is Last Year Current Month],
"Quarter to Date", 'Date Table'[Is In Last FQTD],
"Last Month Year to Date", 'Date Table'[Is Complete Fiscal Month of Last FY],
"Year to Date", 'Date Table'[Is In Last FYTD]
)
)
RETURN
CALCULATE (
SWITCH (
_selectedCurrency,
"Group Currency", [Transactions Last FY (Group Currency)],
"Local Currency", [Transactions Last FY (Local Currency)],
"Select a single currency type"
),
_filter,
REMOVEFILTERS ( 'Date Table' )
)
Opción 2: Utilice SWITCH para elegir entre 5 expresiones diferentes según el tipo de período.
Haciéndolo de esta manera, recomendaría una submedida Transactions Last FY Base:
Transactions Last FY Base =
VAR _selectedCurrency =
SELECTEDVALUE ( 'Selected Currency'[Currency Type] )
RETURN
SWITCH (
_selectedCurrency,
"Group Currency", [Transactions Last FY (Group Currency)],
"Local Currency", [Transactions Last FY (Local Currency)],
"Select a single currency type"
)
Transactions Last FY =
VAR _selectedPeriod =
SELECTEDVALUE ( 'Selected Period'[Period Type] )
RETURN
SWITCH (
_selectedPeriod,
"Last Month",
CALCULATE (
[Transactions Last FY Base]
'Date Table'[Is Last Year Last Month],
REMOVEFILTERS ( 'Date Table' )
),
"Current Month",
CALCULATE (
[Transactions Last FY Base],
'Date Table'[Is Last Year Current Month],
REMOVEFILTERS ( 'Date Table' )
),
"Quarter to Date",
CALCULATE (
[Transactions Last FY Base],
'Date Table'[Is In Last FQTD],
REMOVEFILTERS ( 'Date Table' )
),
"Last Month Year to Date",
CALCULATE (
[Transactions Last FY Base],
'Date Table'[Is Complete Fiscal Month of Last FY],
REMOVEFILTERS ( 'Date Table' )
),
"Year to Date",
[Transactions Last FY Base],
'Date Table'[Is In Last FYTD],
REMOVEFILTERS ( 'Date Table' )
)
)
Opción 3: ¿Usar grupos de cálculo?
Puede transferir la lógica de las diversas instrucciones SWITCH a grupos de cálculo, ciertamente para la selección Tipo de período.
Es muy posible que haya malinterpretado algo, ¡así que por favor vuelva a publicar si estos no están dando los resultados esperados!
Saludos
Owen
Hola Owen,
Estoy teniendo un problema similar. Permítanme narrar lo mismo.
datos: https://www.icmagroup.org/membership/List-of-principal-delegates-2/
En Power Query (Get & Transform) producirá 4 columnas basadas en texto, a saber: Empresa, Nombre, Apellido, Jurisdicción del miembro. Creé una nueva columna con el nombre "Nombre completo" concatenando Nombre y Apellido y eliminando Nombre y Apellido del conjunto de datos. Hay un total de 634 registros (el recuento de registros puede variar ya que es una URL en vivo)
Mi objetivo:
Filtrar el nombre de la empresa por Jurisdicción miembro mediante la condición de filtrado de la columna Empresa. He aquí un ejemplo:
Total Count of Member Banks of Type LLP =
CALCULATE(
COUNT( ICMA_Members[Company] ),
FILTER( ICMA_Members, CONTAINSSTRING( ICMA_Members[Company], TRIM("LLP") ) )
)
Ahora hay otras condiciones de filtrado como LLC, PLC, Limited, Ltd, B.V. y para cada una de ellas si creo una Medida, entonces sería una gran lista del mismo tipo de medidas. Así que pensé en recopilar toda esta actividad de filtrado en una sola medida DAX como la siguiente:
Total Count of Member Banks of Each Type =
VAR Filter_TypeAG =
FILTER( ICMA_Members,
(
CONTAINSSTRING( ICMA_Members[Company], " AG " ) ||
CONTAINSSTRING( ICMA_Members[Company], " AG" )
)
)
VAR Filter_TypeBV =
FILTER( ICMA_Members, CONTAINSSTRING( ICMA_Members[Company], TRIM("B.V.") ) )
VAR Filter_TypeGmbH =
FILTER( ICMA_Members, CONTAINSSTRING( ICMA_Members[Company], TRIM( "GmbH" ) ) )
VAR Filter_TypeLimited =
FILTER( ICMA_Members,
(
CONTAINSSTRING( ICMA_Members[Company], TRIM("Limited") ) ||
CONTAINSSTRING( ICMA_Members[Company], TRIM("Ltd") )
)
)
VAR Filter_TypeLLC =
FILTER( ICMA_Members, CONTAINSSTRING( ICMA_Members[Company], TRIM("LLC") ) )
VAR Filter_TypeLLP =
FILTER( ICMA_Members, CONTAINSSTRING( ICMA_Members[Company], TRIM("LLP") ) )
VAR Filter_TypembB =
FILTER( ICMA_Members, CONTAINSSTRING( ICMA_Members[Company], TRIM("mbB") ) )
VAR Filter_TypeNV =
FILTER( ICMA_Members, CONTAINSSTRING( ICMA_Members[Company], TRIM("N.V.") ) )
VAR Filter_TypePLC =
FILTER( ICMA_Members,
(
CONTAINSSTRING( ICMA_Members[Company], "PLC" ) ||
CONTAINSSTRING( ICMA_Members[Company], "p.l.c" )
)
)
VAR Filter_TypeSA =
FILTER( ICMA_Members,
(
CONTAINSSTRING( ICMA_Members[Company], TRIM("S.A.") ) ||
CONTAINSSTRING( ICMA_Members[Company], " SA " ) ||
CONTAINSSTRING( ICMA_Members[Company], " SA" )
)
)
VAR Filter_TypeSpA =
FILTER( ICMA_Members,
(
CONTAINSSTRING( ICMA_Members[Company], " S.p.A." ) ||
CONTAINSSTRING( ICMA_Members[Company], " SpA" ) ||
CONTAINSSTRING( ICMA_Members[Company], " S.P.A." )
)
)
VAR Filter_TypeSE =
FILTER( ICMA_Members, CONTAINSSTRING( ICMA_Members[Company], " SE " ) )
VAR Filter_TypeOthers =
FILTER( ICMA_Members,
NOT(
(
CONTAINSSTRING( ICMA_Members[Company], TRIM( "Limited" ) ) ||
CONTAINSSTRING( ICMA_Members[Company], TRIM( "Ltd" ) ) ||
CONTAINSSTRING( ICMA_Members[Company], TRIM( "LLP" ) ) ||
CONTAINSSTRING( ICMA_Members[Company], "PLC" ) ||
CONTAINSSTRING( ICMA_Members[Company], "p.l.c" ) ||
CONTAINSSTRING( ICMA_Members[Company], TRIM( "B.V." ) ) ||
CONTAINSSTRING( ICMA_Members[Company], TRIM( "N.V." ) ) ||
CONTAINSSTRING( ICMA_Members[Company], TRIM( "S.A." ) ) ||
CONTAINSSTRING( ICMA_Members[Company], TRIM( " SA " ) ) ||
CONTAINSSTRING( ICMA_Members[Company], " S.p.A." ) ||
CONTAINSSTRING( ICMA_Members[Company], " SpA" ) ||
CONTAINSSTRING( ICMA_Members[Company], " S.P.A" ) ||
CONTAINSSTRING( ICMA_Members[Company], TRIM( "AG" ) ) ||
CONTAINSSTRING( ICMA_Members[Company], TRIM( "GmbH" ) ) ||
CONTAINSSTRING( ICMA_Members[Company], TRIM( "mbB" ) ) ||
CONTAINSSTRING( ICMA_Members[Company], " SE " )
)
)
)
RETURN
CALCULATETABLE(
VALUES(
SWITCH(
TRUE(),
Filter_TypeAG, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypeAG ),
Filter_TypeBV, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypeBV ),
Filter_TypeGmbH, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypeGmbH ),
Filter_TypeLimited, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypeLimited ),
Filter_TypeLLC, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypeLLC ),
Filter_TypeLLP, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypeLLP ),
Filter_TypembB, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypembB ),
Filter_TypeNV, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypeNV ),
Filter_TypePLC, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypePLC ),
Filter_TypeSA, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypeSA ),
Filter_TypeSE, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypeSE ),
Filter_TypeSpA, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypeSpA ),
Filter_TypeOthers, CALCULATE( COUNT( ICMA_Members[Company] ), Filter_TypeOthers )
)
)
)
El mensaje de error correspondiente que veo en la parte inferior se pega como una captura de pantalla:
Por favor, avíseme cuál de las opciones mencionadas por usted en el paso anterior sería aplicable para mi caso o lo tengo planeado de una manera diferente.
La parte 2 del problema es colocar la salida de cada uno de estos recuentos para colocarla en una tarjeta visual separada o en una tarjeta visual de fila múltiple donde Jurisdicción miembro como filtro de informe. La captura de pantalla del visual planificado se adjunta a continuación:
Por favor, ayúdame.
Saludos Riv
Simplemente leyendo sus requisitos, sugeriría un enfoque diferente.
Dado que desea clasificar cada empresa como AG, BV, etc., le sugiero que agregue una columna de texto a su tabla para almacenar estos valores, llamada "Tipo" o similar. Esto le dará un mejor rendimiento que calcularlos sobre la marcha en medida (s), y debería ser más fácil crear las imágenes que desea.
Recomendaría agregar esta columna Tipo en Power Query, pero también podría crear una columna calculada de DAX (usando código similar al que ya ha escrito).
Por favor, vuelva a publicar si es necesario, y un PBIX que funcione ayudaría (si puede compartirlo).
Saludos
Owen
Gracias Owen,
Déjame probar los pasos que mencionaste y publicaré mi progreso sobre eso con seguridad.
Saludos Riv
Ahora quiero mejorar esta lógica y dar al consumidor la opción de elegir los años fiscales para comparar.
He implementado previamente su sugerencia 1, ¿cómo puedo agregar un año dinámico en la lógica?
Gracias
Evan
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |