Maison >développement back-end >Golang >Comment convertir les horodatages int96 des fichiers Parquet en horodatages Go ?
Casting int96 Timestamp from Parquet to Go
Lorsque vous traitez des valeurs d'horodatage int96 stockées dans des fichiers Parquet, il est nécessaire de convertir ces valeurs en horodatages dans les applications Golang. Ce problème peut être rencontré lorsque vous travaillez avec des pipelines de données ou des cadres d'analyse.
Comprendre l'horodatage int96
L'horodatage Int96 est une valeur de 12 octets qui représente un horodatage avec une précision de la microseconde. . Les 8 premiers octets contiennent l'heure en nanosecondes à partir de minuit, tandis que les 4 derniers octets représentent le numéro du jour julien (JDN).
Conversion en horodatage dans Go
Vers convertissez un horodatage int96 en un horodatage Go, les étapes suivantes sont essentiel :
Extraire les valeurs d'heure et de date :
Inverser l'ordre des octets :
Convertir le temps en nanosecondes :
Convertir la date en JDN :
Combinez l'heure et la date :
Exemple de code :
Pour illustrer le processus de diffusion dans Go, considérons le exemple suivant :
import ( "time" ) // Convert Int96ToTimestamp converts an int96 timestamp to a Go timestamp (time.Time). func ConvertInt96ToTimestamp(int96Bytes []byte) (time.Time, error) { // Extract the time and date parts. timeBytes := int96Bytes[:8] dateBytes := int96Bytes[8:] // Reverse the byte order. reverseBytes(timeBytes) reverseBytes(dateBytes) // Convert time to nanoseconds. timeInt64, err := Int64FromBytes(timeBytes) if err != nil { return time.Time{}, err } // Convert date to JDN. dateUint32, err := Uint32FromBytes(dateBytes) if err != nil { return time.Time{}, err } // Create a Go time.Time object. timestamp := time.Date(int(dateUint32), 1, 1, 0, 0, 0, int64(timeInt64), time.UTC) return timestamp, nil }
En implémentant ces étapes de conversion, les applications Golang peuvent gérer efficacement les valeurs d'horodatage int96 rencontrées dans Données Parquet et transformez-les en horodatages Go pour un traitement ou une analyse ultérieure.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!