# Praca z plikami JSON

Ładowanie danych z plików JSON w Qlik Cloud.

Dane z plików JSON można odczytywać tak jak z każdego innego pliku danych obsługiwanego przez Qlik Cloud. Więcej informacji można znaleźć w temacie [Ładowanie danych z plików](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataSource/load-data-from-files.htm).

Można także załadować dane z pliku JSON w skrypcie ładowania danych za pomocą polecenia LOAD. Na przykład:

```
LOAD  * from [lib://DataFiles/xyz.json] (json);
```

Więcej informacji zawiera temat [Load](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm).

Instrukcje LOAD mogą filtrować lub zmieniać kolejność pól, wymieniając żądane na liście pól zamiast używać symboli wieloznacznych. Na przykład: `LOAD a.b, b.c FROM […] (json);`. Nieistniejące pola nie spowodują błędu.

## Ładowanie zagnieżdżonych obiektów z JSON

Jeśli wartość jest obiektem, wówczas członkowie tego obiektu są używani do rozszerzenia tabeli o dodatkowe pola. Każda nazwa pola jest kombinacją elementu nadrzędnego i podrzędnego. Na przykład JSON poniżej zawiera zagnieżdżone obiekty:

```

[
	{"name":{"first":"Alice","last":"Stephenson"}},
	{"name":{"first":"Bob"}},
	{"name":{"last":"Roberts"}}
]
```

Po załadowaniu przy użyciu `LOAD * FROM [lib://DataFiles/example.json] (json);` wynikiem jest poniższa tabela danych:

Przykład zagnieżdżonej tabeli danych

| name.first | name.last |
| --- | --- |
| Alice | Stephenson |
| Bob | null |
| null | Roberts |

## Ładowanie wielu tabel

Dane JSON z tablicami muszą być ładowane przy użyciu wielu instrukcji LOAD. Zawartość tablicy jest hashowana i używana jako klucz do łączenia tabel.

Na przykład JSON poniżej zawiera wiele tabel.

```

[
	{"a":[1,2],"b":[3,4]},
	{"a":[2,3],"b":[4,5]}
]
```

Wymagałoby to załadowania za pomocą następującej instrukcji LOAD:

LOAD \* FROM [...] (json); LOAD \* FROM [...] (json, table is [/\*/a]); LOAD \* FROM [...] (json, table is [/\*/b]);

Określnik table is jest ścieżką do iteratora dla tabeli podrzędnej. Wynikiem tego są poniższe tabele danych:

Tabela 1

| %Key\_a | %Key\_b |
| --- | --- |
| &lt;hash z [1,2]&gt; | &lt;hash z [3,5]&gt; |
| &lt;hash z [2,3]&gt; | &lt;hash z [4,5]&gt; |

Tabela 2

| %Key\_a | a..@1 |
| --- | --- |
| &lt;hash z [1,2]&gt; | 1 |
| &lt;hash z [1,2]&gt; | 2 |
| &lt;hash z [2,3]&gt; | 2 |
| &lt;hash z [2,3]&gt; | 3 |

Tabela 3

| %Key\_b | b..@1 |
| --- | --- |
| &lt;hash z [3,5]&gt; | 3 |
| &lt;hash z [3,5]&gt; | 4 |
| &lt;hash z [4,5]&gt; | 4 |
| &lt;hash z [4,5]&gt; | 5 |

InformacjaJeśli dane zawierają wiele tablic o identycznej zawartości, należy użyć słowa kluczowego DISTINCT w instrukcjach ładowania tabeli podrzędnej. Na przykład: LOAD DISTINCT \* FROM [lib://DataFiles/Sales.json] (json, all tables);

### Zaglądanie do tablic

Listy pól można używać podczas ładowania danych, aby zaglądać do tablic, które w przeciwnym razie zostałyby załadowane jako tabele podrzędne. Na przykład

```
[
	{"pos":[1,2,3]},
	{"pos":[4,5,6]}
]
```

To można załadować za pomocą następującej instrukcji LOAD:

LOAD pos.0 AS x, pos.1 AS y, pos.2 AS z FROM […] (json);.

Wynikiem tego jest następująca tabela.

| x | y | z |
| --- | --- | --- |
| 1 | 2 | 3 |
| 4 | 5 | 6 |

### Ładowanie wszystkich tabel

Możesz załadować wszystkie tabele, określając all tables zamiast Table is. Na przykład:

LOAD \* FROM [lib://DataFiles/Sales.json] (json, all tables);

#### Ograniczenia

Pliki JSON mają następujące ograniczenia:

* Pojedyncza instrukcja LOAD z JSON może ładować maksimum z poniższych:

  * 5000 pól

  * 1000 tabel