Skip to content

Commit d7b7e0c

Browse files
authored
Merge pull request #22 from ARKlab/feature/16572-DeleteCurve
Feature/16572 delete curve
2 parents 297262c + 2767c6f commit d7b7e0c

11 files changed

+701
-20
lines changed

README.md

Lines changed: 141 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,48 @@ Latest Value to propagate the latest value, not older than a certain threshold e
365365
.withFillLatestValue("P5D", "True")
366366
```
367367

368+
### Query written Versions or Products
369+
370+
Using MarketDataService is possible to query all the Versions and all the Products curves which has been written in a MarketData.
371+
372+
```Python
373+
from Artesian.MarketData import MarketDataService
374+
375+
mds = MarketDataService(cfg)
376+
377+
```
378+
379+
To list MarketData curves
380+
381+
```Python
382+
page = 1
383+
pageSize = 100
384+
res = mds.readCurveRange(100042422, page, pageSize, versionFrom="2016-12-20" , versionTo="2019-03-12")
385+
```
386+
387+
### Search the MarketData collection with faceted results
388+
389+
Using MarketDataService is possible to query and search the MarketData collection with faceted results. Supports paging, filtering and free text.
390+
391+
```Python
392+
from Artesian.MarketData import MarketDataService
393+
394+
mds = MarketDataService(cfg)
395+
396+
```
397+
398+
To list MarketData curves
399+
400+
```Python
401+
page = 1
402+
pageSize = 100
403+
searchText = "Riconsegnato_"
404+
filters = {"ProviderName": ["SNAM", "France"]}
405+
sorts=["MarketDataId asc"]
406+
doNotLoadAdditionalInfo=True
407+
res = mds.searchFacet(page, pageSize, searchText, filters, sorts, doNotLoadAdditionalInfo)
408+
```
409+
368410
## GME Public Offer
369411

370412
Artesian support Query over GME Public Offers which comes in a custom and dedicated format.
@@ -745,6 +787,11 @@ auctionRows = MarketData.UpsertData(MarketData.MarketDataIdentifier('PROVIDER',
745787

746788
```
747789

790+
791+
## Delete Data in Artesian
792+
793+
Using the MarketDataService is possible to delete MarketData and its curves.
794+
748795
### Delete MarketData in Artesian
749796

750797
Using the MarketDataService is possible to delete MarketData and its curves.
@@ -761,46 +808,120 @@ mkservice.deleteMarketData(100042422)
761808

762809
```
763810

764-
### Query written Versions or Products
811+
Depending on the Type of the MarketData, the DeletData should be composed as per example below.
765812

766-
Using MarketDataService is possible to query all the Versions and all the Products curves which has been written in a MarketData.
813+
### Delete Data in an Actual Time Series
767814

768815
```Python
769-
from Artesian.MarketData import MarketDataService
816+
from Artesian import ArtesianConfig, Granularity, MarketData
817+
from Artesian.MarketData import AggregationRule
818+
from datetime import datetime
819+
from dateutil import tz
770820

771-
mds = MarketDataService(cfg)
821+
cfg = ArtesianConfg()
772822

823+
mkservice = MarketData.MarketDataService(cfg)
824+
825+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
826+
deleteData = MarketData.DeleteData(
827+
ID=mkdid,
828+
timezone='CET',
829+
rangeStart=datetime(2020, 1, 1, 6),
830+
rangeEnd=datetime(2020, 1, 1, 18),
831+
)
832+
833+
mkdservice.deleteData(deleteData)
773834
```
774835

775-
To list MarketData curves
836+
### Delete Data in an Versioned Time Series
776837

777838
```Python
778-
page = 1
779-
pageSize = 100
780-
res = mds.readCurveRange(100042422, page, pageSize, versionFrom="2016-12-20" , versionTo="2019-03-12")
839+
from Artesian import ArtesianConfig, Granularity, MarketData
840+
from Artesian.MarketData import AggregationRule
841+
from datetime import datetime
842+
from dateutil import tz
843+
844+
cfg = ArtesianConfg()
845+
846+
mkservice = MarketData.MarketDataService(cfg)
847+
848+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
849+
deleteData = MarketData.DeleteData(
850+
ID=mkdid,
851+
timezone='CET',
852+
rangeStart=datetime(2020, 1, 1, 0),
853+
rangeEnd=datetime(2020, 1, 7, 0),
854+
version=datetime(2020, 1, 1, 0)
855+
)
856+
857+
mkdservice.deleteData(deleteData)
781858
```
782859

783-
### Search the MarketData collection with faceted results
860+
### Delte Data in a Market Assessment Time Series
784861

785-
Using MarketDataService is possible to query and search the MarketData collection with faceted results. Supports paging, filtering and free text.
862+
```Python
863+
from Artesian import ArtesianConfig, Granularity, MarketData
864+
from datetime import datetime
865+
from dateutil import tz
866+
867+
cfg = ArtesianConfg()
868+
mkservice = MarketData.MarketDataService(cfg)
869+
870+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
871+
deleteData = MarketData.DeleteData(
872+
ID= mkdid,
873+
timezone='CET',
874+
rangeStart=datetime(2020, 1, 1, 0),
875+
rangeEnd=datetime(2020, 1, 3, 0),
876+
product=["Feb-20"]
877+
)
878+
879+
mkdservice.deleteData(deleteData)
880+
```
881+
882+
### Delte Data in a Bid Ask Time Series
786883

787884
```Python
788-
from Artesian.MarketData import MarketDataService
885+
from Artesian import ArtesianConfig, Granularity, MarketData
886+
from datetime import datetime
887+
from dateutil import tz
789888

