public Dataset rowCommunes(OptionsCreationLecture optionsCreationLecture, HistoriqueExecution historique, int anneeCOG, boolean inclureCommunesDelegueesAssociees, Verification... verifications) {
OptionsCreationLecture options = optionsCreationLecture != null ? optionsCreationLecture : optionsCreationLecture();
if (historique != null) {
historique.addReglesValidation(this.session, this.validator);
}
Supplier worker = () -> {
super.setStageDescription(this.messageSource, "row.cog.libelle.long", "row.cog.libelle.court", anneeCOG, inclureCommunesDelegueesAssociees);
LOGGER.info(this.messageSource.getMessage("row.cog.libelle.long", new Object[] {anneeCOG, inclureCommunesDelegueesAssociees}, Locale.getDefault()));
// Lier les codes communes et codes communes parents à leurs siren
Dataset c = this.cogCsvLoader.loadOpenData(anneeCOG, inclureCommunesDelegueesAssociees);
Dataset s = this.datasetSirenCommunaux.rowSirenCommunes(options, new SirenCommunesTriDepartementCommuneSiren(), anneeCOG);
Dataset communes = lierCommunesEtSiren(c,s).union(lierCommunesParentesEtSiren(c,s));
communes = communes.dropDuplicates("codeCommune", "typeCommune", "nomCommune");
communes = populationEtStrateCommunale(communes);
communes = liercontoursCommunes(communes, anneeCOG, verifications);
// Associer à chaque commune son code intercommunalité, si elle en a un (les communes-communautés peuvent ne pas en avoir).
Dataset perimetres = this.datasetPerimetres.rowPerimetres(this.session, anneeCOG, EPCIPerimetreDataset.TriPerimetresEPCI.CODE_COMMUNE_MEMBRE).selectExpr("sirenCommuneMembre", "sirenGroupement as codeEPCI", "nomGroupement as nomEPCI");
Column conditionJoinPerimetres = communes.col("sirenCommune").equalTo(perimetres.col("sirenCommuneMembre"));
verificateur().verifications("jonction communes et périmètres", communes, null, perimetres, conditionJoinPerimetres, verifications, Verification.SHOW_REJETS, Verification.COMPTAGES_ET_STATISTIQUES);
communes = communes.join(perimetres, conditionJoinPerimetres, "left");
// Y associer les départements.
communes = this.datasetDepartements.withDepartement("codeDepartementRetabli", communes, "codeDepartement", null, true, anneeCOG)
.drop("codeRegionDepartement")
.drop("codeDepartementRetabli");
communes.foreachPartition(
partition -> {
partition.forEachRemaining(commune -> this.validator.validerRowCommune(historique, commune));
}
);
return communes;
};
return constitutionStandard(options, worker,
new CacheParqueteur(options, this.session,
"cog-communes", "FILTRE-annee_{0,number,#0}_COMD-COMA_{1}",
new CogTriDepartementCommune(), anneeCOG, inclureCommunesDelegueesAssociees));
}
Я много раз пытался, но так и не нашел способа снять эти скобки.
Например, это не так:
Sonarlint, который я использую с IntelliJ, отправляет мне предупреждение S1602 «Удалите ненужные фигурные скобки вокруг оператора» в этом операторе: [code]communes.foreachPartition( partition -> { partition.forEachRemaining(commune -> this.validator.validerRowCommune(historique, commune)); } ); [/code] (где:
[code]communes[/code] — это org.apache.spark.sql.Dataset
[code]partition[/code] — это итератор
а commune — это строка) В следующем функция: [code]public Dataset rowCommunes(OptionsCreationLecture optionsCreationLecture, HistoriqueExecution historique, int anneeCOG, boolean inclureCommunesDelegueesAssociees, Verification... verifications) { OptionsCreationLecture options = optionsCreationLecture != null ? optionsCreationLecture : optionsCreationLecture();
if (historique != null) { historique.addReglesValidation(this.session, this.validator); }
// Lier les codes communes et codes communes parents à leurs siren Dataset c = this.cogCsvLoader.loadOpenData(anneeCOG, inclureCommunesDelegueesAssociees); Dataset s = this.datasetSirenCommunaux.rowSirenCommunes(options, new SirenCommunesTriDepartementCommuneSiren(), anneeCOG); Dataset communes = lierCommunesEtSiren(c,s).union(lierCommunesParentesEtSiren(c,s));
communes = communes.dropDuplicates("codeCommune", "typeCommune", "nomCommune");
communes = populationEtStrateCommunale(communes); communes = liercontoursCommunes(communes, anneeCOG, verifications);
// Associer à chaque commune son code intercommunalité, si elle en a un (les communes-communautés peuvent ne pas en avoir). Dataset perimetres = this.datasetPerimetres.rowPerimetres(this.session, anneeCOG, EPCIPerimetreDataset.TriPerimetresEPCI.CODE_COMMUNE_MEMBRE).selectExpr("sirenCommuneMembre", "sirenGroupement as codeEPCI", "nomGroupement as nomEPCI"); Column conditionJoinPerimetres = communes.col("sirenCommune").equalTo(perimetres.col("sirenCommuneMembre"));
verificateur().verifications("jonction communes et périmètres", communes, null, perimetres, conditionJoinPerimetres, verifications, Verification.SHOW_REJETS, Verification.COMPTAGES_ET_STATISTIQUES); communes = communes.join(perimetres, conditionJoinPerimetres, "left");
// Y associer les départements. communes = this.datasetDepartements.withDepartement("codeDepartementRetabli", communes, "codeDepartement", null, true, anneeCOG) .drop("codeRegionDepartement") .drop("codeDepartementRetabli");
return constitutionStandard(options, worker, new CacheParqueteur(options, this.session, "cog-communes", "FILTRE-annee_{0,number,#0}_COMD-COMA_{1}", new CogTriDepartementCommune(), anneeCOG, inclureCommunesDelegueesAssociees)); } [/code] Я много раз пытался, но так и не нашел способа снять эти скобки. Например, это не так: [code]communes.foreachPartition( partition -> partition.forEachRemaining(commune -> this.validator.validerRowCommune(historique, commune)); ); [/code] [img]https://i.stack.imgur.com/DlepN.png[/img]