Вот шаги, которые вам нужно сделать для достижения результата:
1) Создайте функцию лазури и триггер вы можете сохранить ее HTTPTrigger / TimerTrigger, или в соответствии с вашими потребностями.
2) Я предполагаю, что у вас есть код для вызова api в цикле, пока он не даст желаемый результат.
3) Когда у вас есть данные в памяти, вы должны написать следующий код, чтобы записать его в данные Azure.озеро.
Предварительные условия для доступа к ADLS с использованием вашего кода c #:
1) Зарегистрируйте приложение в Azure AD
Предоставить разрешение в хранилище данных озера
Ниже приведен код длясоздание клиента ADLS.
// ADLS connection
var adlCreds = GetCreds_SPI_SecretKey(tenantId, ADL_TOKEN_AUDIENCE, serviceAppIDADLS, servicePrincipalSecretADLS);
var adlsClient = AdlsClient.CreateClient(adlsName, adlCreds);
private static ServiceClientCredentials GetCreds_SPI_SecretKey(string tenant,Uri tokenAudience,string clientId,string secretKey)
{
SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
var serviceSettings = ActiveDirectoryServiceSettings.Azure;
serviceSettings.TokenAudience = tokenAudience;
var creds = ApplicationTokenProvider.LoginSilentAsync(tenant,clientId,secretKey,serviceSettings).GetAwaiter().GetResult();
return creds;
}
Наконец напишите реализацию для сохранения файла в озере данных Azure
const string delim = ",";
static string adlsInputPath = ConfigurationManager.AppSettings.Get("AdlsInputPath");
public static void ProcessUserProfile(this SampleProfile, AdlsClient adlsClient, string fileNameExtension = "")
{
using (MemoryStream memStreamProfile = new MemoryStream())
{
using (TextWriter textWriter = new StreamWriter(memStreamProfile))
{
string profile;
string header = Helper.GetHeader(delim, Entities.FBEnitities.Profile);
string fileName = adlsInputPath + fileNameExtension + "/profile.csv";
adlsClient.DataLakeFileHandler(textWriter, header, fileName);
profile = socialProfile.UserID
+ delim + socialProfile.Profile.First_Name
+ delim + socialProfile.Profile.Last_Name
+ delim + socialProfile.Profile.Name
+ delim + socialProfile.Profile.Age_Range_Min
+ delim + socialProfile.Profile.Age_Range_Max
+ delim + socialProfile.Profile.Birthday
;
textWriter.WriteLine(profile);
textWriter.Flush();
memStreamProfile.Flush();
adlsClient.DataLakeUpdateHandler(fileName, memStreamProfile);
}
}
}
Надеюсь, это поможет.