Megosztás a következőn keresztül:


Adatok lekérdezése az Azure Data Lake-ben az Azure Data Explorer használatával

Az Azure Data Lake Storage egy nagy mértékben skálázható és költséghatékony data lake-megoldás a big data-elemzésekhez. Egyesíti a nagy teljesítményű fájlrendszer erejét a hatalmas kapacitással és költséghatékony működéssel, így segít gyorsabban következtetésekhez jutni. A Data Lake Storage Gen2 kiterjeszti az Azure Blob Storage képességeit, és elemzési számítási feladatokhoz van optimalizálva.

Az Azure Data Explorer integrálható az Azure Blob Storage és az Azure Data Lake Storage (Gen1 és Gen2) szolgáltatással, amely gyors, gyorsítótárazott és indexelt hozzáférést biztosít a külső tárolóban tárolt adatokhoz. Az Adatok elemzése és lekérdezése az Azure Data Explorerbe való előzetes betöltés nélkül is lehetséges. Egyszerre lekérdezheti a megemésztett és a nem megemésztett külső adatokat is. További információkért tekintse meg, hogyan hozhat létre külső táblát az Azure Data Explorer webes felhasználói felület varázslójának használatával. Rövid áttekintésért tekintse meg a külső táblákat.

Jótanács

A legjobb lekérdezési teljesítmény megköveteli az adatbetöltést az Azure Data Explorerben. A külső adatok előzetes betöltés nélküli lekérdezésének képessége csak előzményadatokhoz vagy ritkán lekérdezett adatokhoz használható. Optimalizálja a külső adat lekérdezési teljesítményét a legjobb eredmények érdekében.

Külső tábla létrehozása

Tegyük fel, hogy sok olyan CSV-fájllal rendelkezik, amely a raktárban tárolt termékek előzményinformációját tartalmazza, és gyors elemzést szeretne végezni a tavalyi év öt legnépszerűbb termékének megkereséséhez. Ebben a példában a CSV-fájlok a következőképpen néznek ki:

Időbélyeg Termékazonosító Termékleírás
2019-01-01 11:21:00 TO6050 3,5in DS/HD hajlékonylemez
2019-01-01 11:30:55 YDX1 Yamaha DX1 szintetizátor
... ... ...

A fájlok az Azure Blob Storage-ban mycompanystorage , egy dátum szerint particionált tárolóban archivedproductsvannak tárolva:

https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00000-7e967c99-cf2b-4dbb-8c53-ce388389470d.csv.gz
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00001-ba356fa4-f85f-430a-8b5a-afd64f128ca4.csv.gz
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00002-acb644dc-2fc6-467c-ab80-d1590b23fc31.csv.gz
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00003-cd5fad16-a45e-4f8c-a2d0-5ea5de2f4e02.csv.gz
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/02/part-00000-ffc72d50-ff98-423c-913b-75482ba9ec86.csv.gz
...

Ha kQL-lekérdezést szeretne közvetlenül futtatni ezeken a CSV-fájlokon, a .create external table paranccsal definiáljon egy külső táblát az Azure Data Explorerben. A külső tábla létrehozási parancsbeállításaival kapcsolatos további információkért tekintse meg a külső táblaparancsokat.

.create external table ArchivedProducts(Timestamp:datetime, ProductId:string, ProductDescription:string)
kind=blob
partition by (Date:datetime = bin(Timestamp, 1d))
dataformat=csv
(
  h@'https://mycompanystorage.blob.core.windows.net/archivedproducts;StorageSecretKey'
)

A külső tábla most már látható az Azure Data Explorer webes felhasználói felületének bal oldali ablaktábláján:

Képernyőkép az Azure Data Explorer webes felhasználói felületén található külső táblázatról.

Külső táblaengedélyek

Tekintse át a következő táblaengedélyeket:

  • Az adatbázis-felhasználó létrehozhat egy külső táblát. A tábla létrehozója automatikusan a tábla rendszergazdájává válik.
  • A fürt-, adatbázis- vagy táblaadminisztrátor szerkesztheti a meglévő táblákat.
  • Bármely adatbázis-felhasználó vagy -olvasó lekérdezhet egy külső táblát.

Külső tábla lekérdezése

Miután definiált egy külső táblát, a external_table() függvény használatával hivatkozhat rá. A lekérdezés többi része a szokásos Kusto lekérdezési nyelv.

external_table("ArchivedProducts")
| where Timestamp > ago(365d)
| summarize Count=count() by ProductId,
| top 5 by Count

Külső és betöltött adatok együttes lekérdezése

