Forum Discussion
DateTimeOffset data type not understood by Power BI (ODBC Driver 13 for SQL Server)
- 9 years ago
Hi!! I have worked out some Power Query code to produce a function that can be easily applied to any "binary" column of DatetimeOffset data type. This simplifies the process of applying the logic to one or more columns. I hope it helps!!
(to use it, just copy it to a blank query in Power BI and then add a new column to the data by using the "invoke custom function" option)
let DatetimeOffsetParsing = (binaryInput as binary) => let DateTimeOffsetParser = BinaryFormat.ByteOrder( BinaryFormat.Record([ Year = BinaryFormat.SignedInteger16, Month = BinaryFormat.UnsignedInteger16, Day = BinaryFormat.UnsignedInteger16, Hour = BinaryFormat.UnsignedInteger16, Minute = BinaryFormat.UnsignedInteger16, Second = BinaryFormat.UnsignedInteger16, Ticks = BinaryFormat.UnsignedInteger32, ZoneHours = BinaryFormat.SignedInteger16, ZoneMinutes = BinaryFormat.SignedInteger16 ]), ByteOrder.LittleEndian), DateTimeOffset = DateTimeOffsetParser(binaryInput), AsText = Text.Combine({ Text.PadStart(Text.From(DateTimeOffset[Year]), 4, "0"), "-", Text.PadStart(Text.From(DateTimeOffset[Month]), 2, "0"), "-", Text.PadStart(Text.From(DateTimeOffset[Day]), 2, "0"), " ", Text.PadStart(Text.From(DateTimeOffset[Hour]), 2, "0"), ":", Text.PadStart(Text.From(DateTimeOffset[Minute]), 2, "0"), ":", Text.PadStart(Text.From(DateTimeOffset[Second]), 2, "0"), ".", Text.PadStart(Text.From(DateTimeOffset[Ticks] / 100), 2, "0"), " ", if DateTimeOffset[ZoneHours] < 0 then "-" else "+", Text.PadStart(Text.From(Number.Abs(DateTimeOffset[ZoneHours])), 2, "0"), ":", Text.PadStart(Text.From(Number.Abs(DateTimeOffset[ZoneMinutes])), 2, "0")}), myDatetime = DateTimeZone.FromText(AsText), Result = myDatetime in if binaryInput is null then null else Result in DatetimeOffsetParsing
I reproduced your issue.
We have reported it internally. I suggest you use build-in Azure SQL connect to get data currently.
Regards,
Simon Hou
Thanks Simon. The reason I am using ODBC is to use the existing Active Directory system to authenticate users. Is there a way of using the built-in Azure SQL connector with this type of authentication?? That would be better than the ODBC workaround.
So far, it looks to me that the built-in Azure SQL connector just allows for SQL authentication, which might be time consuming if there are many users to register/maintain in the database.
- v-sihou-msft9 years agoMicrosoft Employee
It's true. Currently we can only connect Azure SQL with SQL authentication.
As we have reported this issue, hope it get fixed soon, we will keep you updated.
Regards,