Azure Veri Gezgini Go SDK'sını kullanarak verileri alma
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 hizmetiyle etkileşime geçmek için bir Go SDK istemci kitaplığı sağlar. Go SDK'sını kullanarak Azure Veri Gezgini kümelerindeki verileri alabilir, denetleyebilir ve sorgulayabilirsiniz.
Bu makalede, önce bir test kümesinde bir tablo ve veri eşlemesi oluşturursunuz. Ardından Go SDK'sını kullanarak bir alımı kümeye 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 Kod bölümünü gözden geçirme 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.
Kimliği doğrula
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 New işlevine sahip istemci.
Tablo oluştur
Create table komutu bir 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 kesimlerinin 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ütunlara 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)
}
Verileri alma
Alma işlemi, mevcut bir Azure Blob Depolama kapsayıcısından bir dosya kullanılarak kuyruğa alınır.
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, yeni. 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 çalıştırın
main.go
:func main { ... dropTable(kc, kustoDB) createTable(kc, kustoDB) createMapping(kc, kustoDB) ingestFile(kc, blobStoreAccountName, blobStoreContainer, blobStoreToken, blobStoreFileName, kustoMappingRefName, kustoDB, kustoTable) ... }
İpucu
farklı işlem birleşimlerini denemek için içindeki ilgili işlevlerin
main.go
açıklamasını açabilir/yorumlayabilirsiniz.Ö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ı: Bir CSV dosyası (Azure Blob Depolama) alma için kuyruğa alınır.
- 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, aşağıdaki komutu veritabanınızda çalıştırarak StormEvents
tabloyu bırakın.
.drop table StormEvents