A külső táblákat és a betöltött adattáblákat is lekérdezheti ugyanazon a lekérdezésen belül. A külső táblát az Azure Data Explorerből, SQL-kiszolgálókról vagy más forrásokból származó egyéb adatokkal is használhatja joinunion . A let( ) statement használatával rövidített nevet rendelhet egy külső táblahivatkozáshoz.

Az alábbi példában a Termékek egy betöltött adattábla, az ArchivedProducts pedig egy külső tábla, amelyet definiáltunk:

let T1 = external_table("ArchivedProducts") |  where TimeStamp > ago(100d);
let T = Products; //T is an internal table
T1 | join T on ProductId | take 10

Hierarchikus adatformátumok lekérdezése

Az Azure Data Explorer lehetővé teszi a hierarchikus formátumok( például JSON, Parquet, Avroés ORC) lekérdezését. Ha hierarchikus adatsémát szeretne külső táblázatsémára képezni (ha eltér), használjon külső táblaleképezési parancsokat. Ha például jSON-naplófájlokat szeretne lekérdezni a következő formátumban:

{
  "timestamp": "2019-01-01 10:00:00.238521",
  "data": {
    "tenant": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "method": "RefreshTableMetadata"
  }
}
{
  "timestamp": "2019-01-01 10:00:01.845423",
  "data": {
    "tenant": "bbbbcccc-1111-dddd-2222-eeee3333ffff",
    "method": "GetFileList"
  }
}
...

A külső tábladefiníció a következőképpen néz ki:

.create external table ApiCalls(Timestamp: datetime, TenantId: guid, MethodName: string)
kind=blob
dataformat=multijson
(
   h@'https://storageaccount.blob.core.windows.net/container1;StorageSecretKey'
)

Olyan JSON-leképezés definiálása, amely az adatmezőket külső tábladefiníciós mezőkhöz rendeli:

.create external table ApiCalls json mapping 'MyMapping' '[{"Column":"Timestamp","Properties":{"Path":"$.timestamp"}},{"Column":"TenantId","Properties":{"Path":"$.data.tenant"}},{"Column":"MethodName","Properties":{"Path":"$.data.method"}}]'

Külső tábla lekérdezésekor létrejön a leképezés, és a külső tábla oszlopaira leképezett releváns adatokat megkapja.

external_table('ApiCalls') | take 10

További információ a leképezési szintaxisról: adatleképezések.

TaxiRides külső tábla lekérdezése a súgó klaszterben

Az Azure Data Explorer különféle funkcióinak kipróbálásához használja a help nevű tesztfürtöt. A súgófürt tartalmaz egy külső tábladefiníciót egy New York-i taxiadatkészlethez , amely több milliárd taxiúttal rendelkezik.

Külső tábla létrehozása TaxiRides

Ez a szakasz a TaxiRides külső tábla létrehozásához használt lekérdezést mutatja be a help fürtben. Mivel már létrehozta ezt a táblát, kihagyhatja ezt a szakaszt, és közvetlenül a TaxiRides külső táblaadatainak lekérdezésére léphet.

.create external table TaxiRides
(
  trip_id: long,
  vendor_id: string,
  pickup_datetime: datetime,
  dropoff_datetime: datetime,
  store_and_fwd_flag: string,
  rate_code_id: int,
  pickup_longitude: real,
  pickup_latitude: real,
  dropoff_longitude: real,
  dropoff_latitude: real,
  passenger_count: int,
  trip_distance: real,
  fare_amount: real,
  extra: real,
  mta_tax: real,
  tip_amount: real,
  tolls_amount: real,
  ehail_fee: real,
  improvement_surcharge: real,
  total_amount: real,
  payment_type: string,
  trip_type: int,
  pickup: string,
  dropoff: string,
  cab_type: string,
  precipitation: int,
  snow_depth: int,
  snowfall: int,
  max_temperature: int,
  min_temperature: int,
  average_wind_speed: int,
  pickup_nyct2010_gid: int,
  pickup_ctlabel: string,
  pickup_borocode: int,
  pickup_boroname: string,
  pickup_ct2010: string,
  pickup_boroct2010: string,
  pickup_cdeligibil: string,
  pickup_ntacode: string,
  pickup_ntaname: string,
  pickup_puma: string,
  dropoff_nyct2010_gid: int,
  dropoff_ctlabel: string,
  dropoff_borocode: int,
  dropoff_boroname: string,
  dropoff_ct2010: string,
  dropoff_boroct2010: string,
  dropoff_cdeligibil: string,
  dropoff_ntacode: string,
  dropoff_ntaname: string,
  dropoff_puma: string
)
kind=blob
partition by (Date:datetime = bin(pickup_datetime, 1d))
dataformat=csv
(
    h@'https://storageaccount.blob.core.windows.net/container1;secretKey'
)

