operator externaldata
externaldata
Operator 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"}}]')
MultiJSON
Format digunakan di sini karena rekaman JSON tunggal diperluas menjadi beberapa baris.
Untuk info selengkapnya tentang memetakan sintaksis, lihat memetakan data.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk