Ecto Changeset - Converting an array of maps into unique records

(Please note: Experience Level: Beginner)

Consider the following array of maps:

[
  %{
    asset: "WAVES",
    last: 1.4893,
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 74735232.7732239
  },
  %{
    asset: "WAVES",
    last: 1.412e-4,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 572716.640758598
  },
  %{
    asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    last: 164.29226837,
    priced_in: "WAVES",
    volume: 279302.620354176
  },
  %{
    asset: "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ",
    last: 1.020817,
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 248376.424546475
  },
  %{
    asset: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    last: 10523.05,
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 166383.544023177
  },
  %{
    asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    last: 0.02316129,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 85209.962997332
  },
  %{
    asset: "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk",
    last: 53.29913471,
    priced_in: "WAVES",
    volume: 76490.1750327318
  },
  %{
    asset: "5b3UGNZXX5srkHUQWnEWEiaVtnNWmg5aLo5uZMdjWupH",
    last: 145.162,
    priced_in: "WAVES",
    volume: 39485.4374444565
  },
  %{
    asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    last: 243.098108,
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 35583.0465869088
  },
  %{
    asset: "5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3",
    last: 0.00870137,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 32585.1711851959
  },
  %{
    asset: "DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J",
    last: 4900.7346,
    priced_in: "4SvrfTcELe39nd28sa64mVEifH5DXpCFemZcu3yWkhqi",
    volume: 22951.6353496176
  },
  %{
    asset: "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk",
    last: 0.00749454,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 22472.334593073
  },
  %{
    asset: "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8",
    last: 0.0536,
    priced_in: "WAVES",
    volume: 19503.5353068709
  },
  %{
    asset: "B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H",
    last: 0.01270297,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 8958.97201995328
  },
  %{
    asset: "WAVES",
    last: 1.84,
    priced_in: "Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck",
    volume: 7247.25186947
  },
  %{
    asset: "B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H",
    last: 91.83538082,
    priced_in: "WAVES",
    volume: 6172.66739928115
  },
  %{
    asset: "EYz8Zvs62D4d7F5ZgXHCWuzuFaZg63FYnfVQrTWQoLSK",
    last: 0.4675,
    priced_in: "WAVES",
    volume: 5612.75080621359
  },
  %{
    asset: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    last: 12723.99,
    priced_in: "Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck",
    volume: 5433.71995448201
  },
  %{
    asset: "EYz8Zvs62D4d7F5ZgXHCWuzuFaZg63FYnfVQrTWQoLSK",
    last: 6.6e-5,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 5037.47404994201
  },
  %{ 
    asset: "7FzrHF1pueRFrPEupz6oiVGTUZqe8epvC7ggWUx8n1bd",
    last: 3550,
    priced_in: "4SvrfTcELe39nd28sa64mVEifH5DXpCFemZcu3yWkhqi",
    volume: 4889.27069661612
  },
  %{
    asset: "975akZBfnMj513U7MZaHKzQrmsEx5aE3wdWKTrHBhbjF",
    last: 0.5,
    priced_in: "WAVES",
    volume: 3745.57000009
  },
  %{
    asset: "7FzrHF1pueRFrPEupz6oiVGTUZqe8epvC7ggWUx8n1bd",
    last: 0.035,
    priced_in: "WAVES",
    volume: 3191.21220700456
  },
  %{
    asset: "BrjUWjndUanm5VsJkbUip8VRYy6LWJePtxya3FNv4TQa",
    last: 0.00700515,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 3059.51874171105
  },
  %{
    asset: "51LxAtwBXapvvTFSbbh4nLyWFxH6x8ocfNvrXxbTChze",
    last: 4.1009e-4,
    priced_in: "WAVES", 
    volume: 2883.99126021319
  },
  %{
    asset: "4uK8i4ThRGbehENwa6MxyLtxAjAo1Rj9fduborGExarC",
    last: 1202.8525,
    priced_in: "4SvrfTcELe39nd28sa64mVEifH5DXpCFemZcu3yWkhqi",
    volume: 2816.40719838872
  },
  %{
    asset: "BrjUWjndUanm5VsJkbUip8VRYy6LWJePtxya3FNv4TQa",
    last: 50.16489948,
    priced_in: "WAVES",
    volume: 2308.50515584566
  },
  %{
    asset: "5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3",
    last: 61.73138582,
    priced_in: "WAVES",
    volume: 2255.32273190212
  },
  %{
    asset: "WAVES",
    last: 1.85,
    priced_in: "Gtb1WRznfchDnTh37ezoDTJ4wcoKaRsKqKjJjy7nm2zU",
    volume: 2204.7448403
  },
  %{
    asset: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    last: 1.23,
    priced_in: "Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck",
    volume: 2167.67691497146
  },
  %{
    asset: "zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy",
    last: 315.09150801,
    priced_in: "WAVES",
    volume: 2085.52167363109
  },
  %{
    asset: "zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy",
    last: 0.04530463,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 1945.89244480385
  },
  %{
    asset: "WAVES",
    last: 1.43,
    priced_in: "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ",
    volume: 1807.19114781
  },
  %{
    asset: "HXtwvrpL8qiYCGC2D6WdiWgqQ5qSyQRQWmo9zDJk32ki",
    last: 0.00359001,
    priced_in: "WAVES",
    volume: 1783.19425273297
  },
  %{
    asset: "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8",
    last: 7.55e-6,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 1782.21778431192
  },
  %{
    asset: "5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3",
    last: 0.37577717,
    priced_in: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    volume: 1768.04411470478
  },
  %{
    asset: "8ofu3VpEaVCFjRqLLqzTMNs5URKUUQMrPp3k6oFmiCc6",
    last: 0.0045,
    priced_in: "WAVES",
    volume: 1639.50683379105
  },
  %{
    asset: "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8",
    last: 0.094999,
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 1632.298383983
  },
  %{
    asset: "Gtb1WRznfchDnTh37ezoDTJ4wcoKaRsKqKjJjy7nm2zU",
    last: 0.98,
    priced_in: "Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck",
    volume: 1298.0087923264
  },
  %{
    asset: "975akZBfnMj513U7MZaHKzQrmsEx5aE3wdWKTrHBhbjF",
    last: 0.51, 
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 1261.33435127935
  },
  %{
    asset: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    last: 12556.26,
    priced_in: "Gtb1WRznfchDnTh37ezoDTJ4wcoKaRsKqKjJjy7nm2zU",
    volume: 1162.69567848663
  },
  %{
    asset: "8Yw4QmskrQauQeNjgh2fTQ4swmkNm85GTQzdHEf6QdUU",
    last: 0.00200061,
    priced_in: "WAVES",
    volume: 1139.75453198208
  },
  %{
    asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    last: 294.42,
    priced_in: "Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck",
    volume: 1073.73825918871
  },
  %{
    asset: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    last: 10199,
    priced_in: "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ",
    volume: 1055.96581088938
  },
  %{
    asset: "45aH8AsLe1CgcSmPVek7J3XoZW7n3fnW5Xtw4ohRD2yd",
    last: 1.9e-7,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 1008.37403789533
  },
  %{
    asset: "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk",
    last: 0.32307016,
    priced_in: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    volume: 963.487312728538
  },
  %{
    asset: "HGgqgWHy4PSv5k9L5UzwAXnkUofJKNUHGngbYBjodNn7",
    last: 1,
    priced_in: "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ",
    volume: 822.941852736017
  },
  %{
    asset: "EYz8Zvs62D4d7F5ZgXHCWuzuFaZg63FYnfVQrTWQoLSK",
    last: 0.668,
    priced_in: "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ",
    volume: 755.203790740463
  },
  %{
    asset: "DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J",
    last: 0.051,
    priced_in: "WAVES",
    volume: 734.1406147895
  },
  %{
    asset: "3SdrmU1GGZRiZz12MrMcfUz4JksTzvcU25cLFXpZy1qz",
    last: 0.391,
    priced_in: "WAVES",
    volume: 656.438456479
  },
  %{
    asset: "5dJj4Hn9t2Ve3tRpNGirUHy4yBK6qdJRAJYV21yPPuGz",
    last: 5.051e-5,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS", 
    volume: 616.985959072824
  },
  %{
    asset: "5ZPuAVxAwYvptbCgSVKdTzeud9dhbZ7vvxHVnZUoxf4h",
    last: 1.699999,
    priced_in: "WAVES",
    volume: 544.763158775664
  },
  %{
    asset: "62LyMjcr2DtiyF5yVXFhoQ2q414VPPJXjsNYp72SuDCH",
    last: 227.39902399,
    priced_in: "WAVES",
    volume: 541.761307428749
  }
]

