Azure Veri Gezgini Go SDK'sını kullanarak veri alma
Azure Veri Gezgini, günlük ve telemetri verileri için hızlı ve üst düzeyde ölçeklenebilir veri keşfetme hizmetidir. Azure Veri Gezgini hizmetiyle etkileşime geçmek için bir Go SDK istemci kitaplığı sağlar. Azure Veri Gezgini kümelerindeki verileri almak, denetlemek ve sorgulamak için Go SDK'sını kullanabilirsiniz.
Bu makalede, önce bir test kümesinde bir tablo ve veri eşlemesi oluşturursunuz. Ardından Go SDK'sını kullanarak kümeye bir alımı kuyruğa alır ve sonuçları doğrularsınız.
Ö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.
- Git'i yükleyin.
- Go'u aşağıdaki Go SDK'sı en düşük gereksinimleriyle yükleyin.
- Bir Uygulama Kaydı oluşturun ve veritabanına izin verin. İstemci kimliğini ve gizli diziyi daha sonra kullanmak üzere kaydedin.
Go SDK'sını yükleme
Go modüllerini kullanan [örnek uygulamayı çalıştırdığınızda Azure Veri Gezgini Go SDK'sı otomatik olarak yüklenir. Go SDK'sını başka bir uygulama için yüklediyseniz, bir Go modülü oluşturun ve Azure Veri Gezgini paketini getirin (kullanarakgo get
), örneğin:
go mod init foo.com/bar
go get github.com/Azure/azure-kusto-go/kusto
Paket bağımlılığı dosyaya go.mod
eklenir. Go uygulamanızda kullanın.
Kodu gözden geçirin
Bu Kodu gözden geçirme bölümü isteğe bağlıdır. Kodun nasıl çalıştığını öğrenmek istiyorsanız aşağıdaki kod parçacıklarını gözden geçirebilirsiniz. Aksi takdirde, Uygulamayı çalıştırma bölümüne atlayabilirsiniz.
Kimlik doğrulaması
Programın herhangi bir işlemi yürütmeden önce Azure Veri Gezgini hizmetinde kimlik doğrulaması yapması gerekir.
auth := kusto.Authorization{Config: auth.NewClientCredentialsConfig(clientID, clientSecret, tenantID)}
client, err := kusto.New(kustoEndpoint, auth)
Kusto örneği. Yetkilendirme, hizmet sorumlusu kimlik bilgileri kullanılarak oluşturulur. Ardından kusto oluşturmak için kullanılır . Küme uç noktasını da kabul eden Yeni işlevine sahip istemci.
Tablo oluşturma
Create table komutu kusto deyimiyle temsil edilir. Mgmt işlevi yönetim komutlarını yürütmek için kullanılır. Tablo oluşturmak için komutunu yürütmek için kullanılır.
func createTable(kc *kusto.Client, kustoDB string) {
_, err := kc.Mgmt(context.Background(), kustoDB, kusto.NewStmt(createTableCommand))
if err != nil {
log.Fatal("failed to create table", err)
}
log.Printf("Table %s created in DB %s\n", kustoTable, kustoDB)
}
İpucu
Kusto deyimi, daha iyi güvenlik için varsayılan olarak sabittir. NewStmt
dize sabitlerini kabul eder. API, UnsafeStmt
sabit olmayan deyim segmentlerinin kullanılmasına izin verir, ancak önerilmez.
Kusto create table komutu aşağıdaki gibidir:
.create table StormEvents (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)
Eşleme oluşturma
Veri eşlemeleri, gelen verileri Azure Veri Gezgini tablolarındaki sütunlarla eşlemek için veri alımı sırasında kullanılır. Daha fazla bilgi için bkz. veri eşleme. Eşleme, veritabanı adı ve uygun komutla işlevi kullanılarak Mgmt
tabloyla aynı şekilde oluşturulur. Tam komut , örnek için GitHub deposunda kullanılabilir.
func createMapping(kc *kusto.Client, kustoDB string) {
_, err := kc.Mgmt(context.Background(), kustoDB, kusto.NewStmt(createMappingCommand))
if err != nil {
log.Fatal("failed to create mapping - ", err)
}
log.Printf("Mapping %s created\n", kustoMappingRefName)
}
Veriyi çekme
Alma işlemi, mevcut bir Azure Blob Depolama kapsayıcısından bir dosya kullanılarak kuyruğa alındı.
func ingestFile(kc *kusto.Client, blobStoreAccountName, blobStoreContainer, blobStoreToken, blobStoreFileName, kustoMappingRefName, kustoDB, kustoTable string) {
kIngest, err := ingest.New(kc, kustoDB, kustoTable)
if err != nil {
log.Fatal("failed to create ingestion client", err)
}
blobStorePath := fmt.Sprintf(blobStorePathFormat, blobStoreAccountName, blobStoreContainer, blobStoreFileName, blobStoreToken)
err = kIngest.FromFile(context.Background(), blobStorePath, ingest.FileFormat(ingest.CSV), ingest.IngestionMappingRef(kustoMappingRefName, ingest.CSV))
if err != nil {
log.Fatal("failed to ingest file", err)
}
log.Println("Ingested file from -", blobStorePath)
}
Alma istemcisi alma kullanılarak oluşturulur. Yeni'ye tıklayın. FromFile işlevi, Azure Blob Depolama URI'sine başvurmak için kullanılır. Eşleme başvuru adı ve veri türü FileOption biçiminde geçirilir.
Uygulamayı çalıştırma
GitHub'dan örnek kodu kopyalayın:
git clone https://github.com/Azure-Samples/Azure-Data-Explorer-Go-SDK-example-to-ingest-data.git cd Azure-Data-Explorer-Go-SDK-example-to-ingest-data
Bu kod parçacığında görüldüğü gibi örnek kodu şu şekilde
main.go
çalıştırın:func main { ... dropTable(kc, kustoDB) createTable(kc, kustoDB) createMapping(kc, kustoDB) ingestFile(kc, blobStoreAccountName, blobStoreContainer, blobStoreToken, blobStoreFileName, kustoMappingRefName, kustoDB, kustoTable) ... }
İpucu
Farklı işlem bileşimlerini denemek için içindeki ilgili işlevlerin
main.go
açıklamasını kaldırabilirsiniz/açıklama ekleyebilirsiniz.Örnek kodu çalıştırdığınızda aşağıdaki eylemler gerçekleştirilir:
- Bırakma tablosu:
StormEvents
tablo bırakılır (varsa). - Tablo oluşturma:
StormEvents
tablo oluşturulur. - Eşleme oluşturma:
StormEvents_CSV_Mapping
eşleme oluşturulur. - Dosya alımı: Alma için bir CSV dosyası (Azure Blob Depolama) kuyruğa alındı.
- Bırakma tablosu:
Kimlik doğrulaması için hizmet sorumlusu oluşturmak için az ad sp create-for-rbac komutuyla Azure CLI kullanın. Hizmet sorumlusu bilgilerini küme uç noktası ve veritabanı adı ile program tarafından kullanılacak ortam değişkenleri biçiminde ayarlayın:
export AZURE_SP_CLIENT_ID="<replace with appID>" export AZURE_SP_CLIENT_SECRET="<replace with password>" export AZURE_SP_TENANT_ID="<replace with tenant>" export KUSTO_ENDPOINT="https://<cluster name>.<azure region>.kusto.windows.net" export KUSTO_DB="name of the database"
Programı çalıştırın:
go run main.go
Benzer bir çıkış elde edersiniz:
Connected to Azure Data Explorer Using database - testkustodb Failed to drop StormEvents table. Maybe it does not exist? Table StormEvents created in DB testkustodb Mapping StormEvents_CSV_Mapping created Ingested file from - https://kustosamples.blob.core.windows.net/samplefiles/StormEvents.csv
Doğrulama ve sorun giderme
Kuyruğa alınan alımın alım işlemini zamanlaması ve verileri Azure Veri Gezgini'a yüklemesi için 5-10 dakika bekleyin.
https://dataexplorer.azure.com adresinde oturum açın ve kümenize bağlanın. Ardından aşağıdaki komutu çalıştırarak tablodaki
StormEvents
kayıtların sayısını alın.StormEvents | count
Son dört saatte hiç veri alımı 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 saatteki tüm veri 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ı temizleme
Diğer makalelerimizi izlemeyi planlıyorsanız, oluşturduğunuz kaynakları koruyun. Aksi takdirde, tabloyu bırakmak StormEvents
için veritabanınızda aşağıdaki komutu çalıştırın.
.drop table StormEvents
Sonraki adım
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin