Je travaille sur un projet PowerPivot, et j'ai besoin de convertir une date en un autre format. My SQL Server Analysis Cube me fournit une dimension de time incluant un atsortingbut de date. Je veux le convertir en format dd / mm / aaaa pour créer une reference à une autre source de données (file Excel).
J'ai essayé de le convertir en utilisant des fonctions de date DAX standard, mais ce n'est pas reconnu comme une date, il semble que cela est dû au nom du jour ajouté en tant que préfixe. Comment puis-je le transformer en format dd / mm / aaaa? Comment extraire la sous-string après la virgule?
Merci !
J'ai utilisé datatables suivantes pour tester ma solution.
Vous pouvez utiliser la fonction SEARCH pour find la première instance d'une string. Je peux donc parsingr uniquement la partie de la date avec la formule suivante:
=right([Datefield],(LEN([Datefield])-SEARCH(",",[Datefield])-1))
Il obtient la sous-string commençant par le caractère après la virgule à travers la fin de la string.
La fonction DATEVALUE prend une string qui représente une date et la transforme en date. Je peux combiner cela avec ma fonction précédente:
=datevalue(right([Datefield],(LEN([Datefield])-SEARCH(",",[Datefield])-1)))
Dans l'image ci-dessous, la première colonne est la donnée originale. La deuxième colonne est la fonction qui parsing la sous-string pour la date. La troisième colonne prend la date de cette string de date dans la deuxième colonne. La quasortingème colonne est la formule tout en un à la fois la sous-string et la date-valeur.
Si vous chargez régulièrement datatables de la database, je vous suggère d'utiliser Power Query pour charger des données dans PowerPivot Module.
Voici l'exemple de code qui peut vous donner le résultat.
Les données ressemblent à ceci (tableau 2):
Date Monday, January 12, 2014 Tuesday, January 13, 2014 Wednesday, January 14, 2014
let Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content], #"Split Column by Delimiter" = Table.SplitColumn(Source,"Date",Splitter.SplitTextByEachDelimiter({","}, null, false),{"Date.1", "Date.2"}), #"Change to Date Format" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Date.1", type text}, {"Date.2", type date}}), #"Removed Columns" = Table.RemoveColumns(#"Change to Date Format",{"Date.1"}) in #"Removed Columns"
Comme l'a expliqué @mmarie, la formule suivante fonctionne bien (besoin de quelques modifications):
= datevalue (droite ([Datefield]; (LEN ([Datefield]) – SEARCH (","; [Datefield]) – 1)))