Bagikan melalui


operator externaldata

externaldataOperator mengembalikan tabel yang skemanya ditentukan dalam kueri itu sendiri, dan yang datanya dibaca dari artefak penyimpanan eksternal, seperti blob di Azure Blob Storage atau file di Azure Data Lake Storage.

Catatan

Operator externaldata mendukung serangkaian layanan penyimpanan tertentu, seperti yang tercantum di bawah String koneksi penyimpanan.

Catatan

Operator externaldata mendukung kunci Tanda Tangan Akses Bersama (SAS), Kunci akses, dan metode autentikasi Token Microsoft Entra. Untuk informasi selengkapnya, lihat Metode autentikasi penyimpanan.

Catatan

Gunakan operator externaldata untuk mengambil tabel referensi kecil hingga 100 MB dari artefak penyimpanan eksternal. Operator ini tidak dirancang untuk volume data yang besar. Untuk mengambil data eksternal dalam volume besar, sebaiknya serap data eksternal ke Log Analytics sebagai log kustom. Operator ini tidak didukung ketika titik akhir publik dari artefak penyimpanan berada di belakang firewall.

Sintaks

externaldata(columnName:columnType [, ...] )[storageConnectionString [, ...] ] [with(propertyName=propertyValue [, ...])]

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Jenis Diperlukan Deskripsi
columnName, columnType string ✔️ Daftar nama kolom dan jenisnya. Daftar ini mendefinisikan skema tabel.
storageConnectionString string ✔️ String koneksi penyimpanan artefak penyimpanan untuk kueri.
propertyName, propertyValue string Daftar properti opsional yang didukung yang menentukan cara menginterpretasikan data yang diambil dari penyimpanan.

Properti yang didukung

Properti Jenis Deskripsi
format string Format data. Jika tidak ditentukan, upaya dilakukan untuk mendeteksi format data dari ekstensi file. Default adalah CSV. Semua format data penyerapan didukung.
ignoreFirstRecord bool Jika diatur ke true, rekaman pertama di setiap file diabaikan. Properti ini berguna ketika mengkueri file CSV dengan header.
ingestionMapping string Menunjukkan cara memetakan data dari file sumber ke kolom aktual dalam tataan hasil operator. Lihat pemetaan data.

Catatan

Operator ini tidak menerima input alur apa pun.

Batas kueri standar juga berlaku untuk kueri data eksternal.

Mengembalikan

externaldata Operator mengembalikan tabel data dari skema yang diberikan dengan data yang diurai dari artefak penyimpanan yang ditentukan, yang ditunjukkan oleh string koneksi penyimpanan.

Contoh

Mengambil daftar ID pengguna yang disimpan di Azure Blob Storage

Contoh berikut menunjukkan cara menemukan semua rekaman dalam tabel yang UserID kolomnya termasuk dalam kumpulan ID yang diketahui, disimpan (satu per baris) dalam file penyimpanan eksternal. Karena format data tidak ditentukan, format data yang terdeteksi adalah TXT.

Users
| where UserID in ((externaldata (UserID:string) [
    @"https://storageaccount.blob.core.windows.net/storagecontainer/users.txt" 
      h@"?...SAS..." // Secret token needed to access the blob
    ]))
| ...

Kueri beberapa file data

Contoh berikut menanyakan beberapa file data yang disimpan dalam penyimpanan eksternal.

externaldata(Timestamp:datetime, ProductId:string, ProductDescription:string)
[
  h@"https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00000-7e967c99-cf2b-4dbb-8c53-ce388389470d.csv.gz?...SAS...",
  h@"https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/02/part-00000-ba356fa4-f85f-430a-8b5a-afd64f128ca4.csv.gz?...SAS...",
  h@"https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/03/part-00000-acb644dc-2fc6-467c-ab80-d1590b23fc31.csv.gz?...SAS..."
]
with(format="csv")
| summarize count() by ProductId

Contoh di atas dapat dianggap sebagai cara cepat untuk mengkueri beberapa file data tanpa menentukan tabel eksternal.

Catatan

Partisi data tidak dikenali oleh operator externaldata.

Mengkueri format data hierarkis

Untuk mengkueri format data hierarkis, seperti JSON, Parquet, Avro, atau ORC, ingestionMapping harus ditentukan dalam properti operator. Dalam contoh ini, ada file JSON yang disimpan di Azure Blob Storage dengan konten berikut:

{
  "timestamp": "2019-01-01 10:00:00.238521",   
  "data": {    
    "tenant": "e1ef54a6-c6f2-4389-836e-d289b37bcfe0",   
    "method": "RefreshTableMetadata"   
  }   
}   
{
  "timestamp": "2019-01-01 10:00:01.845423",   
  "data": {   
    "tenant": "9b49d0d7-b3e6-4467-bb35-fa420a25d324",   
    "method": "GetFileList"   
  }   
}
...

Untuk mengkueri file ini menggunakan externaldata operator, memetakan data harus ditentukan. Pemetaan menentukan cara memetakan bidang JSON ke kolom hasil operator:

externaldata(Timestamp: datetime, TenantId: guid, MethodName: string)
[ 
   h@'https://mycompanystorage.blob.core.windows.net/events/2020/09/01/part-0000046c049c1-86e2-4e74-8583-506bda10cca8.json?...SAS...'
]
with(format='multijson', ingestionMapping='[{"Column":"Timestamp","Properties":{"Path":"$.timestamp"}},{"Column":"TenantId","Properties":{"Path":"$.data.tenant"}},{"Column":"MethodName","Properties":{"Path":"$.data.method"}}]')

MultiJSONFormat digunakan di sini karena rekaman JSON tunggal diperluas menjadi beberapa baris.

Untuk info selengkapnya tentang memetakan sintaksis, lihat memetakan data.