Udostępnij za pomocą


Typy danych

✅ Strumień zdarzeń usługi Azure Stream Analytics ✅ Fabric

Każdy rekord ma powiązany typ danych. Typ danych opisuje (i ogranicza) zestaw wartości, które może zawierać rekord tego typu lub wyrażenie tego typu może wygenerować.

Należy pamiętać, że są to rekordy, które mają typ, a nie kolumny. Każdy rekord kolumny może mieć inny typ. Jeśli będzie to niewidoczne dla większości aplikacji, umożliwia to prostą obsługę scenariuszy dryfu schematu i innych nietypowych wzorców wpisywania.

Obsługiwane typy danych

Poniżej znajduje się lista obsługiwanych typów danych.

Typ danych Opis
bigint Liczby całkowite w zakresie -2^63 (-9,223,372,036,854,775,808) do 2^63-1 (9,223,372,036,854,775,807).
float Liczby zmiennoprzecinkowe w zakresie — od 1,79E+308 do -2,23E-308, 0 i 2,23E-308 do 1,79E+308. Wartości dziesiętne zmiennoprzecinkowe zazwyczaj nie mają dokładnej reprezentacji binarnej. Można doświadczyć utraty precyzji. Nie jest to specyficzne dla usługi Azure Stream Analytics, ale występuje we wszystkich implementacjach liczb zmiennoprzecinkowych.
nvarchar(max) Wartości tekstowe składające się z znaków Unicode. Uwaga: Wartość inna niż maksymalna nie jest obsługiwana.
data/godzina Definiuje datę połączoną z godziną dnia z ułamkami sekund (7 cyfr, precyzja 100 nanosekund), która jest oparta na zegarze 24-godzinnym i względem czasu UTC (przesunięcie strefy czasowej 0).
odrobina Liczba całkowita, która może przyjmować wartość 1, 0 lub NULL. Jest to obsługiwane na poziomie zgodności 1.2 lub nowszym.
rekord Zestaw par nazwa/wartość. Wartości muszą być obsługiwanego typu danych.
macierz Uporządkowana kolekcja wartości. Wartości muszą być obsługiwanego typu danych.

Możesz dołączyć (lub porównać) bigint i typ danych zmiennoprzecinkowych. Będzie działać poprawnie we wszystkich przypadkach, z wyjątkiem przypadku bardzo dużych wartości bigint, których nie można przedstawić.

Uwaga / Notatka

Podczas odczytywania typów danych bigint poza zakresem usługa Azure Stream Analytics obsługuje, zadanie usługi Stream Analytics nie może wykonać deserializacji zdarzeń z komunikatem o błędzie: InputDeserializationError. Możesz wstępnie przetworzyć dane i przekonwertować je na ciąg. Jedną z opcji jest użycie funkcji platformy Azure do wstępnego przetwarzania danych i konwertowania tak dużych liczb całkowitych na ciąg.

Konwersje typu

Są to reguły regulujące konwersje typów danych:

  • Konwersja bez utraty dokładności podczas operacji odczytu i zapisu danych wyjściowych danych wejściowych jest niejawna i zawsze kończy się powodzeniem
  • Precyzja utraty i przepełniania wewnątrz operacji zapisu wyjściowego jest obsługiwana przez skonfigurowane zasady błędów (ustawione na wartość Upuść lub Ponów próbę)
  • Błędy konwersji typów występujące podczas operacji zapisu wyjściowego są obsługiwane przez zasady błędów
  • Błędy konwersji typów występujące podczas operacji odczytu danych wejściowych powodują, że zadanie upuszcza zdarzenie

Utrata dokładności może wystąpić podczas konwertowania wartości na zmiennoprzecinkowe. Nie jest ona specyficzna dla usługi Azure Stream Analytics, ale ogólnie dla typu danych zmiennoprzecinkowych. W związku z tym nie jest uważany za błąd. W przypadku, gdy każda cyfra musi być zachowana, dane powinny być odczytywane jako ciąg.

Rzutowanie danych

Istnieją cztery funkcje w języku SQL przesyłania strumieniowego, które są przydatne do obserwowania i dostosowywania typu danych.

  • CAST : rzutowanie pojedynczej kolumny do danego typu — zadanie zakończy się niepowodzeniem w przypadku błędu konwersji
  • TRY_CAST : rzutowanie pojedynczej kolumny do danego typu — błędy są przekazywane jako NULL. Zobacz walidację danych wejściowych , aby dowiedzieć się, jak najlepiej używać TRY_CAST
  • CREATE TABLE : zdefiniuj pojedynczy jawny schemat dla danych wejściowych. Wiersze z błędami konwersji są usuwane ze strumienia
  • GetType : zwraca typ kolumny

W większości przypadków użycia zalecaną opcją jest użycie TRY_CAST. Ta funkcja chroni przetwarzanie podrzędne przez zapewnienie typu danych wyjściowych, jednocześnie uniemożliwiając utratę danych przez zastąpienie wartości błędu przez wartość NULL. Wiersz nie jest porzucony, a oryginalna wartość nadal może być rzutowana w innej kolumnie.

W przypadku silnych gwarancji zalecaną opcją jest użycie metody CREATE TABLE. Takie podejście umożliwia informowanie o zadaniu schematu danych wejściowych bez ryzyka odchylenia. Kompromisem jest to, że można zdefiniować tylko jeden schemat dla danego danych wejściowych, a niezgodne wiersze zostaną porzucone.

Jeśli to możliwe, wszystkie operacje rzutujące powinny być wykonywane jawnie za pośrednictwem tych funkcji, a nie niejawnie (dyskretnie) w innych funkcjach. Pozwala to uniknąć niezgodności typów, nieoczekiwanych zachowań i błędów wstawiania dla silnie typiowanych danych wyjściowych, takich jak bazy danych SQL. Zobacz walidację danych wejściowych , aby dowiedzieć się, jak chronić główną logikę zapytań przed takimi błędami.

