def test_create_simple_data_feed(self): data_feed_name = self.create_random_name("testfeed") try: data_feed = self.admin_client.create_data_feed( name=data_feed_name, source=SqlServerDataFeedSource( connection_string=self.sql_server_connection_string, query="select * from adsample2 where Timestamp = @StartTime" ), granularity="Daily", schema=["cost", "revenue"], ingestion_settings=datetime.datetime(2019, 10, 1)) self.assertIsNotNone(data_feed.id) self.assertIsNotNone(data_feed.created_time) self.assertIsNotNone(data_feed.name) self.assertEqual(data_feed.source.data_source_type, "SqlServer") self.assertIsNotNone(data_feed.source.query) self.assertEqual(data_feed.granularity.granularity_type, "Daily") self.assertEqual(data_feed.schema.metrics[0].name, "cost") self.assertEqual(data_feed.schema.metrics[1].name, "revenue") self.assertEqual(data_feed.ingestion_settings.ingestion_begin_time, datetime.datetime(2019, 10, 1, tzinfo=tzutc())) finally: self.admin_client.delete_data_feed(data_feed.id)
def test_create_simple_data_feed(self, client, variables): data_feed_name = self.create_random_name("testfeeds") if self.is_live: variables["data_feed_name"] = data_feed_name try: data_feed = client.create_data_feed( variables["data_feed_name"], source=SqlServerDataFeedSource( connection_string=self.sql_server_connection_string, query="select * from adsample2 where Timestamp = @StartTime" ), granularity="Daily", schema=["cost", "revenue"], ingestion_settings=datetime.datetime(2019, 10, 1)) if self.is_live: variables["data_feed_id"] = data_feed.id assert data_feed.id is not None assert data_feed.created_time is not None assert data_feed.name is not None assert data_feed.source.data_source_type == "SqlServer" assert data_feed.source.query is not None assert data_feed.granularity.granularity_type == "Daily" assert data_feed.schema.metrics[0].name == "cost" assert data_feed.schema.metrics[1].name == "revenue" assert data_feed.ingestion_settings.ingestion_begin_time == datetime.datetime( 2019, 10, 1, tzinfo=tzutc()) finally: self.clean_up(client.delete_data_feed, variables) return variables
def test_update_data_feed_with_kwargs(self): data_feed = self._create_data_feed_for_update("update") try: self.admin_client.update_data_feed( data_feed.id, name="update", data_feed_description="updated", timestamp_column="time", ingestion_begin_time=datetime.datetime(2020, 12, 10), ingestion_start_offset=1, data_source_request_concurrency=1, ingestion_retry_delay=1, stop_retry_after=1, rollup_type="AlreadyRollup", rollup_method="Sum", rollup_identification_value="sumrollup", auto_rollup_group_by_column_names=[], fill_type="CustomValue", custom_fill_value=2, access_mode="Public", viewer_emails=["updated"], status="Paused", action_link_template="updated", source=SqlServerDataFeedSource(connection_string="updated", query="get data")) updated = self.admin_client.get_data_feed(data_feed.id) self.assertEqual(updated.name, "update") self.assertEqual(updated.data_feed_description, "updated") self.assertEqual(updated.schema.timestamp_column, "time") self.assertEqual(updated.ingestion_settings.ingestion_begin_time, datetime.datetime(2020, 12, 10, tzinfo=tzutc())) self.assertEqual(updated.ingestion_settings.ingestion_start_offset, 1) self.assertEqual( updated.ingestion_settings.data_source_request_concurrency, 1) self.assertEqual(updated.ingestion_settings.ingestion_retry_delay, 1) self.assertEqual(updated.ingestion_settings.stop_retry_after, 1) self.assertEqual(updated.rollup_settings.rollup_type, "AlreadyRollup") self.assertEqual(updated.rollup_settings.rollup_method, "Sum") self.assertEqual( updated.rollup_settings.rollup_identification_value, "sumrollup") self.assertEqual( updated.missing_data_point_fill_settings.fill_type, "CustomValue") self.assertEqual( updated.missing_data_point_fill_settings.custom_fill_value, 2) self.assertEqual(updated.access_mode, "Public") self.assertEqual(updated.viewer_emails, ["updated"]) self.assertEqual(updated.status, "Paused") self.assertEqual(updated.action_link_template, "updated") self.assertEqual(updated.source.query, "get data") finally: self.admin_client.delete_data_feed(data_feed.id)
async def sample_create_data_feed_async(): # [START create_data_feed_async] from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient from azure.ai.metricsadvisor.models import ( SqlServerDataFeedSource, DataFeedSchema, DataFeedMetric, DataFeedDimension, DataFeedRollupSettings, DataFeedMissingDataPointFillSettings, ) service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") api_key = os.getenv("METRICS_ADVISOR_API_KEY") sql_server_connection_string = os.getenv( "METRICS_ADVISOR_SQL_SERVER_CONNECTION_STRING") query = os.getenv("METRICS_ADVISOR_SQL_SERVER_QUERY") client = MetricsAdvisorAdministrationClient( service_endpoint, MetricsAdvisorKeyCredential(subscription_key, api_key)) async with client: data_feed = await client.create_data_feed( name="My data feed", source=SqlServerDataFeedSource( connection_string=sql_server_connection_string, query=query, ), granularity="Daily", schema=DataFeedSchema(metrics=[ DataFeedMetric(name="cost", display_name="Cost"), DataFeedMetric(name="revenue", display_name="Revenue") ], dimensions=[ DataFeedDimension( name="category", display_name="Category"), DataFeedDimension(name="region", display_name="region") ], timestamp_column="Timestamp"), ingestion_settings=datetime.datetime(2019, 10, 1), data_feed_description="cost/revenue data feed", rollup_settings=DataFeedRollupSettings( rollup_type="AutoRollup", rollup_method="Sum", rollup_identification_value="__CUSTOM_SUM__"), missing_data_point_fill_settings= DataFeedMissingDataPointFillSettings(fill_type="SmartFilling"), access_mode="Private") return data_feed
def test_update_data_feed_with_kwargs(self, client, variables): data_feed = client.get_data_feed(variables["data_feed_id"]) try: update_name = "update" + str(uuid.uuid4()) if self.is_live: variables["data_feed_updated_name"] = update_name client.update_data_feed( data_feed.id, name=variables["data_feed_updated_name"], data_feed_description="updated", timestamp_column="time", ingestion_begin_time=datetime.datetime(2021, 9, 10), ingestion_start_offset=1, data_source_request_concurrency=1, ingestion_retry_delay=120, stop_retry_after=1, rollup_type="AlreadyRollup", rollup_method="Sum", rollup_identification_value="sumrollup", auto_rollup_group_by_column_names=[], fill_type="CustomValue", custom_fill_value=2, access_mode="Public", viewers=["updated"], status="Paused", action_link_template="updated", source=SqlServerDataFeedSource(connection_string="updated", query="get data")) updated = client.get_data_feed(variables["data_feed_id"]) assert updated.name == variables["data_feed_updated_name"] assert updated.data_feed_description == "updated" assert updated.schema.timestamp_column == "time" assert updated.ingestion_settings.ingestion_begin_time == datetime.datetime( 2021, 9, 10, tzinfo=tzutc()) assert updated.ingestion_settings.ingestion_start_offset == 1 assert updated.ingestion_settings.data_source_request_concurrency == 1 assert updated.ingestion_settings.ingestion_retry_delay == 120 assert updated.ingestion_settings.stop_retry_after == 1 assert updated.rollup_settings.rollup_type == "AlreadyRollup" assert updated.rollup_settings.rollup_method == "Sum" assert updated.rollup_settings.rollup_identification_value == "sumrollup" assert updated.missing_data_point_fill_settings.fill_type == "CustomValue" assert updated.missing_data_point_fill_settings.custom_fill_value == 2 assert updated.access_mode == "Public" assert updated.viewers == ["updated"] assert updated.status == "Paused" assert updated.action_link_template == "updated" assert updated.source.query == "get data" finally: self.clean_up(client.delete_data_feed, variables) return variables
def create_data_feed(self, name): name = self.create_random_name(name) if is_live(): self.variables["data_feed_name"] = name data_feed = self.client.create_data_feed( name=self.variables["data_feed_name"], source=SqlServerDataFeedSource( connection_string=os.getenv("METRICS_ADVISOR_SQL_SERVER_CONNECTION_STRING", "metrics_advisor_sql_server_connection_string"), query="select * from adsample2 where Timestamp = @StartTime" ), granularity=DataFeedGranularity( granularity_type="Daily", ), schema=DataFeedSchema( metrics=[ DataFeedMetric(name="cost", description="the cost"), DataFeedMetric(name="revenue", description="the revenue") ], dimensions=[ DataFeedDimension(name="category"), DataFeedDimension(name="region") ], timestamp_column="Timestamp" ), ingestion_settings=DataFeedIngestionSettings( ingestion_begin_time=datetime.datetime(2019, 10, 1), data_source_request_concurrency=0, ingestion_retry_delay=-1, ingestion_start_offset=-1, stop_retry_after=-1, ), admins=["*****@*****.**"], data_feed_description="my first data feed", missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings( fill_type="SmartFilling" ), rollup_settings=DataFeedRollupSettings( rollup_type="NoRollup", rollup_method="None", ), viewers=["viewers"], access_mode="Private", action_link_template="action link template" ) if is_live(): self.variables["data_feed_id"] = data_feed.id self.variables["data_feed_metric_id"] = data_feed.metric_ids['cost'] return data_feed
def _create_data_feed_for_update(self, name): data_feed_name = create_random_name(name) return self.admin_client.create_data_feed( name=data_feed_name, source=SqlServerDataFeedSource( connection_string=self.sql_server_connection_string, query=u"select * from adsample2 where Timestamp = @StartTime" ), granularity=DataFeedGranularity( granularity_type="Daily", ), schema=DataFeedSchema( metrics=[ DataFeedMetric(name="cost", display_name="display cost", description="the cost"), DataFeedMetric(name="revenue", display_name="display revenue", description="the revenue") ], dimensions=[ DataFeedDimension(name="category", display_name="display category"), DataFeedDimension(name="city", display_name="display city") ], timestamp_column="Timestamp" ), ingestion_settings=DataFeedIngestionSettings( ingestion_begin_time=datetime.datetime(2019, 10, 1), data_source_request_concurrency=0, ingestion_retry_delay=-1, ingestion_start_offset=-1, stop_retry_after=-1, ), admin_emails=["*****@*****.**"], data_feed_description="my first data feed", missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings( fill_type="SmartFilling" ), rollup_settings=DataFeedRollupSettings( rollup_type="NoRollup", rollup_method="None", ), viewer_emails=["viewers"], access_mode="Private", action_link_template="action link template" )
def _create_data_feed(self, name): name = create_random_name(name) return self.admin_client.create_data_feed( name=name, source=SqlServerDataFeedSource( connection_string=self.sql_server_connection_string, query="select * from adsample2 where Timestamp = @StartTime"), granularity="Daily", schema=DataFeedSchema( metrics=[ DataFeedMetric(name="cost"), DataFeedMetric(name="revenue") ], dimensions=[ DataFeedDimension(name="category"), DataFeedDimension(name="city") ], ), ingestion_settings="2019-10-01T00:00:00Z", )
def test_create_data_feed_from_sql_server(self): data_feed_name = self.create_random_name("testfeed") try: data_feed = self.admin_client.create_data_feed( name=data_feed_name, source=SqlServerDataFeedSource( connection_string=self.sql_server_connection_string, query= u"select * from adsample2 where Timestamp = @StartTime"), granularity=DataFeedGranularity(granularity_type="Daily", ), schema=DataFeedSchema( metrics=[ DataFeedMetric(name="cost", display_name="display cost", description="the cost"), DataFeedMetric(name="revenue", display_name="display revenue", description="the revenue") ], dimensions=[ DataFeedDimension(name="category", display_name="display category"), DataFeedDimension(name="city", display_name="display city") ], timestamp_column="Timestamp"), ingestion_settings=DataFeedIngestionSettings( ingestion_begin_time=datetime.datetime(2019, 10, 1), data_source_request_concurrency=0, ingestion_retry_delay=-1, ingestion_start_offset=-1, stop_retry_after=-1, ), admin_emails=["*****@*****.**"], data_feed_description="my first data feed", missing_data_point_fill_settings= DataFeedMissingDataPointFillSettings(fill_type="SmartFilling"), rollup_settings=DataFeedRollupSettings( rollup_type="NoRollup", rollup_method="None", ), viewer_emails=["viewers"], access_mode="Private", action_link_template="action link template") self.assertIsNotNone(data_feed.id) self.assertIsNotNone(data_feed.created_time) self.assertIsNotNone(data_feed.name) self.assertEqual(data_feed.source.data_source_type, "SqlServer") self.assertIsNotNone(data_feed.source.query) self.assertEqual(data_feed.granularity.granularity_type, "Daily") self.assertEqual(data_feed.granularity.custom_granularity_value, None) self.assertEqual(data_feed.schema.metrics[0].name, "cost") self.assertEqual(data_feed.schema.metrics[1].name, "revenue") self.assertEqual(data_feed.schema.metrics[0].display_name, "display cost") self.assertEqual(data_feed.schema.metrics[1].display_name, "display revenue") self.assertEqual(data_feed.schema.metrics[0].description, "the cost") self.assertEqual(data_feed.schema.metrics[1].description, "the revenue") self.assertEqual(data_feed.schema.dimensions[0].name, "category") self.assertEqual(data_feed.schema.dimensions[1].name, "city") self.assertEqual(data_feed.schema.dimensions[0].display_name, "display category") self.assertEqual(data_feed.schema.dimensions[1].display_name, "display city") self.assertEqual(data_feed.ingestion_settings.ingestion_begin_time, datetime.datetime(2019, 10, 1, tzinfo=tzutc())) self.assertEqual( data_feed.ingestion_settings.data_source_request_concurrency, 0) self.assertEqual( data_feed.ingestion_settings.ingestion_retry_delay, -1) self.assertEqual( data_feed.ingestion_settings.ingestion_start_offset, -1) self.assertEqual(data_feed.ingestion_settings.stop_retry_after, -1) self.assertIn("*****@*****.**", data_feed.admin_emails) self.assertEqual(data_feed.data_feed_description, "my first data feed") self.assertEqual( data_feed.missing_data_point_fill_settings.fill_type, "SmartFilling") self.assertEqual(data_feed.rollup_settings.rollup_type, "NoRollup") self.assertEqual(data_feed.rollup_settings.rollup_method, "None") self.assertEqual(data_feed.viewer_emails, ["viewers"]) self.assertEqual(data_feed.access_mode, "Private") self.assertEqual(data_feed.action_link_template, "action link template") self.assertEqual(data_feed.status, "Active") self.assertTrue(data_feed.is_admin) self.assertIsNotNone(data_feed.metric_ids) finally: self.admin_client.delete_data_feed(data_feed.id) with self.assertRaises(ResourceNotFoundError): self.admin_client.get_data_feed(data_feed.id)
def test_create_data_feed_from_sql_server(self, client, variables): data_feed_name = self.create_random_name("testfeed") if self.is_live: variables["data_feed_name"] = data_feed_name try: data_feed = client.create_data_feed( variables["data_feed_name"], source=SqlServerDataFeedSource( connection_string=self.sql_server_connection_string, query= u"select * from adsample2 where Timestamp = @StartTime"), granularity=DataFeedGranularity(granularity_type="Daily", ), schema=DataFeedSchema( metrics=[ DataFeedMetric(name="cost", display_name="display cost", description="the cost"), DataFeedMetric(name="revenue", display_name="display revenue", description="the revenue") ], dimensions=[ DataFeedDimension(name="category", display_name="display category"), DataFeedDimension(name="city", display_name="display city") ], timestamp_column="Timestamp"), ingestion_settings=DataFeedIngestionSettings( ingestion_begin_time=datetime.datetime(2019, 10, 1), data_source_request_concurrency=0, ingestion_retry_delay=-1, ingestion_start_offset=-1, stop_retry_after=-1, ), admins=["*****@*****.**"], data_feed_description="my first data feed", missing_data_point_fill_settings= DataFeedMissingDataPointFillSettings(fill_type="SmartFilling"), rollup_settings=DataFeedRollupSettings( rollup_type="NoRollup", rollup_method="None", ), viewers=["viewers"], access_mode="Private", action_link_template="action link template") if self.is_live: variables["data_feed_id"] = data_feed.id assert data_feed.id is not None assert data_feed.created_time is not None assert data_feed.name is not None assert data_feed.source.data_source_type == "SqlServer" assert data_feed.source.query is not None assert data_feed.granularity.granularity_type == "Daily" assert data_feed.granularity.custom_granularity_value is None assert data_feed.schema.metrics[0].name == "cost" assert data_feed.schema.metrics[1].name == "revenue" assert data_feed.schema.metrics[0].display_name == "display cost" assert data_feed.schema.metrics[ 1].display_name == "display revenue" assert data_feed.schema.metrics[0].description == "the cost" assert data_feed.schema.metrics[1].description == "the revenue" assert data_feed.schema.dimensions[0].name == "category" assert data_feed.schema.dimensions[1].name == "city" assert data_feed.schema.dimensions[ 0].display_name == "display category" assert data_feed.schema.dimensions[ 1].display_name == "display city" assert data_feed.ingestion_settings.ingestion_begin_time == datetime.datetime( 2019, 10, 1, tzinfo=tzutc()) assert data_feed.ingestion_settings.data_source_request_concurrency == 0 assert data_feed.ingestion_settings.ingestion_retry_delay == -1 assert data_feed.ingestion_settings.ingestion_start_offset == -1 assert data_feed.ingestion_settings.stop_retry_after == -1 assert "*****@*****.**" in data_feed.admins assert data_feed.data_feed_description == "my first data feed" assert data_feed.missing_data_point_fill_settings.fill_type == "SmartFilling" assert data_feed.rollup_settings.rollup_type == "NoRollup" assert data_feed.rollup_settings.rollup_method == "None" assert data_feed.viewers == ["viewers"] assert data_feed.access_mode == "Private" assert data_feed.action_link_template == "action link template" assert data_feed.status == "Active" assert data_feed.is_admin assert data_feed.metric_ids is not None finally: self.clean_up(client.delete_data_feed, variables) with pytest.raises(ResourceNotFoundError): client.get_data_feed(variables["data_feed_id"]) return variables