Skip to content

Commit 91c4c54

Browse files
support DataFeedDetail in createDataFeed
1 parent bb9de3d commit 91c4c54

4 files changed

Lines changed: 101 additions & 15 deletions

File tree

sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/MetricsAdvisorAsyncClient.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2564,6 +2564,28 @@ PagedFlux<DataFeedDetail> listDataFeeds(ListDataFeedOptions listDataFeedOptions,
25642564
return mapPage(this.listDataFeeds(requestOptions), data -> data.toObject(DataFeedDetail.class));
25652565
}
25662566

2567+
/**
2568+
* Create a new data feed.
2569+
*
2570+
* @param dataFeed the data feed.
2571+
* @return the created data feed on successful completion of {@link Mono}.
2572+
*/
2573+
@ServiceMethod(returns = ReturnType.SINGLE)
2574+
public Mono<DataFeedDetail> createDataFeed(DataFeedDetail dataFeed) {
2575+
return createDataFeed(dataFeed, Context.NONE);
2576+
}
2577+
2578+
Mono<DataFeedDetail> createDataFeed(DataFeedDetail dataFeed, Context context) {
2579+
RequestOptions requestOptions = new RequestOptions().setContext(context);
2580+
return this.serviceClient.createDataFeedWithResponseAsync(BinaryData.fromObject(dataFeed), requestOptions)
2581+
.flatMap(response -> {
2582+
String uri = response.getHeaders().getValue("location");
2583+
String id = uri.substring(uri.lastIndexOf("/") + 1);
2584+
return this.getDataFeedByIdWithResponse(id, null);
2585+
})
2586+
.map(response -> response.getValue().toObject(DataFeedDetail.class));
2587+
}
2588+
25672589
private static <T, S> PagedFlux<S> mapPage(PagedFlux<T> pagedFlux, Function<T, S> mapper) {
25682590
Supplier<PageRetriever<String, PagedResponse<S>>> provider = () -> (continuationToken, pageSize) -> {
25692591
Flux<PagedResponse<T>> flux = (continuationToken == null)

sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/MetricsAdvisorClient.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2544,4 +2544,15 @@ public PagedIterable<BinaryData> getEnrichmentStatusByMetric(
25442544
public PagedIterable<DataFeedDetail> listDataFeeds(ListDataFeedOptions options, Context context) {
25452545
return new PagedIterable<>(this.asyncClient.listDataFeeds(options, context));
25462546
}
2547+
2548+
/**
2549+
* Create a new data feed.
2550+
*
2551+
* @param dataFeed the data feed.
2552+
* @return the created data feed.
2553+
*/
2554+
@ServiceMethod(returns = ReturnType.SINGLE)
2555+
public DataFeedDetail createDataFeed(DataFeedDetail dataFeed) {
2556+
return this.asyncClient.createDataFeed(dataFeed, Context.NONE).block();
2557+
}
25472558
}

sdk/metricsadvisor/azure-ai-metricsadvisor/src/test/java/com/azure/ai/metricsadvisor/CreateANewDataFeedTests.java

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,54 @@
44

55
package com.azure.ai.metricsadvisor;
66

7-
import com.azure.core.http.rest.RequestOptions;
8-
import com.azure.core.http.rest.Response;
9-
import com.azure.core.util.BinaryData;
7+
import com.azure.ai.metricsadvisor.models.AuthenticationTypeEnum;
8+
import com.azure.ai.metricsadvisor.models.DataFeedDetail;
9+
import com.azure.ai.metricsadvisor.models.Dimension;
10+
import com.azure.ai.metricsadvisor.models.FillMissingPointType;
11+
import com.azure.ai.metricsadvisor.models.Granularity;
12+
import com.azure.ai.metricsadvisor.models.Metric;
13+
import com.azure.ai.metricsadvisor.models.NeedRollupEnum;
14+
import com.azure.ai.metricsadvisor.models.RollUpMethod;
15+
import com.azure.ai.metricsadvisor.models.SqlServerDataFeed;
16+
import com.azure.ai.metricsadvisor.models.SqlSourceParameter;
17+
import com.azure.ai.metricsadvisor.models.ViewMode;
1018
import org.junit.jupiter.api.Assertions;
1119
import org.junit.jupiter.api.Test;
1220

21+
import java.util.Arrays;
22+
1323
public final class CreateANewDataFeedTests extends MetricsAdvisorClientTestBase {
1424
@Test
1525
public void testCreateANewDataFeedTests() {
16-
BinaryData body =
17-
BinaryData.fromString(
18-
"{\"allUpIdentification\":\"__SUM__\",\"authenticationType\":\"Basic\",\"dataFeedDescription\":\"This is a sample data feed.\",\"dataFeedName\":\"Sample - cost/revenue - city/category\",\"dataSourceParameter\":{\"connectionString\":\"Server=PlaceholderSqlServer,1433;Initial Catalog=PlaceholderDatabase;User ID=PlaceholderUserName;Password=PlaceholderPassword;\",\"query\":\"select * from your_table where timestamp = @StartTime\"},\"dataSourceType\":\"SqlServer\",\"dataStartFrom\":\"2020-01-01T00:00:00.000Z\",\"dimension\":[{\"dimensionDisplayName\":\"category\",\"dimensionName\":\"category\"},{\"dimensionDisplayName\":\"city\",\"dimensionName\":\"city\"}],\"fillMissingPointType\":\"SmartFilling\",\"granularityName\":\"Daily\",\"maxConcurrency\":5,\"metrics\":[{\"metricDisplayName\":\"cost\",\"metricName\":\"cost\"},{\"metricDisplayName\":\"revenue\",\"metricName\":\"revenue\"}],\"minRetryIntervalInSeconds\":3600,\"needRollup\":\"NeedRollup\",\"rollUpMethod\":\"Sum\",\"startOffsetInSeconds\":86400,\"stopRetryAfterInSeconds\":604800,\"timestampColumn\":\"timestamp\",\"viewMode\":\"Private\"}");
19-
RequestOptions requestOptions = new RequestOptions();
20-
Response<Void> response = metricsAdvisorClient.createDataFeedWithResponse(body, requestOptions);
21-
Assertions.assertEquals(201, response.getStatusCode());
22-
Assertions.assertNotNull(response.getHeaders().get("Location").getValue());
26+
DataFeedDetail dataFeed = new SqlServerDataFeed()
27+
.setAllUpIdentification("__SUM__")
28+
.setAuthenticationType(AuthenticationTypeEnum.BASIC)
29+
.setDataFeedDescription("This is a sample data feed.")
30+
.setDataFeedName("Sample - cost/revenue - city/category")
31+
.setDataSourceParameter(new SqlSourceParameter()
32+
.setConnectionString("Server=PlaceholderSqlServer,1433;Initial Catalog=PlaceholderDatabase;User ID=PlaceholderUserName;Password=PlaceholderPassword;")
33+
.setQuery("select * from your_table where timestamp = @StartTime"))
34+
.setDataStartFrom("2020-01-01T00:00:00.000Z")
35+
.setDimension(Arrays.asList(
36+
new Dimension().setDimensionDisplayName("category").setDimensionName("category"),
37+
new Dimension().setDimensionDisplayName("city").setDimensionName("city")
38+
))
39+
.setFillMissingPointType(FillMissingPointType.SMART_FILLING)
40+
.setGranularityName(Granularity.DAILY)
41+
.setMaxConcurrency(5)
42+
.setMetrics(Arrays.asList(
43+
new Metric().setMetricDisplayName("cost").setMetricName("cost"),
44+
new Metric().setMetricDisplayName("revenue").setMetricName("revenue")
45+
))
46+
.setMinRetryIntervalInSeconds(3600L)
47+
.setNeedRollup(NeedRollupEnum.NEED_ROLLUP)
48+
.setRollUpMethod(RollUpMethod.SUM)
49+
.setStartOffsetInSeconds(86400L)
50+
.setStopRetryAfterInSeconds(604800L)
51+
.setTimestampColumn("timestamp")
52+
.setViewMode(ViewMode.PRIVATE);
53+
54+
DataFeedDetail createdDataFeed = metricsAdvisorClient.createDataFeed(dataFeed);
55+
Assertions.assertEquals("Sample - cost/revenue - city/category", createdDataFeed.getDataFeedName());
2356
}
2457
}

sdk/metricsadvisor/azure-ai-metricsadvisor/src/test/resources/session-records/CreateANewDataFeedTests.testCreateANewDataFeedTests.json

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,36 @@
77
"Content-Type" : "application/json"
88
},
99
"Response" : {
10-
"x-request-id" : "0b8b4ebb-ef95-46b4-9cde-8d06fe216686",
10+
"x-request-id" : "076661ec-3955-4f07-8e90-a56e55446310",
1111
"content-length" : "0",
12-
"x-envoy-upstream-service-time" : "1981",
12+
"x-envoy-upstream-service-time" : "1523",
1313
"Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload",
1414
"x-content-type-options" : "nosniff",
15-
"apim-request-id" : "0b8b4ebb-ef95-46b4-9cde-8d06fe216686",
15+
"apim-request-id" : "076661ec-3955-4f07-8e90-a56e55446310",
1616
"retry-after" : "0",
1717
"StatusCode" : "201",
18-
"Date" : "Mon, 14 Mar 2022 04:54:08 GMT",
19-
"Location" : "https://metricsadvisor-weidxu.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/a4c95870-7426-488f-a1b6-5cee2115bd32"
18+
"Date" : "Mon, 14 Mar 2022 06:28:47 GMT",
19+
"Location" : "https://metricsadvisor-weidxu.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9a76030b-0b37-45fb-a238-47ff8ad6417e"
20+
},
21+
"Exception" : null
22+
}, {
23+
"Method" : "GET",
24+
"Uri" : "https://REDACTED.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/9a76030b-0b37-45fb-a238-47ff8ad6417e",
25+
"Headers" : {
26+
"User-Agent" : "azsdk-java-azure-ai-metricsadvisor/1.0.0-beta.1 (17.0.1; Windows 11; 10.0)"
27+
},
28+
"Response" : {
29+
"x-request-id" : "f6dbc852-6bc8-4885-b02e-f741b75e2b02",
30+
"content-length" : "1306",
31+
"x-envoy-upstream-service-time" : "537",
32+
"Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload",
33+
"x-content-type-options" : "nosniff",
34+
"apim-request-id" : "f6dbc852-6bc8-4885-b02e-f741b75e2b02",
35+
"retry-after" : "0",
36+
"StatusCode" : "200",
37+
"Body" : "{\"dataFeedId\":\"9a76030b-0b37-45fb-a238-47ff8ad6417e\",\"dataFeedName\":\"Sample - cost/revenue - city/category\",\"metrics\":[{\"metricId\":\"8248ae1b-ff7a-44b2-81d0-c402eab01a34\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"d32f9d9b-f0bd-479e-920f-1c7effb64f88\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2020-01-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"timestamp\",\"startOffsetInSeconds\":86400,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"allUpIdentification\":\"__SUM__\",\"needRollup\":\"NeedRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"Sum\",\"dataFeedDescription\":\"This is a sample data feed.\",\"stopRetryAfterInSeconds\":604800,\"minRetryIntervalInSeconds\":3600,\"maxConcurrency\":5,\"viewMode\":\"Private\",\"admins\":[\"09cc0fa8-7726-4f19-9216-8e9b0321cfa2\"],\"viewers\":[],\"creator\":\"09cc0fa8-7726-4f19-9216-8e9b0321cfa2\",\"status\":\"Active\",\"createdTime\":\"2022-03-14T06:28:46Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"query\":\"select * from your_table where timestamp = @StartTime\"},\"authenticationType\":\"Basic\"}",
38+
"Date" : "Mon, 14 Mar 2022 06:28:49 GMT",
39+
"Content-Type" : "application/json; charset=utf-8"
2040
},
2141
"Exception" : null
2242
} ],

0 commit comments

Comments
 (0)