Research SQL Server 2016CTP2 – 4/13

Czas po drążyć kolejny temat będący nowością SQL Server 2016, a dokładnie przyjrzymy się, w jakim stopniu jest to realizowane w obecnie dostępnej wersji SQL Server 2016CTP2. Mowa tutaj zgodnie z zapowiedzią o wsparciu dla JSON. Wsparcie nie oznacza, iż ma być to typ, mający tak duże możliwości jak XML, jednak w dużym stopniu może to ułatwić na pracę z dokumentami JSON, które obecnie są tak popularne, szczególnie w przypadku rozwiązań NoSQL i wymiany informacji.

W tej chwili, możemy już potestować eksplorację danych relacyjnych do postaci JSON. Ogólna składnia polecenia TSQL jest następująca:

<<SELECT QUERY>>

FOR JSON AUTO|PATH

[, ROOT[(''<RootName>'')]]

[, INCLUDE_NULL_VALUES]

I tak po krótce jak to nam zadziała. Pierwsze zobaczmy przykładowe zapytanie zwracające nam dane relacyjne

W wyniku, którego otrzymujemy przykładowe dane

Użyjmy teraz nowego zapytania, który ma nam z tego zwrócić dokument JSON.

Wraz z FOR
JSON Wykorzystujemy tutaj klauzulę AUTO. Wynik takiego zapytania to:

[   

{

"ProductID":3,
"Name":"BB Ball Bearing",
"ProductNumber":"BE-2349"

},

{

"ProductID":317,
"Name":"LL Crankarm",
"ProductNumber":"CA-5965",
"Color":"Black"

}

]

Kolejna klauzula znana również z danych XML, to ROOT.

Dodaje ona korzeń dokumentu

{

“Products”:

[

{"ProductID":3,"Name":"BB Ball Bearing","ProductNumber":"BE-2349"},

{"ProductID":317,"Name":"LL Crankarm","ProductNumber":"CA-5965","Color":"Black"}

]

}

Możemy teraz skomplikować zapytanie, dodajmy w nim połączenie, wówczas dokument będzie miał odzwierciedlenie takiej hierarchii.

Kolejnym rodzajem uzyskiwania dokumentu JSON z danych relacyjnych, jest podobnie jak w XML
PATH.

W wyniku tego zapytania otrzymamy dokument JSON zgodnie ze ścieżką przedstawioną w aliasach.

[

{"p":{"nr":3,"n":"BB Ball Bearing","symbol":"BE-2349"}},

{"p":{"nr":317,"n":"LL Crankarm","symbol":"CA-5965","c":"Black"}}

]

Zarówno klauzule AUTO jak i PATH można wzbogacić w INCLUDE_NULL_VALUES. W wyniku, czego zostaną dołączone wartości NULL. W przykładach wcześniejszych wartości z NULL nie występują, podobne zapytanie wykonamy z klauzulą INCLUDE_NULL_VALUES

W wyniku, czego otrzymujemy

[

{"ProductID":3,"Name":"BB Ball Bearing","ProductNumber":"BE-2349","Color":null},

{"ProductID":317,"Name":"LL Crankarm","ProductNumber":"CA-5965","Color":"Black"}

]

 

Co dalej?

Już teraz można usłyszeć zapowiedzi, co będzie w CTP3. Między innymi polecenie OPENJSON

Będzie można również ze zmiennych i kolumn tekstowych, przechowywujących dane w NoSQL wyłuskiwać dane i na nich budować indeksy. W tym celu będzie można skorzystać z wbudowanych funkcji:

  • ISJSON (jsonText) – funkcja walidująca, czy dane tekstowe są dokumentem JSON, da to możliwość zbudowania np.: CONTSRAINT na kolumnie tekstowej, weryfikujący poprawność wstawianych dokumentów JSON
  • JSON_VALUE – pozwalać ma z danych tekstowych wyłuskiwać dane

Przykłady zapożyczony z blogu Microsoft.

 

Podsumowanie

Jak widać coś z JSON jest czy dużo, czy mało, chyba w tym wypadku warto poczekać na kolejne CTP, które przybliżą nam pełną planowaną funkcjonalność SQL Server w zakresie integracji i wymiany danych typu JSON. Z całą pewnością jak coś więcej będzie można sprawdzić to znajdzie się na naszym blogu. Na razie polecam zabawy z AUTO i PATH, bo dzięki nim już łatwo wygenerować prawie dowolny wygląd dokumentu JSON z danych przechowywanych w postaci relacyjnej, oraz oczywiście do śledzenia kolejnych części z cyklu Research SQL Server 2016CTP2.

Share this article ...

Google Plus
Ihren LinkedIn Kontakten zeigen



This entry was posted in General, SQL Server and tagged , , , , , , by Lukasz Grala. Bookmark the permalink.
Lukasz Grala

About Lukasz Grala

A Data Platform and Business Intelligence architect and consultant. An authorized Microsoft trainer and university lecturer. A holder of numerous Microsoft certificates, since 2010 Microsoft Most Valuable Professional (MVP) in the SQL Server category. An author of articles and webcasts available on TechNet portal. He runs two blogs, SQL Research and PowerPivot’s Blog. The author of various trainings and a speaker at numerous IT conferences, as well as the Polish SQL Server User Group (PLSSUG) leader.

Leave a Reply

Connect with:
  • This field its required.
  • This field its required.
    • Message is required