Don't miss your chance to take the Fabric Data Engineer (DP-600) exam for FREE! Find out how by attending the DP-600 session on April 23rd (pacific time), live or on-demand.
Learn moreNext up in the FabCon + SQLCon recap series: The roadmap for Microsoft SQL and Maximizing Developer experiences in Fabric. All sessions are available on-demand after the live show. Register now
Hola
Tengo una cadena de datos [Latest Financials] que se ve así:
{'vat': ['20.00', '85.00.'. 26'], 'participación': {'precio': '426,31', 'num_parties': 4}, 'total': '511,57', 'subtotal': '1705,24', 'drug_test_fees': ['646,00', [['Prueba de mechón de cabello x4 secciones (3 cuero cabelludo, 1 cuerpo)', ['Cannabis', 'Cocaína', 'Opiáceos', 'Anfetamina', 'MDMA (Éxtasis)'], '646.00']]], 'collection_info': [[Ninguno, '145.00']], 'expert_drug_fee': '131.25', 'expert_drug_rate': '105.00', 'alcohol_test_fees': ['670.99', [['Análisis de sangre', ['CDT'], '95.00'], ['Prueba de hebra de cabello x2 secciones (1 cuero cabelludo, 1 cuerpo)», [«FAEE»], «250,99»], [«Ensayo de mechones capilares x2 secciones (1 cuero cabelludo, 1 cuerpo)», [«EtG»], «325,00»]]], «expert_alcohol_fee»: «112,00», «expert_alcohol_rate»: «105,00», «expert_drug_minutes»: 75, «subtotal_expert_fee»: «243,25», «expert_alcohol_minutes»: 64, «collection_info_subtotal»: «145,00», «expert_tests_drugs_subtotal»: «777,25», «expert_tests_alcohol_subtotal»: «782,99»}
Necesito extraer el 646 que aparece después del bit drug_test_fees y varios otros números similares más adelante. Sé cómo hacer esto en DAX pero no en Power Query . Algunas filas no tienen entrada para las tarifas de las pruebas de drogas y puede estar en varias posiciones en la cadena, por lo que debe hacerse mediante coincidencia de texto.
Llegué hasta aquí para que funcione, pero el 646 podría tener 4, 5 o 6 dígitos de largo, por lo que sería posible que fuera variable. Esencialmente, necesito calcular cuántos caracteres hay entre [ y , alrededor de ese número. En DAX, buscaría la primera coma después de la drug_test_fees, pero no puede averiguar cómo Text.PositionOf a partir de drug_test_fees?
= Table.AddColumn(#"Removed Other Columns", "Drug Test Fee", each if Text.PositionOf([Latest Financials],"drug_test_fees")>0 then Text.Range([Latest Financials],Text.PositionOf([Latest Financials],"drug_test_fees")+18,6) else null)
Además, este texto está en un archivo CSV y cuando lo introduzco en Power Query, se ve ligeramente diferente en que el ['646' ahora es [646.
{'IVA': [20.0, 74.51], 'participación': {'precio': 372.56, 'num_parties': 4}, 'total': 447.07, 'subtotal': 1490.25, 'drug_test_fees': [646.0,
Tal vez haya una manera más fácil de hacer esto.
Agradezco cualquier consejo
Micrófono
@masplin < Intente usar este código m en la columna personalizada
= Table.AddColumn(#"PreviousStepName", "Tarifa de prueba de drogas", cada uno
dejar
sourceText = [Últimos datos financieros],
startPos = Text.PositionOf(sourceText, "drug_test_fees"),
afterKey = Text.Middle(sourceText, startPos + Text.Length("drug_test_fees") + 4),
feeText = Text.BeforeDelimiter(afterKey, ",")
en
if startPos > 0 then Text.Trim(Text.Select(feeText, {"0".." 9", "."})) else null
)
Eso es genial, pero solo para entender
Inicie pos encuentre dónde está la "d"
¿Afterkey es texto cada vez a la derecha de drug_test_fees + 4 caracteres? por lo que captura el valor numérico
Este es ahora el bit 646.00', [['Prueba de mechón de cabello x4 secciones (3 cuero cabelludo, 1 cuerpo)', ['Cannabis', 'Cocaína', 'Opiáceos', 'Anfetamina', 'MDMA (Éxtasis)'], '646.00']]], 'coll, etc., así que mira a la izquierda de la primera coma y la recorta
Text.select solo selecciona números y "."
Genius muchas gracias
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.