Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Veri Gezgini, günlük ve telemetri verileri için hızlı ve yüksek oranda ölçeklenebilir veri keşfetme hizmetidir. Azure Veri Gezgini, Node için iki istemci kitaplığı sağlar: bir ingeşte kütüphanesi ve bir veri kütüphanesi. Bu kitaplıklar verileri bir kümeye almanızı (yüklemenizi) ve kodunuzdan veri sorgulamanızı sağlar. Bu makalede, önce bir test kümesinde bir tablo ve veri eşlemesi oluşturursunuz. Ardından kümeye alım kuyruğu oluşturur ve sonuçları doğrularsınız.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir Azure hesabı oluşturun.
Önkoşullar
- Microsoft hesabı veya Microsoft Entra kullanıcı kimliği. Azure aboneliği gerekmez.
- Azure Veri Gezgini kümesi ve veritabanı. Küme ve veritabanı oluşturma.
- Geliştirme bilgisayarınızda yüklü Node.js
Verileri yükleme ve kitaplıkları alma
azure-kusto-ingest ve azure-kusto-data yükleme
npm i azure-kusto-ingest@^3.3.2 azure-kusto-data@^3.3.2
İçeri aktarma deyimlerini ve sabitlerini ekleme
Kütüphanelerden sınıfları aktar
const { Client: KustoClient, KustoConnectionStringBuilder } = require('azure-kusto-data');
const {
IngestClient: KustoIngestClient,
IngestionProperties,
IngestionDescriptors,
DataFormat,
IngestionMappingKind,
} = require("azure-kusto-ingest");
Azure Veri Gezgini, bir uygulamanın kimliğini doğrulamak için Microsoft Entra kiracı kimliğinizi kullanır. Kiracı kimliğinizi bulmak için Microsoft 365 kiracı kimliğinizi bulma'yı izleyin.
Bu kodu çalıştırmadan önce , authorityIdkustoUri ve kustoIngestUri değerlerini kustoDatabaseayarlayın.
const cluster = "MyCluster";
const region = "westus";
const authorityId = "microsoft.com";
const kustoUri = `https://${cluster}.${region}.kusto.windows.net`;
const kustoIngestUri = `https://ingest-${cluster}.${region}.kusto.windows.net`;
const kustoDatabase = "Weather";
Şimdi bağlantı dizesini hazırlayın. Bu örnekte kümeye erişmek için cihaz kimlik doğrulaması kullanılır. Kimlik doğrulamasını tamamlamak için konsol çıkışını denetleyin. Microsoft Entra uygulama sertifikası, uygulama anahtarı ve kullanıcı ve parola da kullanabilirsiniz.
Hedef tabloyu ve eşlemeyi sonraki bir adımda oluşturacaksınız.
const kcsbIngest = KustoConnectionStringBuilder.withAadDeviceAuthentication(kustoIngestUri, authorityId);
const kcsbData = KustoConnectionStringBuilder.withAadDeviceAuthentication(kustoUri, authorityId);
const destTable = "StormEvents";
const destTableMapping = "StormEvents_CSV_Mapping";
Kaynak dosya bilgilerini ayarlama
Veri kaynağı dosyası için daha fazla sınıf içeri aktarın ve sabitleri ayarlayın. Bu örnekte Azure Blob Depolama'da barındırılan örnek bir dosya kullanılmaktadır. StormEvents örnek veri kümesi, Ulusal Çevre Bilgileri Merkezlerinden hava durumuyla ilgili verileri içerir.
const container = "samplefiles";
const account = "kustosamples";
const sas = ""; // If relevant add SAS token
const filePath = "StormEvents.csv";
const blobPath = `https://${account}.blob.core.windows.net/${container}/${filePath}${sas}`;
Test kümenizde tablo oluşturma
Dosyadaki StormEvents.csv verilerin şemasıyla eşleşen bir tablo oluşturun. Bu kod çalıştırıldığında aşağıdaki gibi bir ileti döndürür: Oturum açmak için bir web tarayıcısı kullanarak sayfayı https://microsoft.com/devicelogin açın ve kimlik doğrulaması için XXXXXXXXXX kodunu girin. Oturum açmak için adımları izleyin ve bir sonraki kod bloğunu çalıştırmak için geri dönün. Bağlantı oluşturan sonraki kod blokları yeniden oturum açmanızı gerektirir.
const kustoClient = new KustoClient(kcsbData);
const createTableCommand = `.create table ${destTable} (StartTime: datetime, EndTime: datetime, EpisodeId: int, EventId: int, State: string, EventType: string, InjuriesDirect: int, InjuriesIndirect: int, DeathsDirect: int, DeathsIndirect: int, DamageProperty: int, DamageCrops: int, Source: string, BeginLocation: string, EndLocation: string, BeginLat: real, BeginLon: real, EndLat: real, EndLon: real, EpisodeNarrative: string, EventNarrative: string, StormSummary: dynamic)`;
const createTableResults = await kustoClient.executeMgmt(kustoDatabase, createTableCommand);
console.log(createTableResults.primaryResults[0].toJSON().data);
Veri alımı eşlemesini tanımlayın
Gelen CSV verilerini, tabloyu oluştururken kullanılan sütun adlarına ve veri türlerine eşleyin.
const createMappingCommand = `.create table ${destTable} ingestion csv mapping '${destTableMapping}' '[{"Name":"StartTime","datatype":"datetime","Ordinal":0}, {"Name":"EndTime","datatype":"datetime","Ordinal":1},{"Name":"EpisodeId","datatype":"int","Ordinal":2},{"Name":"EventId","datatype":"int","Ordinal":3},{"Name":"State","datatype":"string","Ordinal":4},{"Name":"EventType","datatype":"string","Ordinal":5},{"Name":"InjuriesDirect","datatype":"int","Ordinal":6},{"Name":"InjuriesIndirect","datatype":"int","Ordinal":7},{"Name":"DeathsDirect","datatype":"int","Ordinal":8},{"Name":"DeathsIndirect","datatype":"int","Ordinal":9},{"Name":"DamageProperty","datatype":"int","Ordinal":10},{"Name":"DamageCrops","datatype":"int","Ordinal":11},{"Name":"Source","datatype":"string","Ordinal":12},{"Name":"BeginLocation","datatype":"string","Ordinal":13},{"Name":"EndLocation","datatype":"string","Ordinal":14},{"Name":"BeginLat","datatype":"real","Ordinal":16},{"Name":"BeginLon","datatype":"real","Ordinal":17},{"Name":"EndLat","datatype":"real","Ordinal":18},{"Name":"EndLon","datatype":"real","Ordinal":19},{"Name":"EpisodeNarrative","datatype":"string","Ordinal":20},{"Name":"EventNarrative","datatype":"string","Ordinal":21},{"Name":"StormSummary","datatype":"dynamic","Ordinal":22}]'`;
const mappingCommandResults = await kustoClient.executeMgmt(kustoDatabase, createMappingCommand);
console.log(mappingCommandResults.primaryResults[0].toJSON().data);
İletiyi işleme için kuyruğa alma
Blob depolamadan veri çekmek ve bu verileri Azure Veri Gezgini'ne işlemek için iletiyi kuyruğa alın.
const defaultProps = new IngestionProperties({
database: kustoDatabase,
table: destTable,
format: DataFormat.CSV,
ingestionMappingReference: destTableMapping,
ingestionMappingKind: IngestionMappingKind.CSV,
additionalProperties: {ignoreFirstRecord: true},
});
const ingestClient = new KustoIngestClient(kcsbIngest, defaultProps);
// All ingestion properties are documented here: https://learn.microsoft.com/azure/kusto/management/data-ingest#ingestion-properties
const blobDesc = new BlobDescriptor(blobPath, 10);
try {
const ingestionResult = await ingestClient.ingestFromBlob(blobDesc, null);
} catch (err) {
// Handle errors
}
Tablonun veri içerdiğini doğrulama
Verilerin tabloya alındığını doğrulayın. Kuyruğa alınan veri alımının zamanlanması ve verilerin Azure Veri Gezgini'ne yüklenmesi için beş ile on dakika arasında bekleyin. Ardından tablodaki kayıtların StormEvents sayısını almak için aşağıdaki kodu çalıştırın.
const query = `${destTable} | count`;
var tableResults = await kustoClient.execute(kustoDatabase, query);
console.log(tableResults.primaryResults[0].toJSON().data);
Sorun giderme sorgularını çalıştırma
Hizmetinize/Platformunuza oturum https://dataexplorer.azure.com açın ve kümenize bağlanın. Son dört saat içinde herhangi bir alma hatası olup olmadığını görmek için veritabanınızda aşağıdaki komutu çalıştırın. Çalıştırmadan önce veritabanı adını değiştirin.
.show ingestion failures
| where FailedOn > ago(4h) and Database == "<DatabaseName>"
Son dört saat içindeki tüm alım işlemlerinin durumunu görüntülemek için aşağıdaki komutu çalıştırın. Çalıştırmadan önce veritabanı adını değiştirin.
.show operations
| where StartedOn > ago(4h) and Database == "<DatabaseName>" and Operation == "DataIngestPull"
| summarize arg_max(LastUpdatedOn, *) by OperationId
Kaynakları temizle
Diğer makalelerimizi izlemeyi planlıyorsanız, oluşturduğunuz kaynakları koruyun. Aksi takdirde, tabloyu temizlemek StormEvents için veritabanınızda aşağıdaki komutu çalıştırın.
.drop table StormEvents