Go to file
2020-06-19 20:53:18 -04:00
dynamicquery add eq and not_eq to filter 2020-06-19 15:18:57 -04:00
segment Add query functions, refactor. 2020-05-31 11:59:56 -04:00
.gitignore First commit. 2020-05-26 20:53:05 -04:00
client_test.go add error to dynamic query 2020-06-19 13:38:55 -04:00
client.go First commit. 2020-05-26 20:53:05 -04:00
dataset.go add error to dynamic query 2020-06-19 13:38:55 -04:00
dynamic_query.go add json tags to dynamic query resp 2020-06-19 20:53:18 -04:00
go.mod update package name in go.mod 2020-05-27 12:45:35 -04:00
go.sum add error to dynamic query 2020-06-19 13:38:55 -04:00
partition.go add error to dynamic query 2020-06-19 13:38:55 -04:00
README.md Add query functions, refactor. 2020-05-31 11:59:56 -04:00
refresh_job.go add error to dynamic query 2020-06-19 13:38:55 -04:00
rpc.go add error to dynamic query 2020-06-19 13:38:55 -04:00
segment.go add error to dynamic query 2020-06-19 13:38:55 -04:00

flip-client-go

Go client for accessing Flip RPC Interface

Usage

Initialization

config := Config{APIKey: "<api-key>" BaseURL: "<url-to-the-rpc>"}
client, err := NewClient(config)

Get Segment Members

Evaluate a segment's conditions and retrieve its members.

gte := segment.Gte{
    PartitionID: "sorted_set:ad43bf8e-0f0c-4102-be91-52bc84150af2:current_balances:flipside",
    Value:       10000000,
}
condition := segment.Condition{
    Gte: gte,
}

result, err := client.GetSegmentMembers(condition)

Intersect Members to Segment

Identify the intersection of an array of members to a segment's evaluated conditions.

intersectMembers := make([]string, 0)
intersectMembers = append(intersectMembers, "a090b025a1489aa6c9204d7b85ac77d51b814402d5cbdec27335575bb46e4f20")

gte := segment.Gte{
    PartitionID: "sorted_set:ad43bf8e-0f0c-4102-be91-52bc84150af2:current_balances:flipside",
    Value:       10000000,
}
condition := segment.Condition{
    Gte: gte,
}

result, err := client.IntersectMembersToSegment(intersectMembers, condition)

Get Member Partitions

For a particular entityID and memberID return the partitions that the member belongs to.

entityID := "ad43bf8e-0f0c-4102-be91-52bc84150af2"
memberID := "a0969f676e0274c34fffb4261b59d3de48de0d5845ed9780ac43045cf954ed81"

result, err := client.GetMemberPartitions(entityID, memberID)

ExecuteDynamicQuery

Execute a query.

gte := segment.Gte{
    PartitionID: "sorted_set:ad43bf8e-0f0c-4102-be91-52bc84150af2:current_balances:flipside",
    Value:       10000000,
}

segments := make(map[string]segment.Condition)
segments["large_balance_holder"] = segment.Condition{
    Gte: gte,
}

aggregates := make([]dynamicquery.Aggregate, 0)
aggregates = append(aggregates, dynamicquery.Aggregate{
    Field:             "event_amount",
    Label:             "total_amount",
    DecimalAdjustment: 16,
    Operation:         "sum",
})

groupBy := make([]dynamicquery.GroupBy, 0)
groupBy = append(groupBy, dynamicquery.GroupBy{
    Field:      "block_timestamp",
    Timebucket: "1 day",
    Label:      "metric_date",
})

inSegment := dynamicquery.InSegment{
    Field: "event_to",
    Value: "large_balance_holder",
}
filter := dynamicquery.Filter{
    InSegment: inSegment,
}

query := dynamicquery.Query{
    Table:      "udm_events_aion",
    Schema:     "source",
    Filter:     filter,
    GroupBy:    groupBy,
    Aggregates: aggregates,
    Segments:   segments,
}

debug := false

result, err := client.ExecuteDynamicQuery(query, debug)

Get Datasets

Retreive available datasets and apply optional filters (entityID, ownerID).

// Get the datasets corresponding to entityID and ownerID
entityID := "ad43bf8e-0f0c-4102-be91-52bc84150af2"
ownderID := ""

result, err := client.GetDatasets(entityID, ownerID)

Refresh

Refresh a metric or dataset using the provided filters.


// Incremental Refresh of Metrics
entityID := "ad43bf8e-0f0c-4102-be91-52bc84150af2"

tags := make([]string, 0)
tags = append(tags, "60m")

ra := RefreshArgs{
    EntityID: entityID,
    Stage:    "INCREMENTAL_REFRESH",
    Tags:     tags,
}

result, err := client.Refresh(entityID, ownerID)

// Incremental Refresh of all Datasets

refreshArgs := RefreshArgs{
    Stage:    "DATASET_BUILD",
}

result, err := client.Refresh(refreshArgs)

Get Refresh Job

Get the status of a refresh job.

// Retrieve the status of this job
jobID := "0f5f8149-03b7-4809-ae3b-0b319cf062c0"

result, err := client.GetRefreshJob(jobID)

Test

go test