I’d like to quickly update a database with each distinct map as their own unique record. Is this a job for Enum.map or is there some ready-to-use library designed to do this faster?

Hi @Maxximiliann how beginner are we talking? If you’re already comfortable with inserting records into the database I’d look into https://hexdocs.pm/ecto/Ecto.Repo.html#c:insert_all/3 for a high performance bulk update.

1 Like

Define “distinct map”? Are you expecting duplicates in your input data?

Hi @benwilson512

Well, to answer your question, I’ve only been at this for a few months and the last time I did any sort of coding was decades ago in junior high so I definitely still feel like a noob :slight_smile:

%{
    asset: "WAVES",
    last: 1.4893,
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 74735232.7732239
  },
  %{
    asset: "WAVES",
    last: 1.412e-4,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 572716.640758598
  },
  %{
    asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    last: 164.29226837,
    priced_in: "WAVES",
    volume: 279302.620354176
  }%

Would be recorded as:

Makes sense? (Oh, and no duplication is anticipated.)

Well welcome back to the coding world! I’d definitely do an intro book like Programming Ecto or Programming Phoenix to get some basics under your belt WRT database access in Elixir. Trying to guide you through the basics of setting up database access here isn’t going to make sense, you should reach for some first class guides for getting that setup.

1 Like

It’s not more than applying Repo.insert_all with the right numbers of parameters, and You showed already half of them :slight_smile:

trades = %Ticker[
  %{
    asset: "WAVES",
    last: 1.4893,
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 74735232.7732239
  },
  %{
    asset: "WAVES",
    last: 1.412e-4,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 572716.640758598
  },
  %{
    asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    last: 164.29226837,
    priced_in: "WAVES",
    volume: 279302.620354176
  },
  %{
    asset: "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ",
    last: 1.020817,
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 248376.424546475
  },
  %{
    asset: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    last: 10523.05,
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 166383.544023177
  },
  %{
    asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    last: 0.02316129,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 85209.962997332
  },
  %{
    asset: "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk",
    last: 53.29913471,
    priced_in: "WAVES",
    volume: 76490.1750327318
  },
  %{
    asset: "5b3UGNZXX5srkHUQWnEWEiaVtnNWmg5aLo5uZMdjWupH",
    last: 145.162,
    priced_in: "WAVES",
    volume: 39485.4374444565
  },
  %{
    asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    last: 243.098108,
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 35583.0465869088
  },
  %{
    asset: "5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3",
    last: 0.00870137,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 32585.1711851959
  },
  %{
    asset: "DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J",
    last: 4900.7346,
    priced_in: "4SvrfTcELe39nd28sa64mVEifH5DXpCFemZcu3yWkhqi",
    volume: 22951.6353496176
  },
  %{
    asset: "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk",
    last: 0.00749454,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 22472.334593073
  },
  %{
    asset: "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8",
    last: 0.0536,
    priced_in: "WAVES",
    volume: 19503.5353068709
  },
  %{
    asset: "B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H",
    last: 0.01270297,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 8958.97201995328
  },
  %{
    asset: "WAVES",
    last: 1.84,
    priced_in: "Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck",
    volume: 7247.25186947
  },
  %{
    asset: "B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H",
    last: 91.83538082,
    priced_in: "WAVES",
    volume: 6172.66739928115
  },
  %{
    asset: "EYz8Zvs62D4d7F5ZgXHCWuzuFaZg63FYnfVQrTWQoLSK",
    last: 0.4675,
    priced_in: "WAVES",
    volume: 5612.75080621359
  },
  %{
    asset: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    last: 12723.99,
    priced_in: "Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck",
    volume: 5433.71995448201
  },
  %{
    asset: "EYz8Zvs62D4d7F5ZgXHCWuzuFaZg63FYnfVQrTWQoLSK",
    last: 6.6e-5,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 5037.47404994201
  },
  %{ 
    asset: "7FzrHF1pueRFrPEupz6oiVGTUZqe8epvC7ggWUx8n1bd",
    last: 3550,
    priced_in: "4SvrfTcELe39nd28sa64mVEifH5DXpCFemZcu3yWkhqi",
    volume: 4889.27069661612
  },
  %{
    asset: "975akZBfnMj513U7MZaHKzQrmsEx5aE3wdWKTrHBhbjF",
    last: 0.5,
    priced_in: "WAVES",
    volume: 3745.57000009
  },
  %{
    asset: "7FzrHF1pueRFrPEupz6oiVGTUZqe8epvC7ggWUx8n1bd",
    last: 0.035,
    priced_in: "WAVES",
    volume: 3191.21220700456
  },
  %{
    asset: "BrjUWjndUanm5VsJkbUip8VRYy6LWJePtxya3FNv4TQa",
    last: 0.00700515,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 3059.51874171105
  },
  %{
    asset: "51LxAtwBXapvvTFSbbh4nLyWFxH6x8ocfNvrXxbTChze",
    last: 4.1009e-4,
    priced_in: "WAVES", 
    volume: 2883.99126021319
  },
  %{
    asset: "4uK8i4ThRGbehENwa6MxyLtxAjAo1Rj9fduborGExarC",
    last: 1202.8525,
    priced_in: "4SvrfTcELe39nd28sa64mVEifH5DXpCFemZcu3yWkhqi",
    volume: 2816.40719838872
  },
  %{
    asset: "BrjUWjndUanm5VsJkbUip8VRYy6LWJePtxya3FNv4TQa",
    last: 50.16489948,
    priced_in: "WAVES",
    volume: 2308.50515584566
  },
  %{
    asset: "5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3",
    last: 61.73138582,
    priced_in: "WAVES",
    volume: 2255.32273190212
  },
  %{
    asset: "WAVES",
    last: 1.85,
    priced_in: "Gtb1WRznfchDnTh37ezoDTJ4wcoKaRsKqKjJjy7nm2zU",
    volume: 2204.7448403
  },
  %{
    asset: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    last: 1.23,
    priced_in: "Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck",
    volume: 2167.67691497146
  },
  %{
    asset: "zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy",
    last: 315.09150801,
    priced_in: "WAVES",
    volume: 2085.52167363109
  },
  %{
    asset: "zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy",
    last: 0.04530463,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 1945.89244480385
  },
  %{
    asset: "WAVES",
    last: 1.43,
    priced_in: "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ",
    volume: 1807.19114781
  },
  %{
    asset: "HXtwvrpL8qiYCGC2D6WdiWgqQ5qSyQRQWmo9zDJk32ki",
    last: 0.00359001,
    priced_in: "WAVES",
    volume: 1783.19425273297
  },
  %{
    asset: "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8",
    last: 7.55e-6,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 1782.21778431192
  },
  %{
    asset: "5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3",
    last: 0.37577717,
    priced_in: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    volume: 1768.04411470478
  },
  %{
    asset: "8ofu3VpEaVCFjRqLLqzTMNs5URKUUQMrPp3k6oFmiCc6",
    last: 0.0045,
    priced_in: "WAVES",
    volume: 1639.50683379105
  },
  %{
    asset: "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8",
    last: 0.094999,
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 1632.298383983
  },
  %{
    asset: "Gtb1WRznfchDnTh37ezoDTJ4wcoKaRsKqKjJjy7nm2zU",
    last: 0.98,
    priced_in: "Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck",
    volume: 1298.0087923264
  },
  %{
    asset: "975akZBfnMj513U7MZaHKzQrmsEx5aE3wdWKTrHBhbjF",
    last: 0.51, 
    priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
    volume: 1261.33435127935
  },
  %{
    asset: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    last: 12556.26,
    priced_in: "Gtb1WRznfchDnTh37ezoDTJ4wcoKaRsKqKjJjy7nm2zU",
    volume: 1162.69567848663
  },
  %{
    asset: "8Yw4QmskrQauQeNjgh2fTQ4swmkNm85GTQzdHEf6QdUU",
    last: 0.00200061,
    priced_in: "WAVES",
    volume: 1139.75453198208
  },
  %{
    asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    last: 294.42,
    priced_in: "Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck",
    volume: 1073.73825918871
  },
  %{
    asset: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    last: 10199,
    priced_in: "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ",
    volume: 1055.96581088938
  },
  %{
    asset: "45aH8AsLe1CgcSmPVek7J3XoZW7n3fnW5Xtw4ohRD2yd",
    last: 1.9e-7,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
    volume: 1008.37403789533
  },
  %{
    asset: "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk",
    last: 0.32307016,
    priced_in: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
    volume: 963.487312728538
  },
  %{
    asset: "HGgqgWHy4PSv5k9L5UzwAXnkUofJKNUHGngbYBjodNn7",
    last: 1,
    priced_in: "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ",
    volume: 822.941852736017
  },
  %{
    asset: "EYz8Zvs62D4d7F5ZgXHCWuzuFaZg63FYnfVQrTWQoLSK",
    last: 0.668,
    priced_in: "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ",
    volume: 755.203790740463
  },
  %{
    asset: "DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J",
    last: 0.051,
    priced_in: "WAVES",
    volume: 734.1406147895
  },
  %{
    asset: "3SdrmU1GGZRiZz12MrMcfUz4JksTzvcU25cLFXpZy1qz",
    last: 0.391,
    priced_in: "WAVES",
    volume: 656.438456479
  },
  %{
    asset: "5dJj4Hn9t2Ve3tRpNGirUHy4yBK6qdJRAJYV21yPPuGz",
    last: 5.051e-5,
    priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS", 
    volume: 616.985959072824
  },
  %{
    asset: "5ZPuAVxAwYvptbCgSVKdTzeud9dhbZ7vvxHVnZUoxf4h",
    last: 1.699999,
    priced_in: "WAVES",
    volume: 544.763158775664
  },
  %{
    asset: "62LyMjcr2DtiyF5yVXFhoQ2q414VPPJXjsNYp72SuDCH",
    last: 227.39902399,
    priced_in: "WAVES",
    volume: 541.761307428749
  }
]


Repo.insert(trades, on_conflict: {:replace, [:last]}, conflict_target: :asset, :priced_in)

Is this what you mean?

Look at Repo.insert_all instead. :slight_smile:

Repo.insert will only insert one at a time, which is quite slow for a lot of records.

1 Like