790-
mds = MarketDataService(cfg)
889+
cfg = ArtesianConfg()
890+
mkservice = MarketData.MarketDataService(cfg)
891+
892+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
893+
deleteData = MarketData.DeleteData(
894+
ID= mkdid,
895+
timezone='CET',
896+
rangeStart=datetime(2020, 1, 1, 0),
897+
rangeEnd=datetime(2020, 1, 3, 0),
898+
product=["Feb-20"]
899+
)
791900

901+
mkdservice.deleteData(deleteData)
792902
```
793903

794-
To list MarketData curves
904+
### Delete Data in an Auction Time Series
795905

796906
```Python
797-
page = 1
798-
pageSize = 100
799-
searchText = "Riconsegnato_"
800-
filters = {"ProviderName": ["SNAM", "France"]}
801-
sorts=["MarketDataId asc"]
802-
doNotLoadAdditionalInfo=True
803-
res = mds.searchFacet(page, pageSize, searchText, filters, sorts, doNotLoadAdditionalInfo)
907+
from Artesian import ArtesianConfig, Granularity, MarketData
908+
from Artesian.MarketData import AggregationRule
909+
from datetime import datetime
910+
from dateutil import tz
911+
912+
cfg = ArtesianConfg()
913+
914+
mkservice = MarketData.MarketDataService(cfg)
915+
916+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
917+
deleteData = MarketData.DeleteData(
918+
ID=mkdid,
919+
timezone='CET',
920+
rangeStart=datetime(2020, 1, 1, 6),
921+
rangeEnd=datetime(2020, 1, 1, 18),
922+
)
923+
924+
mkdservice.deleteData(deleteData)
804925
```
805926

806927
## Jupyter Support
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
from datetime import datetime
2+
import Artesian
3+
from Artesian import Query
4+
from Artesian.Granularity import Granularity
5+
from Artesian.MarketData._Enum.MarketDataType import MarketDataType
6+
7+
cfg = Artesian.ArtesianConfig("https://arkive.artesian.cloud/tenantName/", "APIKey")
8+
mkdservice = Artesian.MarketData.MarketDataService(cfg)
9+
10+
actual = Artesian.MarketData.MarketDataEntityInput(
11+
"PythonSDK",
12+
"TestActualWriteAndDelete",
13+
Granularity.Hour,
14+
MarketDataType.ActualTimeSerie,
15+
"CET",
16+
tags={"TestSDKPython": ["PythonValue2"]},
17+
)
18+
19+
registered = mkdservice.readMarketDataRegistryByName(
20+
actual.providerName, actual.marketDataName
21+
)
22+
if registered is None:
23+
registered = mkdservice.registerMarketData(actual)
24+
25+
data = Artesian.MarketData.UpsertData(
26+
Artesian.MarketData.MarketDataIdentifier(
27+
actual.providerName, actual.marketDataName
28+
),
29+
"UTC",
30+
rows={datetime(2020, 1, 1, h): 42.0 + h / 24.0 for h in range(0, 23)},
31+
)
32+
33+
mkdservice.upsertData(data)
34+
35+
query = Query.QueryService(cfg)
36+
37+
res = (
38+
query.createActual()
39+
.forMarketData([registered.marketDataId])
40+
.inAbsoluteDateRange("2020-01-01", "2020-01-02")
41+
.inTimeZone("CET")
42+
.inGranularity(Granularity.Hour)
43+
.execute()
44+
)
45+
46+
print(res)
47+
48+
#Delete data between 2020-01-01 06:00 and 2020-01-01 18:00
49+
deleteData = Artesian.MarketData.DeleteData(
50+
ID=Artesian.MarketData.MarketDataIdentifier(registered.providerName, registered.marketDataName),
51+
timezone="CET",
52+
rangeStart=datetime(2020, 1, 1, 6),
53+
rangeEnd=datetime(2020, 1, 1, 18),
54+
)
55+
56+
mkdservice.deleteData(deleteData)
57+
58+
res = (
59+
query.createActual()
60+
.forMarketData([registered.marketDataId])
61+
.inAbsoluteDateRange("2020-01-01", "2020-01-02")
62+
.inTimeZone("CET")
63+
.inGranularity(Granularity.Hour)
64+
.execute()
65+
)
66+
67+
print(res)
68+
69+
#Delete the curve completely
70+
mkdservice.deleteMarketData(registered.marketDataId)
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
from datetime import datetime
2+
import Artesian
3+
from Artesian import Query
4+
from dateutil import tz
5+
from Artesian import MarketData
6+
from Artesian.Granularity import Granularity
7+
8+
cfg = Artesian.ArtesianConfig("https://arkive.artesian.cloud/tenantName/", "APIKey")
9+
mkdservice = Artesian.MarketData.MarketDataService(cfg)
10+
11+
auction = Artesian.MarketData.MarketDataEntityInput(
12+
"PythonSDK",
13+
"TestAuctionWriteAndDelete",
14+
Granularity.Hour,
15+
MarketData.MarketDataType.Auction,
16+
"CET",
17+
tags={"TestSDKPython": ["PythonValue2"]},
18+
)
19+
20+
registered = mkdservice.readMarketDataRegistryByName(
21+
auction.providerName, auction.marketDataName
22+
)
23+
if registered is None:
24+
registered = mkdservice.registerMarketData(auction)
25+
26+
auctionRowData={datetime(2020, 1, 1, h): MarketData.AuctionBids(
27+
datetime(2020, 1, 1),
28+
bid=[
29+
MarketData.AuctionBidValue(11.0, 12.0),
30+
MarketData.AuctionBidValue(13.0, 14.0),
31+
],
32+
offer=[
33+
MarketData.AuctionBidValue(21.0, 22.0),
34+
MarketData.AuctionBidValue(23.0, 24.0),
35+
],
36+
) for h in range(0, 23)}
37+
38+
auctionRows = MarketData.UpsertData(
39+
Artesian.MarketData.MarketDataIdentifier(
40+
auction.providerName, auction.marketDataName
41+
),
42+
"UTC",
43+
auctionRows=auctionRowData,
44+
downloadedAt=datetime(2020, 1, 3).replace(tzinfo=tz.UTC),
45+
)
46+
47+
mkdservice.upsertData(auctionRows)
48+
49+
query = Query.QueryService(cfg)
50+
51+
res = (
52+
query.createAuction()
53+
.forMarketData([registered.marketDataId])
54+
.inAbsoluteDateRange("2020-01-01", "2020-01-02")
55+
.inTimeZone("CET")
56+
.execute()
57+
)
58+
59+
print(res)
60+
61+
#Delete data between 2020-01-01 06:00 and 2020-01-01 18:00
62+
deleteData = Artesian.MarketData.DeleteData(
63+
ID=Artesian.MarketData.MarketDataIdentifier(registered.providerName, registered.marketDataName),
64+
timezone="CET",
65+
rangeStart=datetime(2020, 1, 1, 6),
66+
rangeEnd=datetime(2020, 1, 1, 18),
67+
)
68+
69+
mkdservice.deleteData(deleteData)
70+
71+
res = (
72+
query.createAuction()
73+
.forMarketData([registered.marketDataId])
74+
.inAbsoluteDateRange("2020-01-01", "2020-01-02")
75+
.inTimeZone("CET")
76+
.execute()
77+
)
78+
79+
print(res)
80+
81+
#Delete the curve completely
82+
mkdservice.deleteMarketData(registered.marketDataId)

0 commit comments

Comments
 (0)