Konwersja na bit

Wartości zostaną przekonwertowane między zmiennoprzecinkami i bitami przy użyciu następujących reguł:

Źródło Do
(BIT) 1 (FLOAT) 1.0
(BIT) 0 (FLOAT) 0.0
(BIT) ZERO (FLOAT) ZERO
(FLOAT) 0.0 (BIT) 0
(FLOAT) dowolna inna wartość (BIT) 1
(FLOAT) ZERO (BIT) ZERO

Mapowania typów i formaty serializacji

Typ danych Plik CSV w pliku Wolumin CSV na wyjęcie Kod JSON w pliku Wyjście w formacie JSON Avro in Avro out
bigint ciąg przekonwertowany na 64-bitową liczbę całkowitą ze znakiem 64-bitowa liczba całkowita ze znakiem przekonwertowana na ciąg przy użyciu kultury zadań liczba: liczba całkowita przekonwertowana na liczbę całkowitą ze znakiem 64-bitowym;

Wartość logiczna: w poziomie zgodności 1.1 i poniżej wartości "false" jest konwertowany na wartość 0, wartość "true" jest konwertowana na 1
liczba: liczba całkowita liczba całkowita ze znakiem 64-bitowym;

Wartość logiczna: w poziomie zgodności 1.1 i poniżej wartości false jest konwertowany na wartość 0, wartość true jest konwertowana na wartość 1
długi
spławik ciąg przekonwertowany na liczbę punktów zmiennoprzecinkowych ze znakiem 64-bitowym 64-bitowy numer punktu zmiennoprzecinkowego przekonwertowany na ciąg przy użyciu kultury zadania liczba: ułamek przekonwertowany na liczbę punktów zmiennoprzecinkowych ze znakiem 64-bitowym liczba: ułamek podwójna liczba zmiennoprzecinkowa przekonwertowana na liczbę punktów zmiennoprzecinkowych ze znakiem 64-bitowym podwójny
nvarchar(max) ciąg ciąg ciąg ciąg ciąg ciąg
data/godzina ciąg przekonwertowany na datę/godzinę po standardzie ISO 8601 ciąg używający standardu ISO 8601 ciąg przekonwertowany na datę/godzinę po standardzie ISO 8601 data/godzina przekonwertowana na ciąg przy użyciu standardu ISO 8601 ciąg przekonwertowany na datę/godzinę po standardzie ISO 8601 data/godzina przekonwertowana na ciąg przy użyciu standardu ISO 8601
bit (poziom zgodności 1.2 lub nowszy) ciąg "true", "false" lub "null" jest konwertowany na wartość całkowitą 1, 0 lub null odpowiadającą przekonwertowany na ciąg "true" lub "false" Wartość logiczna: wartość "false" jest konwertowana na wartość 0, wartość "true" jest konwertowana na wartość 1 Wartość logiczna: wartość logiczna Wartość logiczna: wartość false jest konwertowana na wartość 0, wartość true jest konwertowana na wartość 1 typ logiczny (boolowski)
rekordu N/A Nieobsługiwane ciąg "Rekord" jest zwracany Obiekt JSON Obiekt JSON Typ rekordu Avro Typ rekordu Avro
tablica N/A Nieobsługiwane ciąg "Array" jest zwracany Obiekt JSON Obiekt JSON Typ rekordu Avro Typ rekordu Avro

Uwaga / Notatka

W przypadku parquet nie jest wymagana konwersja typu danych.

Mapowanie typów podczas zapisywania w magazynach danych ze strukturą

Typ danych SQL Power BI Azure Cosmos DB PostgreSQL Azure Data Explorer
bigint bigint, int, smallint, tinyint, wszystkie typy ciągów (ntext, nvarchar, char, ...) tak numeryczne: liczba całkowita bigint

Jeśli typ kolumny ma wartość smallint lub integer, wystąpi błąd "nieprawidłowy format danych binarnych".
dynamic, int, long
spławik float, real, decimal, numeryczne, wszystkie typy ciągów ( ntext, nvarchar, char, ...) tak liczba: ułamek podwójna precyzja, numeryczna. Ograniczone do 1,78E+308

Jeśli typ kolumny jest prawdziwy, wystąpi błąd "nieprawidłowy format danych binarnych".
dynamiczne, rzeczywiste, podwójne
nvarchar(max) Wszystkie typy ciągów (ntext, nvarchar, char, uniqueidentifier...) tak ciąg znak różny, tekst dynamic, string
data/godzina datetime, datetime2, datetimeoffset, wszystkie typy ciągów ( ntext, nvarchar, char, ...) tak data/godzina przekonwertowana na ciąg przy użyciu standardu ISO 8601 znacznik czasu dla znacznika czasu UTC, sygnatura czasowa w przeciwnym razie dynamic, string, datetime
bit (poziom zgodności 1.2 lub nowszy) bigint, int, smallint, tinyint, bit, all string types (ntext, nvarchar, char, ...) tak Wartość logiczna: wartość 1 jest konwertowana na wartość true, 0 przekonwertowana na wartość false odrobina dynamic, bool
rekordu Nieobsługiwane ciąg "Rekord" jest zwracany Nieobsługiwane ciąg "Rekord" jest zwracany Obiekt JSON Niewspierane dynamic, bool, long, datetime, byte array, real, double, string
tablica Nieobsługiwane ciąg "Array" jest zwracany Nieobsługiwane ciąg "Array" jest zwracany Obiekt JSON Niewspierane dynamic, string