Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
✅ 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 |