A létrehozott TaxiRides-táblát az Azure Data Explorer webes felhasználói felületének bal oldali paneljén találja:

 Képernyőkép a Taxi rides külső táblázatról.

TaxiRides külső táblaadatok lekérdezése

Jelentkezzen be a(z) https://dataexplorer.azure.com/clusters/help/databases/Samplesplatformra.

TaxiRides külső tábla lekérdezése particionálás nélkül

Futtassa ezt a lekérdezést a TaxiRides külső táblán a hét minden napjára vonatkozó túrák megjelenítéséhez a teljes adatkészleten.

external_table("TaxiRides")
| summarize count() by dayofweek(pickup_datetime)
| render columnchart

Ez a lekérdezés a hét legforgalmasábú napját jeleníti meg. Mivel az adatok nincsenek particionálva, a lekérdezés akár több percet is igénybe vehet az eredmények visszaadásához.

Gráfábrázolás a nem particionált lekérdezés megjelenítéséhez.

TaxiRides külső tábla lekérdezése particionálással

Futtassa ezt a lekérdezést a TaxiRides külső táblán a 2017 januárjában használt taxifülketípusok (sárga vagy zöld) megjelenítéséhez.

external_table("TaxiRides")
| where pickup_datetime between (datetime(2017-01-01) .. datetime(2017-02-01))
| summarize count() by cab_type
| render piechart

Ez a lekérdezés particionálást használ, amely optimalizálja a lekérdezési időt és a teljesítményt. A lekérdezés szűr egy particionált oszlopon (pickup_datetime), és néhány másodpercen belül visszaadja az eredményeket.

A particionált lekérdezés rendereléséhez használható diagram.

Más lekérdezéseket is írhat a TaxiRides külső táblán való futtatáshoz, és további információkat tudhat meg az adatokról.

A lekérdezési teljesítmény optimalizálása

Optimalizálja a lekérdezési teljesítményt a tóban az alábbi ajánlott eljárásokkal a külső adatok lekérdezéséhez.

Adatformátum

  • Az elemzési lekérdezésekhez használjon oszlopos formátumot a következő okokból:
    • Csak a lekérdezés szempontjából releváns oszlopok olvashatók.
    • Az oszlopkódolási technikák jelentősen csökkenthetik az adatméretet.
  • Az Azure Data Explorer támogatja a Parquet és az ORC oszlopos formátumokat. A parquet formátum az optimalizált implementáció miatt javasolt.

Azure-régió

Ellenőrizze, hogy a külső adatok ugyanabban az Azure-régióban találhatóak-e, mint az Azure Data Explorer-fürt. Ez a beállítás csökkenti a költségeket és az adatok beolvasási idejét.

Fájlméret

Az optimális fájlméret fájlonként több száz Mb (legfeljebb 1 GB). Kerülje a felesleges többletterhelést igénylő kis méretű fájlokat, például a lassabb fájlbesorzási folyamatot és az oszlopos formátum korlátozott használatát. A fájlok számának nagyobbnak kell lennie, mint az Azure Data Explorer-fürt processzormagjainak száma.

Tömörítés

Tömörítéssel csökkentheti a távoli tárolóból lekért adatok mennyiségét. Parquet formátum esetén használja a belső Parquet-tömörítési mechanizmust, amely külön tömöríti az oszlopcsoportokat, így külön olvashatja őket. A tömörítési mechanizmus használatának ellenőrzéséhez ellenőrizze, hogy a fájlok neve a következő: <fájlnév>.gz.parquet vagy <filename.snappy.parquet>, és nem <fájlnév>.parquet.gz.

Particionálás

Rendszerezze az adatokat "mappa" partíciókkal, amelyek lehetővé teszik a lekérdezés számára, hogy kihagyja az irreleváns elérési utakat. Particionálás tervezésekor fontolja meg a fájlméretet és a lekérdezések gyakori szűrőit, például az időbélyeget vagy a bérlőazonosítót.

Virtuális gép mérete

Válassza ki a több maggal és nagyobb hálózati átviteli sebességgel rendelkező virtuálisgép-termékváltozatokat (a memória kevésbé fontos). További információ: Az Azure Data Explorer-fürt megfelelő VM SKU-jának kiválasztása.